37 lines
1.9 KiB
Python
37 lines
1.9 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
from odoo.addons.sale_stock.tests.test_anglo_saxon_valuation_reconciliation import TestValuationReconciliationCommon
|
||
|
from odoo.tests import tagged
|
||
|
|
||
|
@tagged('post_install', '-at_install')
|
||
|
class TestAngloSaxonAccounting(TestValuationReconciliationCommon):
|
||
|
|
||
|
def test_cogs_should_use_price_from_the_right_company(self):
|
||
|
"""
|
||
|
Reproduce the flow of creating an invoice from a sale order with company A
|
||
|
and posting the invoice with both companies selected and company B as the main.
|
||
|
"""
|
||
|
company_a_data = self.company_data
|
||
|
company_b_data = self.company_data_2
|
||
|
companies_with_b_first = company_b_data['company'] + company_a_data['company']
|
||
|
product = self.test_product_delivery
|
||
|
|
||
|
# set different cost price for the same product in the 2 companies
|
||
|
company_a_standard_price = 20.0
|
||
|
product.with_company(company_a_data['company']).standard_price = company_a_standard_price
|
||
|
company_b_standard_price = 10.0
|
||
|
product.with_company(company_b_data['company']).standard_price = company_b_standard_price
|
||
|
|
||
|
# create sale order with company A in draft (by default, self.env.user.company_id is company A)
|
||
|
company_a_order = self._create_sale(product, '2021-01-01')
|
||
|
company_a_invoice = self._create_invoice_for_so(company_a_order, product, '2021-01-10')
|
||
|
|
||
|
# Post the invoice from company A with company B
|
||
|
company_a_invoice.with_context(allowed_company_ids=companies_with_b_first.ids).action_post()
|
||
|
|
||
|
# check cost used for anglo_saxon_line is from company A
|
||
|
anglo_saxon_lines = company_a_invoice.line_ids.filtered(lambda l: l.display_type == 'cogs')
|
||
|
self.assertRecordValues(anglo_saxon_lines, [
|
||
|
{'debit': 0.0, 'credit': company_a_standard_price},
|
||
|
{'debit': company_a_standard_price, 'credit': 0.0},
|
||
|
])
|