diff --git a/data/fields_default.xml b/data/fields_default.xml
index 12633a3..21c35fa 100644
--- a/data/fields_default.xml
+++ b/data/fields_default.xml
@@ -195,6 +195,17 @@ ctx = {
"order_name": self.order_id.name,
"order_date": "{} {} {}".format(order_date.day, months[order_date.month], order_date.year),
+
+ "design_cost": self.to_fixed(self.design_cost),
+ "design_period": self.design_period,
+ "design_doc_cost": self.to_fixed(self.design_doc_cost),
+ "design_doc_period": self.design_doc_period,
+ "delivery_address": self.delivery_address,
+ "delivery_period": self.delivery_period,
+ "installation_address": self.installation_address,
+ "installation_cost": self.to_fixed(self.installation_cost),
+ "installation_period": self.installation_period,
+ "total_cost": self.to_fixed(self.total_cost),
"payment_part_one": self.payment_part_one,
"payment_part_two": self.payment_part_two,
@@ -331,11 +342,81 @@ action = ctx
4
+
+ Design Cost
+ design_cost
+
+ False
+
+
+
+ Design Period
+ design_period
+
+ False
+
+
+
+ Design Documentation Period
+ design_doc_period
+
+ False
+
+
+
+ Design Documentation Cost
+ design_doc_cost
+
+ False
+
+
+
+ Delivery Address
+ delivery_address
+
+ False
+
+
+
+ Delivery Period
+ delivery_period
+
+ False
+
+
+
+ Installation Address
+ installation_address
+
+ False
+
+
+
+ Installation Cost
+ installation_cost
+
+ False
+
+
+
+ Installation Period
+ installation_period
+
+ False
+
+
+
+ Total Cost
+ total_cost
+
+ False
+
+
Day
dd
Number
- 8
+ 11
@@ -401,13 +482,6 @@ action = ctx
37
-
- Delivery Period
- delivery_period
-
- 38
-
-
diff --git a/i18n/ru.po b/i18n/ru.po
index 9abc06a..1af1a75 100644
--- a/i18n/ru.po
+++ b/i18n/ru.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0-20191106\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-22 11:29+0000\n"
-"PO-Revision-Date: 2020-01-22 11:29+0000\n"
+"POT-Creation-Date: 2020-01-29 11:03+0000\n"
+"PO-Revision-Date: 2020-01-29 11:03+0000\n"
"Last-Translator: Stepan Savelyev\n"
"Language-Team: RYDLAB\n"
"MIME-Version: 1.0\n"
@@ -306,6 +306,7 @@ msgid "Created on"
msgstr "Создан"
#. module: client_contracts
+#: model:ir.model.fields,field_description:client_contracts.field_crm_lead_currency_id
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_currency_id
msgid "Currency"
msgstr "Валюта"
@@ -332,6 +333,7 @@ msgstr "Доставка"
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_delivery_address
+#: model:res.partner.contract.field,name:client_contracts.contract_field_delivery_address
msgid "Delivery Address"
msgstr "Адрес доставки"
@@ -363,9 +365,26 @@ msgstr "Дизайн"
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_design_cost
+#: model:res.partner.contract.field,name:client_contracts.contract_field_design_cost
msgid "Design Cost"
msgstr "Стоимость разработки дизайна"
+#. module: client_contracts
+#: model:res.partner.contract.field,name:client_contracts.contract_field_design_doc_cost
+msgid "Design Documentation Cost"
+msgstr "Стоимость разработки КД"
+
+#. module: client_contracts
+#: model:res.partner.contract.field,name:client_contracts.contract_field_design_doc_period
+msgid "Design Documentation Period"
+msgstr "Срок разработки КД"
+
+#. module: client_contracts
+#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_design_period
+#: model:res.partner.contract.field,name:client_contracts.contract_field_design_period
+msgid "Design Period"
+msgstr "Срок разработки дизайна"
+
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_display_name
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_display_name
@@ -522,14 +541,21 @@ msgstr "Монтаж"
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_installation_address
+#: model:res.partner.contract.field,name:client_contracts.contract_field_installation_address
msgid "Installation Address"
msgstr "Монтаж по адресу"
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_installation_cost
+#: model:res.partner.contract.field,name:client_contracts.contract_field_installation_cost
msgid "Installation Cost"
msgstr "Стоимость монтажа"
+#. module: client_contracts
+#: model:res.partner.contract.field,name:client_contracts.contract_field_installation_period
+msgid "Installation Period"
+msgstr "Срок монтажа изделий"
+
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_installation_period
msgid "Installation Period (days)"
@@ -834,13 +860,13 @@ msgid "Print"
msgstr "Печать"
#. module: client_contracts
-#: code:addons/client_contracts/models/res_partner_contract.py:99
+#: code:addons/client_contracts/models/res_partner_contract.py:98
#, python-format
msgid "Print Form of Contract"
msgstr "Форма печати договора"
#. module: client_contracts
-#: code:addons/client_contracts/models/res_partner_contract_annex.py:111
+#: code:addons/client_contracts/models/res_partner_contract_annex.py:110
#, python-format
msgid "Print Form of Contract Annex"
msgstr "Форма печати приложения к договору"
@@ -865,11 +891,6 @@ msgstr "Вложение-шаблон приложения к договору"
msgid "Private Limited Company"
msgstr "Общество с ограниченной ответственностью"
-#. module: client_contracts
-#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_development_period
-msgid "Product Development Period (days)"
-msgstr "Срок разработки изделий"
-
#. module: client_contracts
#: model:ir.model,name:client_contracts.model_sale_order
msgid "Quotation"
@@ -1027,6 +1048,7 @@ msgstr "Наименование, используемое при заполне
#. module: client_contracts
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_total_cost
+#: model:res.partner.contract.field,name:client_contracts.contract_field_total_cost
msgid "Total Cost"
msgstr "Общая стоимость"
@@ -1091,13 +1113,13 @@ msgid "res.partner.contract.wizard"
msgstr "res.partner.contract.wizard"
#. module: client_contracts
-#: code:addons/client_contracts/models/res_partner_contract_annex.py:64
+#: code:addons/client_contracts/models/res_partner_contract_annex.py:63
#, python-format
msgid "{name} from {date}"
msgstr "{name} от {date}"
#. module: client_contracts
-#: code:addons/client_contracts/models/res_partner_contract.py:112
+#: code:addons/client_contracts/models/res_partner_contract.py:111
#, python-format
msgid "{type} {number} from {date}"
msgstr "{type} {number} от {date}"
diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py
index cbafbf7..04b9be3 100644
--- a/models/res_partner_contract_annex.py
+++ b/models/res_partner_contract_annex.py
@@ -31,8 +31,7 @@ class ContractOrderAnnex(models.Model, IDocument, Extension):
counter = fields.Integer(string="№", help="Counter of Contract Annexes",)
currency_id = fields.Many2one(related="company_id.currency_id", readonly=True,)
- development_period = fields.Integer("Product Development Period (days)",)
-
+ design_period = fields.Integer(string="Design Period",)
design_cost = fields.Monetary(string="Design Cost",)
design_doc_period = fields.Integer(string="Documentation Design Period (days)",)
diff --git a/models/res_partner_document_template.py b/models/res_partner_document_template.py
index 16d1c6d..7de7d06 100644
--- a/models/res_partner_document_template.py
+++ b/models/res_partner_document_template.py
@@ -4,7 +4,7 @@ from odoo import _, fields, models
class DocumentTemplate(models.Model):
_name = "res.partner.document.template"
_description = "Document Template"
- _order = "company_type,document_type,sequence"
+ _order = "template_type desc,company_type,sequence"
name = fields.Char()
attachment_id = fields.Many2one(
diff --git a/static/assets/documents/person/addition_act_1_person.docx b/static/assets/documents/person/addition_act_1_person.docx
index 0a6d808..d19d5b3 100644
Binary files a/static/assets/documents/person/addition_act_1_person.docx and b/static/assets/documents/person/addition_act_1_person.docx differ
diff --git a/static/assets/documents/person/addition_act_2_person.docx b/static/assets/documents/person/addition_act_2_person.docx
index 35474c0..02f7132 100644
Binary files a/static/assets/documents/person/addition_act_2_person.docx and b/static/assets/documents/person/addition_act_2_person.docx differ
diff --git a/static/assets/documents/person/bill_person.docx b/static/assets/documents/person/bill_person.docx
index ced8f83..a9ff92c 100644
Binary files a/static/assets/documents/person/bill_person.docx and b/static/assets/documents/person/bill_person.docx differ
diff --git a/static/assets/documents/person/specification_person.docx b/static/assets/documents/person/specification_person.docx
index 6bfe078..177e127 100644
Binary files a/static/assets/documents/person/specification_person.docx and b/static/assets/documents/person/specification_person.docx differ
diff --git a/static/assets/documents/plc/addition_act_1_plc.docx b/static/assets/documents/plc/addition_act_1_plc.docx
index 37bb07d..5bd22d8 100644
Binary files a/static/assets/documents/plc/addition_act_1_plc.docx and b/static/assets/documents/plc/addition_act_1_plc.docx differ
diff --git a/static/assets/documents/plc/addition_act_2_plc.docx b/static/assets/documents/plc/addition_act_2_plc.docx
index 29c4c3e..d01dac8 100644
Binary files a/static/assets/documents/plc/addition_act_2_plc.docx and b/static/assets/documents/plc/addition_act_2_plc.docx differ
diff --git a/static/assets/documents/plc/bill_plc.docx b/static/assets/documents/plc/bill_plc.docx
index 5e63f8c..38b0c87 100644
Binary files a/static/assets/documents/plc/bill_plc.docx and b/static/assets/documents/plc/bill_plc.docx differ
diff --git a/static/assets/documents/plc/specification_plc.docx b/static/assets/documents/plc/specification_plc.docx
index 13153eb..3ba5236 100644
Binary files a/static/assets/documents/plc/specification_plc.docx and b/static/assets/documents/plc/specification_plc.docx differ
diff --git a/static/assets/documents/sp/addition_act_1_sp.docx b/static/assets/documents/sp/addition_act_1_sp.docx
index da01acc..b2a21a6 100644
Binary files a/static/assets/documents/sp/addition_act_1_sp.docx and b/static/assets/documents/sp/addition_act_1_sp.docx differ
diff --git a/static/assets/documents/sp/addition_act_2_sp.docx b/static/assets/documents/sp/addition_act_2_sp.docx
index 0bd89ea..929a1da 100644
Binary files a/static/assets/documents/sp/addition_act_2_sp.docx and b/static/assets/documents/sp/addition_act_2_sp.docx differ
diff --git a/static/assets/documents/sp/bill_sp.docx b/static/assets/documents/sp/bill_sp.docx
index 021c43a..e994f44 100644
Binary files a/static/assets/documents/sp/bill_sp.docx and b/static/assets/documents/sp/bill_sp.docx differ
diff --git a/static/assets/documents/sp/specification_sp.docx b/static/assets/documents/sp/specification_sp.docx
index ec463fa..317e817 100644
Binary files a/static/assets/documents/sp/specification_sp.docx and b/static/assets/documents/sp/specification_sp.docx differ
diff --git a/utils/misc.py b/utils/misc.py
index 9050bf8..e59704f 100644
--- a/utils/misc.py
+++ b/utils/misc.py
@@ -26,3 +26,8 @@ class Extension(object):
def parse_odoo_datetime(self, datetime: str):
return dt.datetime.strptime(datetime, DEFAULT_SERVER_DATETIME_FORMAT)
+
+ def to_fixed(self, number, digit=2):
+ if isinstance(number, str) and number.isdigit():
+ number = float(number)
+ return format(number, ".{digit}f".format(digit=digit))
diff --git a/views/res_partner_contract_annex.xml b/views/res_partner_contract_annex.xml
index 48c76a3..9157dcb 100644
--- a/views/res_partner_contract_annex.xml
+++ b/views/res_partner_contract_annex.xml
@@ -21,6 +21,7 @@
+
diff --git a/wizard/res_partner_contract_wizard.py b/wizard/res_partner_contract_wizard.py
index ba94e6d..27770cb 100644
--- a/wizard/res_partner_contract_wizard.py
+++ b/wizard/res_partner_contract_wizard.py
@@ -1,13 +1,17 @@
import base64
+import logging
from odoo import api, fields, models
from odoo.exceptions import ValidationError
from ..utils import MODULE_NAME
from ..utils.docxtpl import get_document_from_values_stream
+from ..utils.misc import Extension
+
+_logger = logging.getLogger(__name__)
-class ContractWizard(models.TransientModel):
+class ContractWizard(models.TransientModel, Extension):
_name = "res.partner.contract.wizard"
def _default_target(self):
@@ -173,7 +177,6 @@ class ContractWizard(models.TransientModel):
for transient_field in (
self.transient_field_ids + self.transient_field_ids_hidden
)
- if transient_field.technical_name and transient_field.value
}
# Extend with special case
if self.target._name == "res.partner.contract.annex":
@@ -194,19 +197,21 @@ class ContractWizard(models.TransientModel):
fields.update(
{
- "order_products": [
+ "products": [
{
"number": next(counter),
"label": item.product_id.name,
+ "description": item.product_id.description_sale,
"count": item.product_uom_qty,
"unit": item.product_uom.name,
- "cost": item.price_unit,
- "amount": item.price_subtotal,
+ "cost": self.to_fixed(item.price_unit),
+ "subtotal": self.to_fixed(item.price_subtotal),
} for item in self.target.order_id.order_line or []
- ]
+ ],
+ "total_amount": self.to_fixed(sum(self.target.order_id.order_line.mapped("price_subtotal")))
}
)
- return fields
+ return self.middleware_fields(fields)
def afterload(self, result):
res_id = self.target.id
@@ -224,6 +229,18 @@ class ContractWizard(models.TransientModel):
return result
+ def middleware_fields(self, kv):
+
+ # Debug False values
+ empty = []
+ for k,v in list(kv.items()):
+ if not v:
+ empty.append(k)
+ kv.pop(k)
+ _logger.debug("Empty fields: {}".format(empty))
+
+ return kv
+
@property
def active_model(self):
return self.env.context.get("active_model")