3
In order to check that the accounting entries and tax engine works
4
efficiently with all kind of price accuracies we run this test scenario.
6
Given the price accuracy for the account module is configured with two
9
!record {model: decimal.precision, id: product.decimal_account}:
12
And we have a tax defined
14
!record {model: account.tax, id: tax196}:
17
account_collected_id: account.a_recv
18
account_paid_id: account.a_recv
20
And we define an invoice with one invoice line with a tax of *tax
22
!record {model: account.invoice, id: invoice1}: &invoice
25
partner_id: base.res_partner_2
26
address_invoice_id: base.res_partner_address_1
27
account_id: account.a_recv
28
date_invoice: !eval time.strftime('%Y-%m-%d')
30
- product_id: product.product_product_pc1
32
account_id: account.a_sale
33
uos_id: product.product_uom_unit
34
price_unit: &price 12.34
39
When I press on the CREATE button on the invoice to open it.
41
!python {model: account.invoice}: |
42
self.action_move_create(cr, uid, [ref("invoice1")])
44
Then I should see an account entry linked to this invoice.
46
!assert {model: account.invoice, id: invoice1}:
50
# This is not working, find a way to do that in YAML, *qty is not
51
# interpreted because it's not a node.
52
And this account entry must have a credit equals to 163.97€ which is
53
equal to *qty x *price x (1 + *tax)
55
!assert {model: account.invoice, id: invoice1}:
57
- abs(sum(x.credit for x in move_id.line_id) - 163.97) < 0.000001
59
And this account entry must have a credit equals to the debit
61
!assert {model: account.invoice, id: invoice1}:
63
- abs(sum(x.credit - x.debit for x in move_id.line_id)) < 0.000001
65
Then, I change the precision of numbers to 3 digits.
67
!record {model: decimal.precision, id: product.decimal_account}:
70
And I create another invoice with the same content.
72
!record {model: account.invoice, id: invoice2}:
75
When I press on the CREATE button on the invoice to open it.
77
!python {model: account.invoice}: |
78
self.action_move_create(cr, uid, [ref("invoice2")])
80
Then this account entry must have a credit equals to the debit
82
!assert {model: account.invoice, id: invoice2}:
84
- abs(sum(x.credit - x.debit for x in move_id.line_id)) < 0.000001
86
And this account entry must have a credit equals to 163.968€ which is
87
equal to *qty x *price x (1 + *tax)
89
!python {model: account.invoice}: |
91
invoice = self.browse(cr, uid, ref(xid))
92
sum_of_credits = sum(x.credit for x in invoice.move_id.line_id)
93
log("The sum of credits for %s is %f", xid, sum_of_credits)
94
expected_value = 163.968
95
assert (sum_of_credits - expected_value) < 0.000001, "Wrong sum of credits: %f <> %f" % (sum_of_credits, expected_value)