Skip to content

Commit 7129910

Browse files
committed
[ADD] l10n_br_mdfe_spec generated by xsdata-odoo
1 parent 07231e1 commit 7129910

20 files changed

+4648
-0
lines changed

l10n_br_mdfe_spec/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models

l10n_br_mdfe_spec/__manifest__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "mdfe spec",
3+
"version": "14.0.1.0.0",
4+
"author": "Akretion, Odoo Community Association (OCA)",
5+
"license": "LGPL-3",
6+
"category": "Accounting",
7+
"summary": "CT-e spec",
8+
"depends": ["base"],
9+
"installable": True,
10+
"application": False,
11+
"development_status": "Alpha",
12+
"maintainers": ["rvalyi"],
13+
"website": "https://github.com/OCA/l10n-brazil",
14+
}

l10n_br_mdfe_spec/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import spec_models
2+
from . import v3_0
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Copyright 2023-TODAY Akretion - Raphael Valyi <[email protected]>
2+
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
3+
4+
from odoo import fields, models
5+
6+
7+
class MdfeSpecMixin(models.AbstractModel):
8+
_description = "Abstract Model"
9+
_name = "spec.mixin.mdfe"
10+
_field_prefix = "mdfe30_"
11+
_schema_name = "mdfe"
12+
_schema_version = "3.0.0"
13+
_odoo_module = "l10n_br_mdfe"
14+
_spec_module = "odoo.addons.l10n_br_mdfe_spec.models.v3_0.mdfe_tipos_basico_v3_00"
15+
_binding_module = "nfelib.mdfe.bindings.v3_0.mdfe_tipos_basico_v3_00"
16+
_spec_tab_name = "mdfe"
17+
18+
brl_currency_id = fields.Many2one(
19+
comodel_name="res.currency",
20+
string="Moeda",
21+
# FIXME compute method is better, but not working in v14.
22+
default=lambda self: self.env.ref("base.BRL"),
23+
)
24+
25+
def _valid_field_parameter(self, field, name):
26+
if name in (
27+
"xsd_type",
28+
"xsd_required",
29+
"choice",
30+
"xsd_implicit",
31+
"xsd_choice_required",
32+
):
33+
return True
34+
else:
35+
return super()._valid_field_parameter(field, name)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from . import mdfe_tipos_basico_v3_00
2+
from . import mdfe_modal_aereo_v3_00
3+
from . import mdfe_modal_aquaviario_v3_00
4+
from . import mdfe_modal_ferroviario_v3_00
5+
from . import mdfe_modal_rodoviario_v3_00
Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
# Copyright 2023 Akretion - Raphaël Valyi <[email protected]>
2+
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
3+
# Generated by https://github.com/akretion/xsdata-odoo
4+
#
5+
import textwrap
6+
from odoo import fields, models
7+
8+
__NAMESPACE__ = "http://www.portalfiscal.inf.br/mdfe"
9+
10+
"Tipo do Componente"
11+
COMP_TPCOMP = [
12+
("01", "Vale Pedágio"),
13+
("02", "Impostos, taxas e contribuições"),
14+
("03", "Despesas (bancárias, meios de pagamento, outras)"),
15+
("99", "Outros"),
16+
]
17+
18+
"Descrição do Evento - “Pagamento Operação MDF-e”"
19+
EVPAGTOOPERMDFE_DESCEVENTO = [
20+
("Pagamento Operação MDF-e", "Pagamento Operação MDF-e"),
21+
("Pagamento Operacao MDF-e", "Pagamento Operacao MDF-e"),
22+
]
23+
24+
"Indicador da Forma de Pagamento"
25+
INFPAG_INDPAG = [
26+
("0", "Pagamento à Vista"),
27+
("1", "Pagamento à Prazo"),
28+
]
29+
30+
31+
class EvPagtoOperMdfe(models.AbstractModel):
32+
"""Schema XML de validação do evento de pagamento da operação de transporte
33+
110116"""
34+
35+
_description = textwrap.dedent(" %s" % (__doc__,))
36+
_name = "mdfe.30.evpagtoopermdfe"
37+
_inherit = "spec.mixin.mdfe"
38+
_binding_type = "EvPagtoOperMdfe"
39+
40+
mdfe30_descEvento = fields.Selection(
41+
EVPAGTOOPERMDFE_DESCEVENTO,
42+
string="Descrição do Evento",
43+
xsd_required=True,
44+
help="Descrição do Evento - “Pagamento Operação MDF-e”",
45+
)
46+
47+
mdfe30_nProt = fields.Char(
48+
string="Número do Protocolo de Status do MDF-e",
49+
xsd_required=True,
50+
xsd_type="TProt",
51+
help=(
52+
"Número do Protocolo de Status do MDF-e. \n1 posição tipo de "
53+
"autorizador (9 - SEFAZ Nacional ); \n2 posições ano;\n10 "
54+
"seqüencial no ano."
55+
),
56+
)
57+
58+
mdfe30_infViagens = fields.Many2one(
59+
comodel_name="mdfe.30.infviagens",
60+
string="Informações do total",
61+
xsd_required=True,
62+
help=(
63+
"Informações do total de viagens acobertadas pelo Evento "
64+
"“pagamento do frete”"
65+
),
66+
)
67+
68+
mdfe30_infPag = fields.One2many(
69+
"mdfe.30.evpagtoopermdfe_infpag",
70+
"mdfe30_infPag_evPagtoOperMDFe_id",
71+
string="Informações do Pagamento do Frete",
72+
)
73+
74+
75+
class InfViagens(models.AbstractModel):
76+
"""Informações do total de viagens acobertadas pelo Evento “pagamento do
77+
frete”"""
78+
79+
_description = textwrap.dedent(" %s" % (__doc__,))
80+
_name = "mdfe.30.infviagens"
81+
_inherit = "spec.mixin.mdfe"
82+
_binding_type = "EvPagtoOperMdfe.InfViagens"
83+
84+
mdfe30_qtdViagens = fields.Char(
85+
string="Quantidade total",
86+
xsd_required=True,
87+
help=("Quantidade total de viagens realizadas com o pagamento do Frete"),
88+
)
89+
90+
mdfe30_nroViagem = fields.Char(
91+
string="Número de referência da viagem",
92+
xsd_required=True,
93+
help="Número de referência da viagem do MDFe referenciado.",
94+
)
95+
96+
97+
class EvPagtoOperMdfeInfPag(models.AbstractModel):
98+
"Informações do Pagamento do Frete"
99+
_description = textwrap.dedent(" %s" % (__doc__,))
100+
_name = "mdfe.30.evpagtoopermdfe_infpag"
101+
_inherit = "spec.mixin.mdfe"
102+
_binding_type = "EvPagtoOperMdfe.InfPag"
103+
104+
mdfe30_infPag_evPagtoOperMDFe_id = fields.Many2one(
105+
comodel_name="mdfe.30.evpagtoopermdfe", xsd_implicit=True, ondelete="cascade"
106+
)
107+
mdfe30_xNome = fields.Char(
108+
string="Razão social ou Nome do responsavel",
109+
help="Razão social ou Nome do responsavel pelo pagamento",
110+
)
111+
112+
mdfe30_CPF = fields.Char(
113+
string="Número do CPF do responsável pelo pgto",
114+
choice="infpag",
115+
xsd_choice_required=True,
116+
xsd_type="TCpf",
117+
help=(
118+
"Número do CPF do responsável pelo pgto\nInformar os zeros não "
119+
"significativos."
120+
),
121+
)
122+
123+
mdfe30_CNPJ = fields.Char(
124+
string="Número do CNPJ do responsável pelo pgto",
125+
choice="infpag",
126+
xsd_choice_required=True,
127+
xsd_type="TCnpjOpc",
128+
help=(
129+
"Número do CNPJ do responsável pelo pgto\nInformar os zeros não "
130+
"significativos."
131+
),
132+
)
133+
134+
mdfe30_idEstrangeiro = fields.Char(
135+
string="Identificador do responsável pelo pgto",
136+
choice="infpag",
137+
xsd_choice_required=True,
138+
help=("Identificador do responsável pelo pgto em caso de ser estrangeiro"),
139+
)
140+
141+
mdfe30_comp = fields.One2many(
142+
"mdfe.30.evpagtoopermdfe_comp",
143+
"mdfe30_Comp_infPag_id",
144+
string="Componentes do Pagamentoi do Frete",
145+
)
146+
147+
mdfe30_vContrato = fields.Monetary(
148+
string="Valor Total do Contrato",
149+
xsd_required=True,
150+
xsd_type="TDec_1302",
151+
currency_field="brl_currency_id",
152+
)
153+
154+
mdfe30_indPag = fields.Selection(
155+
INFPAG_INDPAG,
156+
string="Indicador da Forma",
157+
xsd_required=True,
158+
help=(
159+
"Indicador da Forma de Pagamento:0-Pagamento à Vista;1-Pagamento à"
160+
" Prazo;"
161+
),
162+
)
163+
164+
mdfe30_vAdiant = fields.Monetary(
165+
string="Valor do Adiantamento",
166+
xsd_type="TDec_1302",
167+
currency_field="brl_currency_id",
168+
help="Valor do Adiantamento (usar apenas em pagamento à Prazo",
169+
)
170+
171+
mdfe30_infPrazo = fields.One2many(
172+
"mdfe.30.evpagtoopermdfe_infprazo",
173+
"mdfe30_infPrazo_infPag_id",
174+
string="Informações do pagamento a prazo",
175+
help=(
176+
"Informações do pagamento a prazo.\nInformar somente se indPag for"
177+
" à Prazo"
178+
),
179+
)
180+
181+
mdfe30_infBanc = fields.Many2one(
182+
comodel_name="mdfe.30.evpagtoopermdfe_infbanc",
183+
string="Informações bancárias",
184+
xsd_required=True,
185+
)
186+
187+
188+
class EvPagtoOperMdfeComp(models.AbstractModel):
189+
"Componentes do Pagamentoi do Frete"
190+
_description = textwrap.dedent(" %s" % (__doc__,))
191+
_name = "mdfe.30.evpagtoopermdfe_comp"
192+
_inherit = "spec.mixin.mdfe"
193+
_binding_type = "EvPagtoOperMdfe.InfPag.Comp"
194+
195+
mdfe30_Comp_infPag_id = fields.Many2one(
196+
comodel_name="mdfe.30.evpagtoopermdfe_infpag",
197+
xsd_implicit=True,
198+
ondelete="cascade",
199+
)
200+
mdfe30_tpComp = fields.Selection(
201+
COMP_TPCOMP,
202+
string="Tipo do Componente",
203+
xsd_required=True,
204+
help=(
205+
"Tipo do Componente\n01 - Vale Pedágio; \n02 - Impostos, taxas e "
206+
"contribuições; \n03 - Despesas (bancárias, meios de pagamento, "
207+
"outras)\n; 99 - Outros"
208+
),
209+
)
210+
211+
mdfe30_vComp = fields.Monetary(
212+
string="Valor do componente",
213+
xsd_required=True,
214+
xsd_type="TDec_1302",
215+
currency_field="brl_currency_id",
216+
)
217+
218+
mdfe30_xComp = fields.Char(string="Descrição do componente do tipo Outros")
219+
220+
221+
class EvPagtoOperMdfeInfPrazo(models.AbstractModel):
222+
"""Informações do pagamento a prazo.
223+
Informar somente se indPag for à Prazo"""
224+
225+
_description = textwrap.dedent(" %s" % (__doc__,))
226+
_name = "mdfe.30.evpagtoopermdfe_infprazo"
227+
_inherit = "spec.mixin.mdfe"
228+
_binding_type = "EvPagtoOperMdfe.InfPag.InfPrazo"
229+
230+
mdfe30_infPrazo_infPag_id = fields.Many2one(
231+
comodel_name="mdfe.30.evpagtoopermdfe_infpag",
232+
xsd_implicit=True,
233+
ondelete="cascade",
234+
)
235+
mdfe30_nParcela = fields.Char(string="Número da Parcela", xsd_required=True)
236+
237+
mdfe30_dVenc = fields.Date(
238+
string="Data de vencimento da Parcela",
239+
xsd_required=True,
240+
xsd_type="TData",
241+
help="Data de vencimento da Parcela (AAAA-MM-DD)",
242+
)
243+
244+
mdfe30_vParcela = fields.Monetary(
245+
string="Valor da Parcela",
246+
xsd_required=True,
247+
xsd_type="TDec_1302Opc",
248+
currency_field="brl_currency_id",
249+
)
250+
251+
252+
class EvPagtoOperMdfeInfBanc(models.AbstractModel):
253+
"Informações bancárias"
254+
_description = textwrap.dedent(" %s" % (__doc__,))
255+
_name = "mdfe.30.evpagtoopermdfe_infbanc"
256+
_inherit = "spec.mixin.mdfe"
257+
_binding_type = "EvPagtoOperMdfe.InfPag.InfBanc"
258+
259+
mdfe30_codBanco = fields.Char(
260+
string="Número do banco", choice="infbanc", xsd_choice_required=True
261+
)
262+
263+
mdfe30_codAgencia = fields.Char(
264+
string="Número da agência bancária", choice="infbanc", xsd_choice_required=True
265+
)
266+
267+
mdfe30_CNPJIPEF = fields.Char(
268+
string="Número do CNPJ da Instituição",
269+
choice="infbanc",
270+
xsd_choice_required=True,
271+
xsd_type="TCnpjOpc",
272+
help=(
273+
"Número do CNPJ da Instituição de Pagamento Eletrônico do "
274+
"Frete\nInformar os zeros não significativos."
275+
),
276+
)
277+
278+
mdfe30_PIX = fields.Char(
279+
string="Chave PIX",
280+
choice="infbanc",
281+
xsd_choice_required=True,
282+
help=(
283+
"Chave PIX\nInformar a chave PIX para recebimento do frete. \nPode"
284+
" ser email, CPF/ CNPJ (somente numeros), Telefone com a seguinte "
285+
"formatação (+5599999999999) ou a chave aleatória gerada pela "
286+
"instituição."
287+
),
288+
)

0 commit comments

Comments
 (0)