diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py
index 7665048..cf3f4da 100755
--- a/models/res_partner_contract_annex.py
+++ b/models/res_partner_contract_annex.py
@@ -1,11 +1,12 @@
import math
+import logging
from odoo import _, api, fields, models
from ..utils import MODULE_NAME
# from ..utils.misc import Extension, IDocument
-
+_logger = logging.getLogger(__name__)
class ContractOrderAnnex(models.Model): # , IDocument, Extension):
_name = "res.partner.contract.annex"
@@ -141,6 +142,7 @@ class ContractOrderAnnex(models.Model): # , IDocument, Extension):
@api.model
def create(self, values):
+ _logger.debug("\n\n Values: %s\n\n", values)
record = super().create(values)
# Fill annex_id to domain it in future
record.order_id.contract_annex_id = record.id
diff --git a/utils/contract_context_values.py b/utils/contract_context_values.py
new file mode 100644
index 0000000..8067ad7
--- /dev/null
+++ b/utils/contract_context_values.py
@@ -0,0 +1,312 @@
+# Aliases
+self = record # res.partner.contract
+
+partner = self.partner_id # res.partner
+seller = self.company_id
+
+# Functions
+_ = self._
+get_date = self.get_date
+
+# Parse date
+months = ["",
+ "января", "февраля", "марта", "апреля",
+ "мая", "июня", "июля", "августа",
+ "сентября", "октября", "ноября", "декабря",
+ ]
+date = get_date()
+dd = date.day
+mm = date.month
+yyyy = date.year
+yy = yyyy % 100
+MM = months[mm]
+
+dd = dd if dd // 10 else '0{}'.format(dd)
+mm = mm if mm // 10 else '0{}'.format(mm)
+
+# ctx keys must be decalared in this xml with id equal to "contract_field_{technical_name}"
+ctx = {
+ "contract_number": self.name,
+
+ "dd": dd,
+ "mm": mm,
+ "MM": MM,
+ "yy": yy,
+ "yyyy": yyyy,
+
+ "seller_name": seller.name_write,
+ "seller_company_form": _(dict(seller._fields['company_form'].selection).get(seller.company_form)),
+ "seller_representer_name": seller.representative_id.name,
+ "seller_representer_name_parent": seller.representative_id.name_genitive,
+ "seller_representer_name_initials": seller.representative_id.name_initials,
+ "seller_representer_function": seller.representative_id.function,
+ "seller_representer_function_parent": seller.representative_id.function_genitive,
+ "seller_representer_document_parent": seller.representative_document,
+ "seller_inn": seller.vat,
+ "seller_kpp": seller.iec,
+ "seller_ogrn": seller.psrn,
+ "seller_business_address": seller.full_address,
+ "seller_phone": seller.phone,
+ "seller_whatsapp": seller.whatsapp,
+ "seller_telegram": seller.telegram,
+ "seller_email": seller.email,
+
+ "partner_name": partner.name_write,
+ "partner_inn": partner.vat,
+ "partner_business_address": partner.full_address,
+ "partner_phone": partner.phone,
+ "partner_whatsapp": partner.whatsapp,
+ "partner_telegram": partner.telegram,
+ "partner_email": partner.email,
+}
+
+seller_bank = seller.bank_ids and seller.bank_ids[0]
+if seller_bank:
+ bank = seller_bank.bank_id
+ bank_name = bank and bank.name or ""
+ bank_city = "г. {city}".format(city=bank.city) if bank and bank.city else ""
+ seller_bank_name = "{} {}".format(bank_name, bank_city).strip()
+
+ ctx.update({
+ "seller_bank": seller_bank_name,
+ "seller_rs": seller_bank.acc_number,
+ "seller_ks": bank.corr_account,
+ "seller_bic": bank.bic,
+ })
+
+partner_bank = partner.bank_ids and partner.bank_ids[0]
+if partner_bank:
+ bank = partner_bank.bank_id
+ bank_name = bank and bank.name or ""
+ bank_city = "г. {city}".format(city=bank.city) if bank and bank.city else ""
+ partner_bank_name = "{} {}".format(bank_name, bank_city).strip()
+
+ ctx.update({
+ "partner_bank": partner_bank_name,
+ "partner_rs": partner_bank.acc_number,
+ "partner_ks": bank.corr_account,
+ "partner_bic": bank.bic,
+ })
+
+# Person
+if not partner.is_company:
+ ctx.update({
+ "partner_representer_name": partner.name_write,
+ "partner_representer_name_initials": partner.name_initials,
+ "partner_representer_passport_number": partner.passport_number,
+ "partner_representer_passport_date": partner.passport_date,
+ "partner_representer_passport_department": partner.passport_department,
+ "partner_representer_passport_department_code": partner.passport_department_code,
+ })
+ if not partner.name_write:
+ ctx.update({
+ "partner_name": partner.name,
+ "partner_representer_name": partner.name,
+ })
+else:
+ # Company
+ ctx.update({
+ "partner_company_form": _(dict(partner._fields['company_form'].selection).get(partner.company_form)),
+ "partner_representer_name": partner.representative_id.name,
+ "partner_representer_name_parent": partner.representative_id.name_genitive,
+ "partner_representer_name_initials": partner.representative_id.name_initials,
+ "partner_representer_function": partner.representative_id.function,
+ "partner_representer_function_parent": partner.representative_id.function_genitive,
+ "partner_representer_document_parent": partner.representative_document,
+ })
+
+ if partner.company_form == 'sp':
+ # Sole Proprietor
+ ctx.update({
+ "partner_ip_number": partner.sp_register_number,
+ "partner_ip_date": partner.sp_register_date,
+ "partner_ogrnip": partner.psrn_sp,
+ "partner_representer_passport_number": partner.representative_id.passport_number,
+ "partner_representer_passport_date": partner.representative_id.passport_date,
+ "partner_representer_passport_department": partner.representative_id.passport_department,
+ "partner_representer_passport_department_code": partner.representative_id.passport_department_code,
+ })
+ if partner.company_form == 'plc':
+ # Private Limited Company
+ ctx.update({
+ "partner_kpp": partner.iec,
+ "partner_ogrn": partner.psrn,
+ })
+
+action = ctx
+< / field >
+< / record >
+
+< !-- Action -->
+< record
+id = "action_get_annex_context"
+model = "ir.actions.server" >
+< field
+name = "name" > Generate
+Context
+for Annex field >
+< field
+name = "model_id"
+ref = "client_contracts.model_res_partner_contract_wizard" / >
+< field
+name = "binding_model_id"
+ref = "client_contracts.model_res_partner_contract_wizard" / >
+< field
+name = "state" > code < / field >
+< field
+name = "code" >
+
+# Aliases
+self = record # res.partner.contract.annex
+
+seller = self.company_id
+partner = self.partner_id
+
+# Functions
+_ = self.contract_id._
+get_date = self.contract_id.get_date
+
+# Parse date
+months = ["",
+ "января", "февраля", "марта", "апреля",
+ "мая", "июня", "июля", "августа",
+ "сентября", "октября", "ноября", "декабря",
+ ]
+date = get_date()
+dd = date.day
+mm = date.month
+yyyy = date.year
+yy = yyyy % 100
+MM = months[mm]
+
+dd = dd if dd // 10 else '0{}'.format(dd)
+mm = mm if mm // 10 else '0{}'.format(mm)
+
+order_date = self.order_id.date_order
+
+# ctx keys must be decalared in this xml with id equal to "contract_field_{technical_name}"
+ctx = {
+ "contract_number": self.contract_id.name,
+
+ "annex_name": self.name,
+ "annex_number": self.counter,
+
+ "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,
+ "payment_part_three": self.payment_part_three,
+ "delivery_period": self.delivery_period,
+
+ "dd": dd,
+ "mm": mm,
+ "MM": MM,
+ "yy": yy,
+ "yyyy": yyyy,
+
+ "seller_name": seller.name_write,
+ "seller_company_form": _(dict(seller._fields['company_form'].selection).get(seller.company_form)),
+ "seller_representer_name": seller.representative_id.name,
+ "seller_representer_name_parent": seller.representative_id.name_genitive,
+ "seller_representer_name_initials": seller.representative_id.name_initials,
+ "seller_representer_function": seller.representative_id.function,
+ "seller_representer_function_parent": seller.representative_id.function_genitive,
+
+ "seller_inn": seller.vat,
+ "seller_kpp": seller.iec,
+ "seller_ogrn": seller.psrn,
+ "seller_business_address": seller.full_address,
+ "seller_phone": seller.phone,
+ "seller_email": seller.email,
+
+ "partner_name": partner.name_write,
+ "partner_representer_name": partner.representative_id.name,
+ "partner_representer_name_initials": partner.representative_id.name_initials,
+ "partner_inn": partner.vat,
+ "partner_business_address": partner.full_address,
+ "partner_phone": partner.phone,
+ "partner_email": partner.email,
+}
+
+seller_bank = seller.bank_ids and seller.bank_ids[0]
+if seller_bank:
+ bank = seller_bank.bank_id
+ bank_name = bank and bank.name or ""
+ bank_city = "г. {city}".format(city=bank.city) if bank and bank.city else ""
+ seller_bank_name = "{} {}".format(bank_name, bank_city).strip()
+
+ ctx.update({
+ "seller_bank": seller_bank_name,
+ "seller_rs": seller_bank.acc_number,
+ "seller_ks": bank.corr_account,
+ "seller_bic": bank.bic,
+ })
+
+partner_bank = partner.bank_ids and partner.bank_ids[0]
+if partner_bank:
+ bank = partner_bank.bank_id
+ bank_name = bank and bank.name or ""
+ bank_city = "г. {city}".format(city=bank.city) if bank and bank.city else ""
+ partner_bank_name = "{} {}".format(bank_name, bank_city).strip()
+
+ ctx.update({
+ "partner_bank": partner_bank_name,
+ "partner_rs": partner_bank.acc_number,
+ "partner_ks": bank.corr_account,
+ "partner_bic": bank.bic,
+ })
+
+# Person
+if not partner.is_company:
+ ctx.update({
+ "partner_representer_name": partner.name_write,
+ "partner_representer_name_initials": partner.name_initials,
+ "partner_representer_passport_number": partner.passport_number,
+ "partner_representer_passport_date": partner.passport_date,
+ "partner_representer_passport_department": partner.passport_department,
+ })
+ if not partner.name_write:
+ ctx.update({
+ "partner_name": partner.name,
+ "partner_representer_name": partner.name,
+ })
+else:
+ # Company
+ ctx.update({
+ "partner_company_form": _(dict(partner._fields['company_form'].selection).get(partner.company_form)),
+ "partner_representer_name_parent": partner.representative_id.name_genitive,
+ "partner_representer_document_parent": partner.representative_document,
+ "partner_representer_function": partner.representative_id.function,
+ "partner_representer_function_parent": partner.representative_id.function_genitive,
+ })
+
+ if partner.company_form == 'sp':
+ # Sole Proprietor
+ ctx.update({
+ "partner_ip_number": partner.sp_register_number,
+ "partner_ip_date": partner.sp_register_date,
+ "partner_ogrnip": partner.psrn_sp,
+ "partner_representer_passport_number": partner.representative_id.passport_number,
+ "partner_representer_passport_date": partner.representative_id.passport_date,
+ "partner_representer_passport_department": partner.representative_id.passport_department,
+ })
+ if partner.company_form == 'plc':
+ # Private Limited Company
+ ctx.update({
+ "partner_kpp": partner.iec,
+ "partner_ogrn": partner.psrn,
+ })
+
+action = ctx
\ No newline at end of file
diff --git a/wizard/res_partner_contract_wizard.xml b/wizard/res_partner_contract_wizard.xml
index 2890da8..febf2be 100755
--- a/wizard/res_partner_contract_wizard.xml
+++ b/wizard/res_partner_contract_wizard.xml
@@ -10,11 +10,12 @@
+
-
+