diff --git a/modules/account_invoice/invoice.xml b/modules/account_invoice/invoice.xml
index 0ae609d..7cbd47c 100755
--- a/modules/account_invoice/invoice.xml
+++ b/modules/account_invoice/invoice.xml
@@ -339,6 +339,32 @@ this repository contains the full copyright notices and license terms. -->
+
+ Commission invoice Sale
+ account.invoice
+ account.invoice
+ account_invoice/sale_commission_ict.fodt
+
+
+
+ form_print
+ account.invoice,-1
+
+
+
+
+ Commission invoice Purchase
+ account.invoice
+ account.invoice
+ account_invoice/purchase_commission_ict.fodt
+
+
+
+ form_print
+ account.invoice,-1
+
+
+
Invoice
diff --git a/modules/purchase/purchase_commission_ict.fodt b/modules/account_invoice/purchase_commission_ict.fodt
similarity index 99%
rename from modules/purchase/purchase_commission_ict.fodt
rename to modules/account_invoice/purchase_commission_ict.fodt
index 903a3c0..c6e2352 100644
--- a/modules/purchase/purchase_commission_ict.fodt
+++ b/modules/account_invoice/purchase_commission_ict.fodt
@@ -17128,9 +17128,9 @@
- <for each="purchase in records">
- <replace text:p="set_lang(purchase.party.lang)">
- <replace text:p="purchase.set_lang(purchase.party.lang)">
+ <for each="invoice in records">
+ <replace text:p="set_lang(invoice.party.lang)">
+ <replace text:p="invoice.set_lang(invoice.party.lang)">
@@ -17143,7 +17143,7 @@
- <for each="line in purchase.report_address.splitlines()"><line></for>
+ <for each="line in invoice.report_commission_address.splitlines()"><line></for>
@@ -17155,11 +17155,11 @@
COMMISSION INVOICE
- INVOICE N. <purchase.report_commission_invoice_number>
- CONTRACT N. <purchase.report_commission_contract_number>
+ INVOICE N. <invoice.report_commission_invoice_number>
+ CONTRACT N. <invoice.report_commission_contract_number>
- <format_date(purchase.purchase_date or today, purchase.party.lang)>
+ <format_date(invoice.report_commission_date or today, invoice.party.lang)>
@@ -17170,8 +17170,8 @@
- Bill of Lading N. <purchase.report_commission_bl_number> dated <format_date(purchase.report_commission_bl_date, purchase.party.lang) if purchase.report_commission_bl_date else ''>
- M/V <purchase.report_commission_vessel>
+ Bill of Lading N. <invoice.report_commission_bl_number> dated <format_date(invoice.report_commission_bl_date, invoice.party.lang) if invoice.report_commission_bl_date else ''>
+ M/V <invoice.report_commission_vessel>
@@ -17179,16 +17179,16 @@
COMMISSION
- <purchase.report_commission_invoice_line>
+ <invoice.report_commission_invoice_line>
- <purchase.report_commission_quantity_unit_upper>
+ <invoice.report_commission_quantity_unit_upper>
- <purchase.report_commission_quantity_display>
+ <invoice.report_commission_quantity_display>
@@ -17196,12 +17196,12 @@
Lbs
- <purchase.report_commission_lbs_display>
+ <invoice.report_commission_lbs_display>
- Your commission: <purchase.report_commission_rate_line>
- <purchase.report_commission_secondary_rate_line>
+ Your commission: <invoice.report_commission_rate_line>
+ <invoice.report_commission_secondary_rate_line>
VAT 0% RATE
@@ -17214,15 +17214,15 @@
TOTAL DUE TO YOU
- <purchase.report_commission_currency_name>
+ <invoice.report_commission_currency_name>
- <purchase.report_commission_total_display>
+ <invoice.report_commission_total_display>
- <purchase.company.party.name>
+ <invoice.company.party.name>
</for>
diff --git a/modules/sale/sale_commission_ict.fodt b/modules/account_invoice/sale_commission_ict.fodt
similarity index 99%
rename from modules/sale/sale_commission_ict.fodt
rename to modules/account_invoice/sale_commission_ict.fodt
index ae7d4d8..0252f76 100644
--- a/modules/sale/sale_commission_ict.fodt
+++ b/modules/account_invoice/sale_commission_ict.fodt
@@ -3625,9 +3625,9 @@
- <for each="sale in records">
- <replace text:p="set_lang(sale.party.lang)">
- <replace text:p="sale.set_lang(sale.party.lang)">
+ <for each="invoice in records">
+ <replace text:p="set_lang(invoice.party.lang)">
+ <replace text:p="invoice.set_lang(invoice.party.lang)">
@@ -3639,7 +3639,7 @@
- <for each="line in sale.report_address.splitlines()"><line></for>
+ <for each="line in invoice.report_commission_address.splitlines()"><line></for>
@@ -3653,11 +3653,11 @@
COMMISSION INVOICE
- INVOICE N. <sale.report_commission_invoice_number>
- CONTRACT N. <sale.report_commission_contract_number>
+ INVOICE N. <invoice.report_commission_invoice_number>
+ CONTRACT N. <invoice.report_commission_contract_number>
- <format_date(sale.sale_date or today, sale.party.lang)>
+ <format_date(invoice.report_commission_date or today, invoice.party.lang)>
@@ -3667,8 +3667,8 @@
- Bill of Lading N. <sale.report_commission_bl_number> dated <format_date(sale.report_commission_bl_date, sale.party.lang) if sale.report_commission_bl_date else ''>
- M/V <sale.report_commission_vessel>
+ Bill of Lading N. <invoice.report_commission_bl_number> dated <format_date(invoice.report_commission_bl_date, invoice.party.lang) if invoice.report_commission_bl_date else ''>
+ M/V <invoice.report_commission_vessel>
@@ -3677,16 +3677,16 @@
COMMISSION
- <sale.report_commission_invoice_line>
+ <invoice.report_commission_invoice_line>
- <sale.report_commission_quantity_unit_upper>
+ <invoice.report_commission_quantity_unit_upper>
- <sale.report_commission_quantity_display>
+ <invoice.report_commission_quantity_display>
@@ -3694,12 +3694,12 @@
Lbs
- <sale.report_commission_lbs_display>
+ <invoice.report_commission_lbs_display>
- Your commission: <sale.report_commission_rate_line>
- <sale.report_commission_secondary_rate_line>
+ Your commission: <invoice.report_commission_rate_line>
+ <invoice.report_commission_secondary_rate_line>
VAT 0% RATE
@@ -3714,15 +3714,15 @@
- <sale.report_commission_currency_name>
+ <invoice.report_commission_currency_name>
- <sale.report_commission_total_display>
+ <invoice.report_commission_total_display>
- <sale.company.party.name>
+ <invoice.company.party.name>
</for>
diff --git a/modules/purchase/purchase.xml b/modules/purchase/purchase.xml
index 0274edc..d83cd92 100755
--- a/modules/purchase/purchase.xml
+++ b/modules/purchase/purchase.xml
@@ -405,18 +405,6 @@ this repository contains the full copyright notices and license terms. -->
-
- Commission invoice
- purchase.purchase
- purchase.purchase
- purchase/purchase_commission_ict.fodt
-
-
- form_print
- purchase.purchase,-1
-
-
-
purchase.line
form
diff --git a/modules/purchase_trade/configuration.py b/modules/purchase_trade/configuration.py
index 998dc0b..6a574d4 100644
--- a/modules/purchase_trade/configuration.py
+++ b/modules/purchase_trade/configuration.py
@@ -58,8 +58,8 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
_REPORT_LABELS = (
('sale_report_label', 'sale', 'report_sale', 'Proforma'),
- ('sale_commission_report_label', 'sale',
- 'report_sale_commission_ict', 'Commission invoice'),
+ ('sale_commission_report_label', 'account_invoice',
+ 'report_sale_commission_ict', 'Commission invoice Sale'),
('sale_bill_report_label', 'sale', 'report_bill', 'Draft'),
('invoice_report_label', 'account_invoice', 'report_invoice',
'Invoice'),
@@ -74,8 +74,8 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
('invoice_payment_order_report_label', 'purchase_trade',
'report_payment_order', 'Payment Order'),
('purchase_report_label', 'purchase', 'report_purchase', 'Purchase'),
- ('purchase_commission_report_label', 'purchase',
- 'report_purchase_commission_ict', 'Commission invoice'),
+ ('purchase_commission_report_label', 'account_invoice',
+ 'report_purchase_commission_ict', 'Commission invoice Purchase'),
('shipment_shipping_report_label', 'stock',
'report_shipment_in_shipping', 'Shipping instructions'),
('shipment_insurance_report_label', 'purchase_trade',
diff --git a/modules/purchase_trade/invoice.py b/modules/purchase_trade/invoice.py
index e4ed8e0..96f2bb5 100644
--- a/modules/purchase_trade/invoice.py
+++ b/modules/purchase_trade/invoice.py
@@ -319,6 +319,97 @@ class Invoice(metaclass=PoolMeta):
]
return lines or list(self.lines or [])
+ def _get_report_commission_trade(self):
+ for line in self._get_report_invoice_lines():
+ origin = getattr(line, 'origin', None)
+ if not origin:
+ continue
+ trade = getattr(origin, 'sale', None) or getattr(origin, 'purchase', None)
+ if trade:
+ return trade
+
+ @property
+ def report_commission_address(self):
+ trade = self._get_report_commission_trade()
+ return getattr(trade, 'report_address', '') or ''
+
+ @property
+ def report_commission_date(self):
+ trade = self._get_report_commission_trade()
+ return (
+ getattr(trade, 'sale_date', None)
+ or getattr(trade, 'purchase_date', None)
+ or self.invoice_date)
+
+ def _get_report_commission_value(self, name):
+ trade = self._get_report_commission_trade()
+ return getattr(trade, name, '') if trade else ''
+
+ @property
+ def report_commission_invoice_number(self):
+ return self._get_report_commission_value(
+ 'report_commission_invoice_number')
+
+ @property
+ def report_commission_contract_number(self):
+ return self._get_report_commission_value(
+ 'report_commission_contract_number')
+
+ @property
+ def report_commission_bl_number(self):
+ return self._get_report_commission_value(
+ 'report_commission_bl_number')
+
+ @property
+ def report_commission_bl_date(self):
+ return self._get_report_commission_value(
+ 'report_commission_bl_date')
+
+ @property
+ def report_commission_vessel(self):
+ return self._get_report_commission_value(
+ 'report_commission_vessel')
+
+ @property
+ def report_commission_invoice_line(self):
+ return self._get_report_commission_value(
+ 'report_commission_invoice_line')
+
+ @property
+ def report_commission_quantity_unit_upper(self):
+ return self._get_report_commission_value(
+ 'report_commission_quantity_unit_upper')
+
+ @property
+ def report_commission_quantity_display(self):
+ return self._get_report_commission_value(
+ 'report_commission_quantity_display')
+
+ @property
+ def report_commission_lbs_display(self):
+ return self._get_report_commission_value(
+ 'report_commission_lbs_display')
+
+ @property
+ def report_commission_rate_line(self):
+ return self._get_report_commission_value(
+ 'report_commission_rate_line')
+
+ @property
+ def report_commission_secondary_rate_line(self):
+ return self._get_report_commission_value(
+ 'report_commission_secondary_rate_line')
+
+ @property
+ def report_commission_currency_name(self):
+ return self._get_report_commission_value(
+ 'report_commission_currency_name')
+
+ @property
+ def report_commission_total_display(self):
+ return self._get_report_commission_value(
+ 'report_commission_total_display')
+
@staticmethod
def _get_report_related_lots(line):
lots = []
@@ -1940,6 +2031,7 @@ class InvoiceReport(ReportTemplateMixin, BaseInvoiceReport):
def _resolve_configured_report_path(cls, action):
report_path = cls._get_action_report_path(action) or ''
action_name = cls._get_action_name(action)
+ legacy_prefix = None
if (report_path.endswith('/prepayment.fodt')
or action_name == 'Prepayment'):
@@ -1955,9 +2047,21 @@ class InvoiceReport(ReportTemplateMixin, BaseInvoiceReport):
elif (report_path.endswith('/commission__ict_final.fodt')
or action_name == 'CN/DN Commission'):
field_name = 'invoice_commission_cndn_report_template'
+ elif (report_path.endswith('/sale_commission_ict.fodt')
+ or action_name == 'Commission invoice Sale'):
+ field_name = 'sale_commission_report_template'
+ legacy_prefix = 'sale/'
+ elif (report_path.endswith('/purchase_commission_ict.fodt')
+ or action_name == 'Commission invoice Purchase'):
+ field_name = 'purchase_commission_report_template'
+ legacy_prefix = 'purchase/'
else:
field_name = 'invoice_report_template'
- return cls._resolve_template_path(action, field_name, 'account_invoice')
+ resolved_path = cls._resolve_template_path(
+ action, field_name, 'account_invoice')
+ if legacy_prefix and resolved_path.startswith(legacy_prefix):
+ return 'account_invoice/%s' % resolved_path.rsplit('/', 1)[-1]
+ return resolved_path
class SaleReport(ReportTemplateMixin, BaseSaleReport):
@@ -1967,10 +2071,7 @@ class SaleReport(ReportTemplateMixin, BaseSaleReport):
def _resolve_configured_report_path(cls, action):
report_path = cls._get_action_report_path(action)
action_name = cls._get_action_name(action)
- if (report_path.endswith('/sale_commission_ict.fodt')
- or action_name == 'Commission invoice'):
- field_name = 'sale_commission_report_template'
- elif report_path.endswith('/bill.fodt') or action_name == 'Bill':
+ if report_path.endswith('/bill.fodt') or action_name == 'Bill':
field_name = 'sale_bill_report_template'
elif report_path.endswith('/sale_final.fodt') or action_name == 'Sale (final)':
field_name = 'sale_final_report_template'
@@ -1986,9 +2087,5 @@ class PurchaseReport(ReportTemplateMixin, BasePurchaseReport):
def _resolve_configured_report_path(cls, action):
report_path = cls._get_action_report_path(action)
action_name = cls._get_action_name(action)
- if (report_path.endswith('/purchase_commission_ict.fodt')
- or action_name == 'Commission invoice'):
- return cls._resolve_template_path(
- action, 'purchase_commission_report_template', 'purchase')
return cls._resolve_template_path(
action, 'purchase_report_template', 'purchase')
diff --git a/modules/purchase_trade/tests/test_module.py b/modules/purchase_trade/tests/test_module.py
index 126fffc..7c8e255 100644
--- a/modules/purchase_trade/tests/test_module.py
+++ b/modules/purchase_trade/tests/test_module.py
@@ -4556,7 +4556,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
config_model.search.return_value = [
Mock(
sale_report_template='sale_melya.fodt',
- sale_commission_report_template='sale_commission_ict.fodt',
+ sale_commission_report_template='sale/sale_commission_ict.fodt',
sale_bill_report_template='bill_melya.fodt',
sale_final_report_template='sale_final_melya.fodt',
invoice_report_template='invoice_melya.fodt',
@@ -4568,7 +4568,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
invoice_payment_order_report_template='payment_order.fodt',
purchase_report_template='purchase_melya.fodt',
purchase_commission_report_template=(
- 'purchase_commission_ict.fodt'),
+ 'purchase/purchase_commission_ict.fodt'),
)
]
@@ -4601,6 +4601,18 @@ class PurchaseTradeTestCase(ModuleTestCase):
'report': 'account_invoice/commission__ict_final.fodt',
}),
'account_invoice/commission__ict_final.fodt')
+ self.assertEqual(
+ report_class._resolve_configured_report_path({
+ 'name': 'Commission invoice Sale',
+ 'report': 'account_invoice/sale_commission_ict.fodt',
+ }),
+ 'account_invoice/sale_commission_ict.fodt')
+ self.assertEqual(
+ report_class._resolve_configured_report_path({
+ 'name': 'Commission invoice Purchase',
+ 'report': 'account_invoice/purchase_commission_ict.fodt',
+ }),
+ 'account_invoice/purchase_commission_ict.fodt')
self.assertEqual(
report_class._resolve_configured_report_path({
'name': 'Payment Order',
@@ -4623,6 +4635,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
invoice_report_template='',
invoice_cndn_report_template='',
invoice_commission_cndn_report_template='',
+ sale_commission_report_template='',
+ purchase_commission_report_template='',
invoice_prepayment_report_template='',
invoice_packing_list_report_template='',
invoice_payment_order_report_template='',
@@ -4638,6 +4652,16 @@ class PurchaseTradeTestCase(ModuleTestCase):
'name': 'Invoice',
'report': 'account_invoice/invoice.fodt',
})
+ with self.assertRaises(UserError):
+ report_class._resolve_configured_report_path({
+ 'name': 'Commission invoice Sale',
+ 'report': 'account_invoice/sale_commission_ict.fodt',
+ })
+ with self.assertRaises(UserError):
+ report_class._resolve_configured_report_path({
+ 'name': 'Commission invoice Purchase',
+ 'report': 'account_invoice/purchase_commission_ict.fodt',
+ })
with self.assertRaises(UserError):
report_class._resolve_configured_report_path({
'name': 'Payment Order',
@@ -4673,12 +4697,6 @@ class PurchaseTradeTestCase(ModuleTestCase):
'report': 'sale/sale.fodt',
}),
'sale/sale_melya.fodt')
- self.assertEqual(
- report_class._resolve_configured_report_path({
- 'name': 'Commission invoice',
- 'report': 'sale/sale_commission_ict.fodt',
- }),
- 'sale/sale_commission_ict.fodt')
self.assertEqual(
report_class._resolve_configured_report_path({
'name': 'Bill',
@@ -4715,12 +4733,6 @@ class PurchaseTradeTestCase(ModuleTestCase):
'report': 'purchase/purchase.fodt',
}),
'purchase/purchase_melya.fodt')
- self.assertEqual(
- report_class._resolve_configured_report_path({
- 'name': 'Commission invoice',
- 'report': 'purchase/purchase_commission_ict.fodt',
- }),
- 'purchase/purchase_commission_ict.fodt')
def test_shipment_reports_use_templates_from_configuration(self):
'shipment report paths are resolved from purchase_trade configuration'
diff --git a/modules/purchase_trade/view/template_configuration_form.xml b/modules/purchase_trade/view/template_configuration_form.xml
index bb6da52..1c4fb9a 100644
--- a/modules/purchase_trade/view/template_configuration_form.xml
+++ b/modules/purchase_trade/view/template_configuration_form.xml
@@ -5,10 +5,6 @@
-
-
-
-
@@ -29,6 +25,14 @@
+
+
+
+
+
+
+
+
@@ -49,10 +53,6 @@
-
-
-
-
diff --git a/modules/sale/sale.xml b/modules/sale/sale.xml
index 9db8cf8..2725563 100755
--- a/modules/sale/sale.xml
+++ b/modules/sale/sale.xml
@@ -410,18 +410,6 @@ this repository contains the full copyright notices and license terms. -->
-
- Commission invoice
- sale.sale
- sale.sale
- sale/sale_commission_ict.fodt
-
-
- form_print
- sale.sale,-1
-
-
-
Draft
sale.sale