diff --git a/models/product_product.py b/models/product_product.py index b4d5948..126988d 100644 --- a/models/product_product.py +++ b/models/product_product.py @@ -7,6 +7,6 @@ class ProductProduct(models.Model): description_sale = fields.Text( "Sale Description", translate=True, - help="A description of the Product that you want to communicate to your customers. " + help="A product's description you want to inform to your customers.\n" "This description will be copied to every Sales Order, Delivery Order and Customer Invoice/Credit Note", ) diff --git a/models/res_partner_contract.py b/models/res_partner_contract.py index 70cb17c..1eb5912 100755 --- a/models/res_partner_contract.py +++ b/models/res_partner_contract.py @@ -3,13 +3,13 @@ import datetime from odoo import _, fields, models from ..utils import MODULE_NAME -from ..utils.misc import Extension, IDocument +# from ..utils.misc import Extension, IDocument -class PartnerContract(models.Model, IDocument, Extension): +class PartnerContract(models.Model): #, IDocument, Extension): _name = "res.partner.contract" _description = "Contract" - _inherit = ["mail.thread", "mail.activity.mixin", "mail.followers"] + _inherit = ["mail.thread", "mail.activity.mixin", "mail.followers", "client_contracts.utils"] def _get_default_name(self): """Returns name format `№YYMM-D-N`, @@ -43,7 +43,7 @@ class PartnerContract(models.Model, IDocument, Extension): company_id = fields.Many2one( "res.partner", string="Company", - default=lambda self: self.env.user.company_id.partner_id, + default=lambda self: self.env.company.partner_id, ) create_date_ts = fields.Char(default=_get_default_create_date_ts) res_model = fields.Char(default=lambda self: self._name) @@ -79,7 +79,7 @@ class PartnerContract(models.Model, IDocument, Extension): readonly=True, copy=False, index=True, - track_visibility="onchange", + tracking=True, track_sequence=3, default="draft", ) diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py index 9893b2d..4875f0d 100755 --- a/models/res_partner_contract_annex.py +++ b/models/res_partner_contract_annex.py @@ -3,11 +3,12 @@ import math from odoo import _, api, fields, models from ..utils import MODULE_NAME -from ..utils.misc import Extension, IDocument +# from ..utils.misc import Extension, IDocument -class ContractOrderAnnex(models.Model, IDocument, Extension): +class ContractOrderAnnex(models.Model): # , IDocument, Extension): _name = "res.partner.contract.annex" + _inherit = ["client_contracts.utils"] _description = "Contract Annex" name = fields.Char( @@ -85,12 +86,18 @@ class ContractOrderAnnex(models.Model, IDocument, Extension): string="Total Cost", ) - payment_part_one = fields.Float(string="Payment 1 Part (%)", default=100) + payment_part_one = fields.Float( + string="Payment 1 Part (%)", + default=100, + digits="Account", + ) payment_part_two = fields.Float( string="Payment 2 Part (%)", + digits="Account", ) payment_part_three = fields.Float( string="Payment 3 Part (%)", + digits="Account", ) @api.depends("name") @@ -134,14 +141,11 @@ class ContractOrderAnnex(models.Model, IDocument, Extension): @api.model def create(self, values): record = super().create(values) - # Fill annex_id to domain it in future record.order_id.contract_annex_id = record.id - # Counter record.counter = record.contract_id.contract_annex_number record.contract_id.contract_annex_number += 1 # TODO: should I use a sequence? - return record def action_print_form(self): diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 658f47c..ca472bb 100755 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -6,3 +6,4 @@ access_contracts_field_transient,access_contracts_field_transient,model_res_part access_contracts_field_contract_annex,access_contracts_field_contract_annex,model_res_partner_contract_annex,base.group_user,1,1,1,1 access_contract_document_template,access_contract_document_template,model_res_partner_document_template,base.group_user,1,0,0,0 access_contract_document_template_manager,access_contract_document_template,model_res_partner_document_template,hr.group_hr_manager,1,1,1,1 +access_contracts_wizard,access_contracts_wizard,model_res_partner_contract_wizard,base.group_user,1,1,1,1 diff --git a/utils/__init__.py b/utils/__init__.py index 6d0f55e..73af1c3 100755 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -1 +1,3 @@ +from . import misc + MODULE_NAME = __package__.split(".")[-2] diff --git a/utils/misc.py b/utils/misc.py index 2df45a0..aab7646 100755 --- a/utils/misc.py +++ b/utils/misc.py @@ -1,11 +1,11 @@ import datetime as dt -import inspect +# import inspect -from odoo import fields +from odoo import models # , fields from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT -class IDocument(object): +'''class IDocument(object): """Class must be used as an interface for create new document based model""" def get_name_by_document_template(self, document_template_id: fields.Many2one): @@ -16,17 +16,22 @@ class IDocument(object): def get_filename_by_document_template(self, document_template_id: fields.Many2one): raise NotImplementedError( "Method {} is not implemented".format(inspect.currentframe().f_code.co_name) - ) + )''' -class Extension(object): - def parse_odoo_date(self, date: str): +class Utils(models.AbstractModel): + _name = "client_contracts.utils" + + @staticmethod + def parse_odoo_date(date: str): return dt.datetime.strptime(date, DEFAULT_SERVER_DATE_FORMAT) - def parse_odoo_datetime(self, datetime: str): + @staticmethod + def parse_odoo_datetime(datetime: str): return dt.datetime.strptime(datetime, DEFAULT_SERVER_DATETIME_FORMAT) - def to_fixed(self, number, digit=2): + @staticmethod + def to_fixed(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.xml b/views/res_partner.xml index fb950f1..016f0eb 100755 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -7,7 +7,6 @@ ir.actions.act_window res.partner.contract.field tree,form - form @@ -16,7 +15,6 @@ ir.actions.act_window res.partner.document.template tree,form - form @@ -66,11 +64,11 @@ - - + diff --git a/views/res_partner_contract.xml b/views/res_partner_contract.xml index a0a37c2..4095bbb 100755 --- a/views/res_partner_contract.xml +++ b/views/res_partner_contract.xml @@ -87,7 +87,6 @@ Contracts res.partner.contract - form tree,form {} @@ -95,7 +94,6 @@ Contracts res.partner.contract - form tree,form {'search_default_partner_id': active_id} diff --git a/wizard/res_partner_contract_wizard.py b/wizard/res_partner_contract_wizard.py index 45874a8..27ca4e6 100755 --- a/wizard/res_partner_contract_wizard.py +++ b/wizard/res_partner_contract_wizard.py @@ -6,13 +6,14 @@ from odoo.exceptions import ValidationError from ..utils import MODULE_NAME from ..utils.docxtpl import get_document_from_values_stream -from ..utils.misc import Extension +# from ..utils.misc import Extension _logger = logging.getLogger(__name__) -class ContractWizard(models.TransientModel, Extension): +class ContractWizard(models.TransientModel): #, Extension): _name = "res.partner.contract.wizard" + _inherit = ["client_contracts.utils"] def _default_target(self): return "{model},{target_id}".format(