2013-02-16 3 views
1

OpenERP HR 비용 모듈에서 우리는 두 개의 필드를 추가했습니다. 하나는 회사 (x_adv) 및 due amount (x_dueamt)에서 가져온 것입니다. 요구 사항은 만기 금액을 계산합니다 (total_amount - x_adv). 어디에서 코드를 작성해야합니까?OpenERP 7.0 HR 비용 모듈 계산 금액 계산

예를 들어, 직원 X가 프로젝트 X를 위해 회사에서 전진했습니다. 500 INR 하지만 총 비용은 1000 INR입니다. 이제 우리는 만기 금액 500 INR 을 자동으로 계산하려고합니다 (x_dueamt는 읽기 전용 임).

우리를 제발 도와주세요 .... 미리 감사드립니다 ...

답변

0

두 가지 방법으로이를 달성 할 수

(1)가있을 것입니다 그래서 때 advance taken from company & Total expense에 방법을 on_change 쓸 수 있습니다 이 두 필드의 변경 사항은 금액을 계산하고 due amount 필드에 대해 계산 한 값을 반환 할 수 있습니다. 여기

x_adv & total_expense의 변화가있을 때 onchange_amount 기능에 대한 당신의 평 파일 쓰기에서
<field name="x_adv" on_change="onchange_amount(x_adv,total_expense)"/> 
<field name="total_expense" on_change="onchange_amount(x_adv,total_expense)"/> 
<field name="due_amount"/> 

는,이 함수가 호출 될 것이다, 예입니다.

def onchange_amount(self, cr, uid, ids, x_adv, total_amount, context={}): 
    // Your calculation 
    value = {'due_amount': calculate_value} 
    return {'value': value} 

이 잘 작동하지만, 결과 필드 (여기 due_amount) 경우 약간의 문제가있을 것이다는 또한 데이터베이스 클라이언트 &에 표시되지 않습니다 읽기 전용입니다. 따라서 문제를 해결할 두 번째 방법이 있습니다.

(2) due_amount를 필드 기능으로 만드십시오.

def _calculate_due_amount(self, cr, uid, ids, field_name, arg, context=None): 
    res = {} 
    if context is None: 
     context = {} 
    for current_ids in self.browse(cr, uid, ids, context=context)[0] 
     // Your calculation 
     res[current_ids] = calculated_amount 
    return res 



'due_amount': fields.function(_calculate_due_amount, string='Due Amount', help="Due amount of employee.", 
           store={ 
            'your_object': (lambda self, cr, uid, ids, c={}: ids, ['x_adv', 'total_expense'], 10) 
            }), 

이 문서가 문제를 해결하는 가장 적합한 방법 중 하나입니다

. 함수 필드에 의해 데이터베이스에 값을 저장할 수 & 또한 읽기 전용으로 필드를 만들 수 있습니다. 희망이 당신을 위해 잘 작동합니다.