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.70€ 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 !python {model: account.invoice}: |
81 invoice = self.browse(cr, uid, ref("invoice2"))
82 log(sum(x.credit for x in invoice.move_id.line_id))
83 assert (sum(x.credit for x in invoice.move_id.line_id) - 163.968) < 0.000001, "Pas bon !!!"
85 !assert {model: account.invoice, id: invoice2}:
87 - abs(sum(x.credit for x in move_id.line_id) - 163.968) < 0.000001
89 !assert {model: account.invoice, id: invoice2}:
91 - abs(sum(x.credit - x.debit for x in move_id.line_id)) < 0.000001