diff --git a/l10n_br_cte/models/aereo.py b/l10n_br_cte/models/aereo.py index 628a2c353068..9c3ad9069396 100644 --- a/l10n_br_cte/models/aereo.py +++ b/l10n_br_cte/models/aereo.py @@ -18,9 +18,7 @@ class Aereo(spec_models.SpecModel): store="True", ) - cte40_natCarga = fields.One2many( - related="document_id.fiscal_line_ids", - ) + cte40_natCarga = fields.Many2one(comodel_name="l10n_br_cte.modal.aereo.natcarga") cte40_tarifa = fields.Many2one(comodel_name="l10n_br_cte.modal.aereo.tarifa") @@ -54,3 +52,32 @@ def export_fields(self): @api.model def export_fields_multi(self): return [record.export_fields() for record in self] + + +class NatCarga(spec_models.SpecModel): + _name = "l10n_br_cte.modal.aereo.natcarga" + _inherit = "cte.40.tarifa" + + document_id = fields.Many2one(comodel_name="l10n_br_fiscal.document") + + cte40_xDime = fields.Char( + string="Dimensão", + help=( + "Dimensão\nFormato:1234X1234X1234 (cm). Esse campo deve sempre que" + " possível ser preenchido. Entretanto, quando for impossível o " + "preenchimento das dimensões, fica obrigatório o preenchimento da " + "cubagem em metro cúbico do leiaute do CT-e da estrutura genérica " + "(infQ)." + ), + ) + + @api.model + def export_fields(self): + if len(self) > 1: + return self.export_fields_multi() + + return Aquav.Tarifa(xDime=self.cte40_xDime) + + @api.model + def export_fields_multi(self): + return [record.export_fields() for record in self] diff --git a/l10n_br_cte/models/aquaviario.py b/l10n_br_cte/models/aquaviario.py index f6d29620c19b..84308821f036 100644 --- a/l10n_br_cte/models/aquaviario.py +++ b/l10n_br_cte/models/aquaviario.py @@ -10,10 +10,6 @@ class Aquaviario(spec_models.SpecModel): _name = "l10n_br_cte.modal.aquaviario" _inherit = "cte.40.aquav" - document_id = fields.One2many( - comodel_name="l10n_br_fiscal.document", inverse_name="cte40_aquav" - ) - cte40_vPrest = fields.Monetary(compute="_compute_vPrest", store=True) cte40_vAFRMM = fields.Monetary( diff --git a/l10n_br_cte/models/document.py b/l10n_br_cte/models/document.py index e135dd360736..c744eef2e9c9 100644 --- a/l10n_br_cte/models/document.py +++ b/l10n_br_cte/models/document.py @@ -483,7 +483,7 @@ def _default_cte40_autxml(self): ) cte40_natCarga = fields.One2many( - related="document_id.fiscal_line_ids", + related="fiscal_line_ids", ) cte40_tarifa = fields.Many2one(comodel_name="l10n_br_cte.tarifa") @@ -534,8 +534,10 @@ def _default_cte40_autxml(self): ) def _compute_vPrest(self): - for record in self.document_id.fiscal_line_ids: - record.cte40_vPrest += record.cte40_vTPrest + vPrest = 0 + for record in self.fiscal_line_ids: + vPrest += record.cte40_vTPrest + self.cte40_vPrest = vPrest # Campos do Modal Dutoviario cte40_dIni = fields.Date(string="Data de Início da prestação do serviço") @@ -565,13 +567,13 @@ def _compute_vPrest(self): # TRAFMUT cte40_trafMut = fields.Many2one( - comodel_name="l10n_br_fiscal.document", + comodel_name="l10n_br_fiscal.document.line", string="Detalhamento de informações", help="Detalhamento de informações para o tráfego mútuo", ) cte40_vFrete = fields.Monetary( - related="cte40_trafMut.amount_freight_value", + related="amount_freight_value", currency_field="brl_currency_id", ) @@ -596,8 +598,8 @@ def _compute_vPrest(self): ) cte40_ferroEnv = fields.One2many( - comodel_name="l10n_br_cte.ferroenv", - inverse_name="cte40_cInt", + comodel_name="l10n_br_cte.modal.ferroviario.trafmut.ferroenv", + inverse_name="document_id", string="Informações das Ferrovias Envolvidas", ) @@ -605,13 +607,13 @@ def _compute_vPrest(self): cte40_RNTRC = fields.Char( string="RNTRC", store=True, - related="document_id.cte40_emit.partner_id.rntrc_code", + related="partner_id.rntrc_code", help="Registro Nacional de Transportadores Rodoviários de Carga", ) cte40_occ = fields.One2many( - comodel_name="l10n_br_cte.occ", - inverse_name="cte40_occ_rodo_id", + comodel_name="l10n_br_cte.modal.rodoviario.occ", + inverse_name="document_id", string="Ordens de Coleta associados", ) @@ -620,40 +622,6 @@ def _compute_vPrest(self): # Compute Methods ########################## - def _compute_modal(self): - if self.cte40_modal == "1": - self.cte40_infModal = self.cte40_rodoviario - elif self.cte40_modal == "2": - self.cte40_infModal = self.cte40_aereo - elif self.cte40_modal == "3": - self.cte40_infModal = self.cte40_aquav - elif self.cte40_modal == "4": - self.cte40_infModal = self.cte40_ferroviario - elif self.cte40_modal == "5": - self.cte40_infModal = self.cte40_dutoviario - elif self.cte40_modal == "6": - pass # TODO - - cte40_aquav = fields.Many2one( - comodel_name="l10n_br_cte.aquaviario", inverse_name="document_id" - ) - - cte40_dutoviario = fields.Many2one( - comodel_name="l10n_br_cte.dutoviario", inverse_name="document_id" - ) - - cte40_rodoviario = fields.Many2one( - comodel_name="l10n_br_cte.rodoviario", inverse_name="document_id" - ) - - cte40_ferroviario = fields.Many2one( - comodel_name="l10n_br_cte.ferroviario", inverse_name="document_id" - ) - - cte40_aereo = fields.Many2one( - comodel_name="l10n_br_cte.aereo", inverse_name="document_id" - ) - ################################ # Business Model Methods ################################ diff --git a/l10n_br_cte/models/ferroviario.py b/l10n_br_cte/models/ferroviario.py index 117fc61c01a1..658fd27dfa0c 100644 --- a/l10n_br_cte/models/ferroviario.py +++ b/l10n_br_cte/models/ferroviario.py @@ -39,9 +39,9 @@ class Ferroviario(spec_models.SpecModel): class TrafMut(spec_models.SpecModel): _name = "l10n_br_cte.modal.ferroviario.trafmut" + _inherit = "cte.40.trafmut" cte40_vFrete = fields.Monetary( - related="cte40_trafMut.amount_freight_value", currency_field="brl_currency_id", ) @@ -67,7 +67,6 @@ class TrafMut(spec_models.SpecModel): cte40_ferroEnv = fields.One2many( comodel_name="l10n_br_cte.modal.ferroviario.trafmut.ferroenv", - inverse_name="document_id", string="Informações das Ferrovias Envolvidas", ) @@ -113,7 +112,7 @@ def export_fields_multi(self): class TenderFerrov(spec_models.SpecModel): _name = "l10n_br_cte.modal.tenderfer" - _inherit = "spec.mixin.cte" + _inherit = "cte.40.tenderfer" cte40_xLgr = fields.Char(string="Logradouro") diff --git a/l10n_br_cte/models/rodoviario.py b/l10n_br_cte/models/rodoviario.py index 5a6f4b742863..ead93eb7c5ac 100644 --- a/l10n_br_cte/models/rodoviario.py +++ b/l10n_br_cte/models/rodoviario.py @@ -12,20 +12,14 @@ class Rodoviario(spec_models.SpecModel): _name = "l10n_br_cte.modal.rodoviario" _inherit = "cte.40.rodo" - document_id = fields.One2many( - comodel_name="l10n_br_fiscal.document", inverse_name="cte40_rodoviario" - ) - cte40_RNTRC = fields.Char( string="RNTRC", store=True, - related="document_id.cte40_emit.partner_id.rntrc_code", help="Registro Nacional de Transportadores Rodoviários de Carga", ) cte40_occ = fields.One2many( comodel_name="l10n_br_cte.modal.rodoviario.occ", - inverse_name="document_id", string="Ordens de Coleta associados", )