跳至内容
菜单
此问题已终结
2 回复
11072 查看

I add some fields in register payment

model:account.payment

When the validate button is pressed then it goes to account.invoice.
there is a text field payment widget.

when clicked the (i) symbolled tab then the information like memo,amount,date,payment method are displayed.

Question

My question is how to add custom fields cheque date,cheque no and bank in information tab?
Notes

when the validate button is clicked the post function is executed




形象
丢弃
最佳答案

Hello,

That is shown when a field is defined as a payment widget(as widget="payment")

Below I've posted the compute function for the paymets_info field

@api.one
@api.depends('payment_move_line_ids.amount_residual')
def _get_payment_info_JSON(self):
self.payments_widget = json.dumps(False)
if self.payment_move_line_ids:
info = {'title': _('Less Payment'), 'outstanding': False, 'content': []}
currency_id = self.currency_id
for payment in self.payment_move_line_ids:
payment_currency_id = False
if self.type in ('out_invoice', 'in_refund'):
amount = sum([p.amount for p in payment.matched_debit_ids if p.debit_move_id in self.move_id.line_ids])
amount_currency = sum([p.amount_currency for p in payment.matched_debit_ids if p.debit_move_id in self.move_id.line_ids])
if payment.matched_debit_ids:
payment_currency_id = all([p.currency_id == payment.matched_debit_ids[0].currency_id for p in payment.matched_debit_ids]) and payment.matched_debit_ids[0].currency_id or False
elif self.type in ('in_invoice', 'out_refund'):
amount = sum([p.amount for p in payment.matched_credit_ids if p.credit_move_id in self.move_id.line_ids])
amount_currency = sum([p.amount_currency for p in payment.matched_credit_ids if p.credit_move_id in self.move_id.line_ids])
if payment.matched_credit_ids:
payment_currency_id = all([p.currency_id == payment.matched_credit_ids[0].currency_id for p in payment.matched_credit_ids]) and payment.matched_credit_ids[0].currency_id or False
# get the payment value in invoice currency
if payment_currency_id and payment_currency_id == self.currency_id:
amount_to_show = amount_currency
else:
amount_to_show = payment.company_id.currency_id.with_context(date=payment.date).compute(amount, self.currency_id)
if float_is_zero(amount_to_show, precision_rounding=self.currency_id.rounding):
continue
payment_ref = payment.move_id.name
if payment.move_id.ref:
payment_ref += ' (' + payment.move_id.ref + ')'
info['content'].append({
'name': payment.name,
'journal_name': payment.journal_id.name,
'amount': amount_to_show,
'currency': currency_id.symbol,
'digits': [69, currency_id.decimal_places],
'position': currency_id.position,
'date': payment.date,
'payment_id': payment.id,
'move_id': payment.move_id.id,
'ref': payment_ref,
})
self.payments_widget = json.dumps(info)

You can add any field you want to it by changing real code or inheriting it and add value to content

Also you should change account_payment_widget.js and its corresponding qwebview(account_payment.xml)


形象
丢弃
编写者

Thanks amal .Can you explain this?

编写者 最佳答案

Thanks Amal,

I have some queries.

in my custom module, i added this function add field in contest like this

'chq_no': payment.chq_no,

I also add this field in account.move.line and account.payment but the chqno value not there. I print the contest but there chq_no returns False.What is the problem is that.?

2)I added the xml and js files and from account module and added it to my custom module.

    added changes.can you js file called.?

形象
丢弃

If you correctly pass values from js to the qweb then it should work.

You can try like adding <span>test</span> in your original qweb code to see the result

编写者

'chq_no':info.content[v].chq_no,

i add this line js. but not get the chq_no.

编写者

this i added in account_payment.xml.

<tr>

<td><strong>Cheque No: </strong></td>

<td style="text-align:right;"><t t-esc="chq_no"/></td>

</tr>

is anything wrong in my code?

编写者

i use ur above the test is in info tab.

i think the problem is in python function.

i print the contest but the chq_no returns False.

Can you explain what is the problem in that?

编写者

amal. I added the chq_no field account.payment in xml.

in python i also added that fields in account.payment and account.move.line.

but in _get_payment_info_JSON function we get the ids of account.move.line.

That's why chq_no is False.

What to make to get the value of chq_no in contest??

Add your value to info['content'] in py.

Then pass it through js to your qweb.

If you check account_payment_widget.js you can see how it is passed

编写者

thanks amal

相关帖文 回复 查看 活动
0
12月 18
1782
0
7月 18
4711
0
12月 21
2041
29
12月 20
17466
1
4月 19
1269