Merge branch 'development' into 'master'

Development

See merge request odoo/client_contracts!11
This commit is contained in:
Иван Широких 2020-02-05 01:28:57 +05:00
commit a8a7e14ed0
19 changed files with 147 additions and 29 deletions

View File

@ -196,6 +196,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,
"payment_part_three": self.payment_part_three,
@ -331,11 +342,81 @@ action = ctx
<field name="sequence">4</field>
</record>
<record id="contract_field_design_cost" model="res.partner.contract.field">
<field name="name">Design Cost</field>
<field name="technical_name">design_cost</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_design_period" model="res.partner.contract.field">
<field name="name">Design Period</field>
<field name="technical_name">design_period</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_design_doc_period" model="res.partner.contract.field">
<field name="name">Design Documentation Period</field>
<field name="technical_name">design_doc_period</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_design_doc_cost" model="res.partner.contract.field">
<field name="name">Design Documentation Cost</field>
<field name="technical_name">design_doc_cost</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_delivery_address" model="res.partner.contract.field">
<field name="name">Delivery Address</field>
<field name="technical_name">delivery_address</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_delivery_period" model="res.partner.contract.field">
<field name="name">Delivery Period</field>
<field name="technical_name">delivery_period</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_installation_address" model="res.partner.contract.field">
<field name="name">Installation Address</field>
<field name="technical_name">installation_address</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_installation_cost" model="res.partner.contract.field">
<field name="name">Installation Cost</field>
<field name="technical_name">installation_cost</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_installation_period" model="res.partner.contract.field">
<field name="name">Installation Period</field>
<field name="technical_name">installation_period</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_total_cost" model="res.partner.contract.field">
<field name="name">Total Cost</field>
<field name="technical_name">total_cost</field>
<field name="description"></field>
<field name="visible">False</field>
</record>
<record id="contract_field_dd" model="res.partner.contract.field">
<field name="name">Day</field>
<field name="technical_name">dd</field>
<field name="description">Number</field>
<field name="sequence">8</field>
<field name="sequence">11</field>
</record>
<record id="contract_field_mm" model="res.partner.contract.field">
@ -401,13 +482,6 @@ action = ctx
<field name="sequence">37</field>
</record>
<record id="contract_field_delivery_period" model="res.partner.contract.field">
<field name="name">Delivery Period</field>
<field name="technical_name">delivery_period</field>
<field name="description"></field>
<field name="sequence">38</field>
</record>
<!-- Seller -->

View File

@ -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}"

View File

@ -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)",)

View File

@ -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(

View File

@ -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))

View File

@ -21,6 +21,7 @@
<field name="date_conclusion"/>
</group>
<group name="design" string="Design">
<field name="design_period"/>
<field name="design_cost"/>
<field name="design_doc_period"/>
<field name="design_doc_cost"/>

View File

@ -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")