ICT template
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
import datetime
|
||||
from contextlib import nullcontext
|
||||
from decimal import Decimal
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import ANY, Mock, patch
|
||||
from xml.etree import ElementTree
|
||||
|
||||
@@ -5210,6 +5211,68 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
'amount': None,
|
||||
}])
|
||||
|
||||
def test_sale_commission_invoice_uses_linked_perqt_fee_rate(self):
|
||||
'sale commission invoice shows linked fee price per sale quantity'
|
||||
Invoice = Pool().get('account.invoice')
|
||||
sale = SimpleNamespace(
|
||||
currency=SimpleNamespace(rec_name='USD'),
|
||||
untaxed_amount=Decimal('7960'),
|
||||
total_amount=Decimal('7960'))
|
||||
sale_line = SimpleNamespace(sale=sale)
|
||||
lot = SimpleNamespace(id=1, sale_line=sale_line, line=None)
|
||||
fee = SimpleNamespace(
|
||||
mode='perqt',
|
||||
price=Decimal('0.02'),
|
||||
enable_linked_currency=True,
|
||||
linked_price=Decimal('2'),
|
||||
linked_currency=SimpleNamespace(rec_name='USC'),
|
||||
linked_unit=SimpleNamespace(rec_name='Kilogram'),
|
||||
currency=SimpleNamespace(rec_name='USD'),
|
||||
unit=SimpleNamespace(rec_name='MT'),
|
||||
sale_line=sale_line,
|
||||
line=None,
|
||||
lots=[lot],
|
||||
_get_effective_fee_lots=lambda: [lot])
|
||||
invoice = Invoice()
|
||||
invoice.currency = SimpleNamespace(rec_name='USD')
|
||||
invoice.lines = [
|
||||
SimpleNamespace(type='line', fee=fee, lot=lot, origin=None)]
|
||||
|
||||
self.assertEqual(
|
||||
invoice.report_sale_commission_rate_line,
|
||||
'2 USC/Kilogram')
|
||||
self.assertEqual(invoice.report_sale_commission_secondary_rate_line, '')
|
||||
|
||||
def test_purchase_commission_invoice_uses_purchase_amount_for_percent_fee(self):
|
||||
'purchase commission invoice shows percent fee on purchase amount'
|
||||
Invoice = Pool().get('account.invoice')
|
||||
purchase = SimpleNamespace(
|
||||
currency=SimpleNamespace(rec_name='USD'),
|
||||
untaxed_amount=Decimal('7960'),
|
||||
total_amount=Decimal('7960'))
|
||||
purchase_line = SimpleNamespace(purchase=purchase)
|
||||
lot = SimpleNamespace(id=1, line=purchase_line, sale_line=None)
|
||||
fee = SimpleNamespace(
|
||||
mode='pprice',
|
||||
price=Decimal('1.5'),
|
||||
enable_linked_currency=False,
|
||||
currency=SimpleNamespace(rec_name='USD'),
|
||||
unit=SimpleNamespace(rec_name='MT'),
|
||||
sale_line=None,
|
||||
line=purchase_line,
|
||||
lots=[lot],
|
||||
_get_effective_fee_lots=lambda: [lot])
|
||||
invoice = Invoice()
|
||||
invoice.currency = SimpleNamespace(rec_name='USD')
|
||||
invoice.lines = [
|
||||
SimpleNamespace(type='line', fee=fee, lot=lot, origin=None)]
|
||||
|
||||
self.assertEqual(
|
||||
invoice.report_purchase_commission_rate_line,
|
||||
'1.5 % on purchase amount 7960.00 USD')
|
||||
self.assertEqual(
|
||||
invoice.report_purchase_commission_secondary_rate_line, '')
|
||||
|
||||
def test_fee_delete_detects_generated_ordered_purchase(self):
|
||||
'ordered fee deletion targets only its generated service purchase'
|
||||
Fee = Pool().get('fee.fee')
|
||||
|
||||
Reference in New Issue
Block a user