Skip to content

Commit

Permalink
Merge pull request #28 from kmee/feature-di-float
Browse files Browse the repository at this point in the history
[REF] DI Monetary to Float
  • Loading branch information
mileo authored Oct 21, 2024
2 parents ea6e054 + 348b36e commit a9242ab
Show file tree
Hide file tree
Showing 10 changed files with 470 additions and 162 deletions.
93 changes: 43 additions & 50 deletions l10n_br_di/models/l10n_br_di_adicao.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,36 +35,32 @@ def _compute_totals(self):
di_adicao_mercadoria_ids = fields.One2many("l10n_br_di.mercadoria", "adicao_id")
di_adicao_valor_ids = fields.One2many("l10n_br_di.valor", "adicao_id")

cide_valor_aliquota_especifica = fields.Monetary(currency_field="currency_id")
cide_valor_devido = fields.Monetary(currency_field="currency_id")
cide_valor_recolher = fields.Monetary(currency_field="currency_id")
cide_valor_aliquota_especifica = fields.Float()
cide_valor_devido = fields.Float()
cide_valor_recolher = fields.Float()
codigo_relacao_comprador_vendedor = fields.Char()
codigo_vinculo_comprador_vendedor = fields.Char()
cofins_aliquota_ad_valorem = fields.Monetary(currency_field="currency_id")
cofins_aliquota_ad_valorem = fields.Float()
cofins_aliquota_especifica_quantidade_unidade = fields.Float()
cofins_aliquota_especifica_valor = fields.Monetary(currency_field="currency_id")
cofins_aliquota_especifica_valor = fields.Float()
cofins_aliquota_reduzida = fields.Char()
cofins_aliquota_valor_devido = fields.Monetary(currency_field="currency_id")
cofins_aliquota_valor_recolher = fields.Monetary(currency_field="currency_id")
cofins_aliquota_valor_devido = fields.Float()
cofins_aliquota_valor_recolher = fields.Float()
condicao_venda_incoterm = fields.Char()
condicao_venda_local = fields.Char()
condicao_venda_metodo_valoracao_codigo = fields.Char()
condicao_venda_metodo_valoracao_nome = fields.Char()
condicao_venda_moeda_codigo = fields.Char()
condicao_venda_moeda_nome = fields.Char()
condicao_venda_valor_moeda = fields.Monetary(
currency_field="moeda_venda_id",
)
condicao_venda_valor_reais = fields.Monetary(
currency_field="currency_id",
)
condicao_venda_valor_moeda = fields.Float()
condicao_venda_valor_reais = fields.Float()
dados_cambiais_cobertura_cambial_codigo = fields.Char()
dados_cambiais_cobertura_cambial_nome = fields.Char()
dados_cambiais_instituicao_financiadora_codigo = fields.Char()
dados_cambiais_instituicao_financiadora_nome = fields.Char()
dados_cambiais_motivo_sem_cobertura_codigo = fields.Char()
dados_cambiais_motivo_sem_cobertura_nome = fields.Char()
dados_cambiais_valor_real_cambio = fields.Monetary(currency_field="currency_id")
dados_cambiais_valor_real_cambio = fields.Float()
dados_carga_pais_procedencia_codigo = fields.Char()
dados_carga_urf_entrada_codigo = fields.Char()
dados_carga_via_transporte_codigo = fields.Char()
Expand All @@ -79,10 +75,10 @@ def _compute_totals(self):
dados_mercadoria_peso_liquido = fields.Char()
dcr_coeficiente_reducao = fields.Char()
dcr_identificacao = fields.Char()
dcr_valor_devido = fields.Monetary(currency_field="currency_id")
dcr_valor_dolar = fields.Monetary(currency_field="dolar_currency_id")
dcr_valor_real = fields.Monetary(currency_field="currency_id")
dcr_valor_recolher = fields.Monetary(currency_field="currency_id")
dcr_valor_devido = fields.Float()
dcr_valor_dolar = fields.Float()
dcr_valor_real = fields.Float()
dcr_valor_recolher = fields.Float()

fabricante_partner_id = fields.Many2one("res.partner")

Expand All @@ -100,9 +96,9 @@ def _compute_totals(self):

fornecedor_partner_id = fields.Many2one("res.partner")

frete_moeda_negociada_codigo = fields.Monetary(currency_field="currency_id")
frete_valor_moeda_negociada = fields.Monetary(currency_field="moeda_frete_id")
frete_valor_reais = fields.Monetary(currency_field="currency_id")
frete_moeda_negociada_codigo = fields.Float()
frete_valor_moeda_negociada = fields.Float()
frete_valor_reais = fields.Float()
ii_acordo_tarifario_aladi_codigo = fields.Char()
ii_acordo_tarifario_aladi_nome = fields.Char()
ii_acordo_tarifario_ato_legal_ano = fields.Char()
Expand All @@ -113,29 +109,27 @@ def _compute_totals(self):
ii_acordo_tarifario_tipo_codigo = fields.Char()
ii_acordo_tarifario_tipo_nome = fields.Char()
ii_aliquota_acordo = fields.Char()
ii_aliquota_ad_valorem = fields.Monetary(currency_field="currency_id")
ii_aliquota_ad_valorem = fields.Float()
ii_aliquota_percentual_reducao = fields.Float()
ii_aliquota_reduzida = fields.Char()
ii_aliquota_valor_calculado = fields.Monetary(currency_field="currency_id")
ii_aliquota_valor_devido = fields.Monetary(currency_field="currency_id")
ii_aliquota_valor_recolher = fields.Monetary(currency_field="currency_id")
ii_aliquota_valor_reduzido = fields.Monetary(currency_field="currency_id")
ii_aliquota_valor_calculado = fields.Float()
ii_aliquota_valor_devido = fields.Float()
ii_aliquota_valor_recolher = fields.Float()
ii_aliquota_valor_reduzido = fields.Float()
ii_base_calculo = fields.Char()
ii_fundamento_legal_codigo = fields.Char()
ii_motivo_admissao_temporaria_codigo = fields.Char()
ii_regime_tributacao_codigo = fields.Char()
ii_regime_tributacao_nome = fields.Char()
ipi_aliquota_ad_valorem = fields.Monetary(currency_field="currency_id")
ipi_aliquota_ad_valorem = fields.Float()
ipi_aliquota_especifica_capacidade_recipciente = fields.Char()
ipi_aliquota_especifica_quantidade_unidade_medida = fields.Float()
ipi_aliquota_especifica_tipo_recipiente_codigo = fields.Char()
ipi_aliquota_especifica_valor_unidade_medida = fields.Monetary(
currency_field="currency_id"
)
ipi_aliquota_especifica_valor_unidade_medida = fields.Float()
ipi_aliquota_nota_complementar_tipi = fields.Char()
ipi_aliquota_reduzida = fields.Char()
ipi_aliquota_valor_devido = fields.Monetary(currency_field="currency_id")
ipi_aliquota_valor_recolher = fields.Monetary(currency_field="currency_id")
ipi_aliquota_valor_devido = fields.Float()
ipi_aliquota_valor_recolher = fields.Float()
ipi_regime_tributacao_codigo = fields.Char()
ipi_regime_tributacao_nome = fields.Char()
numero_adicao = fields.Char()
Expand All @@ -148,26 +142,26 @@ def _compute_totals(self):
pis_cofins_base_calculo_aliquota_icms = fields.Char()
pis_cofins_base_calculo_fundamento_legal_codigo = fields.Char()
pis_cofins_base_calculo_percentual_reducao = fields.Float()
pis_cofins_base_calculo_valor = fields.Monetary(currency_field="currency_id")
pis_cofins_base_calculo_valor = fields.Float()
pis_cofins_fundamento_legal_reducao_codigo = fields.Char()
pis_cofins_regime_tributacao_codigo = fields.Char()
pis_cofins_regime_tributacao_nome = fields.Char()
pis_pasep_aliquota_ad_valorem = fields.Monetary(currency_field="currency_id")
pis_pasep_aliquota_ad_valorem = fields.Float()
pis_pasep_aliquota_especifica_quantidade_unidade = fields.Float()
pis_pasep_aliquota_especifica_valor = fields.Monetary(currency_field="currency_id")
pis_pasep_aliquota_especifica_valor = fields.Float()
pis_pasep_aliquota_reduzida = fields.Char()
pis_pasep_aliquota_valor_devido = fields.Monetary(currency_field="currency_id")
pis_pasep_aliquota_valor_recolher = fields.Monetary(currency_field="currency_id")
pis_pasep_aliquota_valor_devido = fields.Float()
pis_pasep_aliquota_valor_recolher = fields.Float()
relacao_comprador_vendedor = fields.Char()
seguro_moeda_negociada_codigo = fields.Char()
seguro_valor_moeda_negociada = fields.Monetary(currency_field="moeda_seguro_id")
seguro_valor_reais = fields.Monetary(currency_field="currency_id")
seguro_valor_moeda_negociada = fields.Float()
seguro_valor_reais = fields.Float()
sequencial_retificacao = fields.Char()
valor_multa_arecolher = fields.Monetary(currency_field="currency_id")
valor_multa_arecolher_ajustado = fields.Monetary(currency_field="currency_id")
valor_reais_frete_internacional = fields.Monetary(currency_field="currency_id")
valor_reais_seguro_internacional = fields.Monetary(currency_field="currency_id")
valor_total_condicao_venda = fields.Monetary(currency_field="currency_id")
valor_multa_arecolher = fields.Float()
valor_multa_arecolher_ajustado = fields.Float()
valor_reais_frete_internacional = fields.Float()
valor_reais_seguro_internacional = fields.Float()
valor_total_condicao_venda = fields.Float()
vinculo_comprador_vendedor = fields.Char()

currency_id = fields.Many2one("res.currency", related="declaracao_id.currency_id")
Expand All @@ -182,15 +176,14 @@ def _compute_totals(self):
taxa_cambio_frete = fields.Float()
taxa_cambio_seguro = fields.Float()

amount_add_ded_brl = fields.Monetary(
currency_field="currency_id",
amount_add_ded_brl = fields.Float(
compute="_compute_totals",
)

valor_taxa_siscomex = fields.Monetary(currency_field="currency_id")
valor_taxa_capatazia = fields.Monetary(currency_field="currency_id")
valor_taxa_afrmm = fields.Monetary(currency_field="currency_id")
valor_outros = fields.Monetary(currency_field="currency_id")
valor_taxa_siscomex = fields.Float()
valor_taxa_capatazia = fields.Float()
valor_taxa_afrmm = fields.Float()
valor_outros = fields.Float()

def _importa_declaracao(self, adicao):
mercadorias = []
Expand Down
38 changes: 21 additions & 17 deletions l10n_br_di/models/l10n_br_di_declaracao.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def _fiscal_operation_domain(self):
selection=[
("draft", "Draft"),
("open", "Open"),
("locked", "Loked"),
("locked", "Locked"),
("canceled", "Canceled"),
],
default="draft",
Expand Down Expand Up @@ -142,13 +142,13 @@ def _fiscal_operation_domain(self):
documento_chegada_carga_numero = fields.Char()

frete_collect = fields.Float()
frete_em_territorio_nacional = fields.Monetary(currency_field="dolar_currency_id")
frete_em_territorio_nacional = fields.Float()
frete_moeda_negociada_codigo = fields.Char()
frete_moeda_negociada_nome = fields.Char()
frete_prepaid = fields.Monetary(currency_field="dolar_currency_id")
frete_total_dolares = fields.Monetary(currency_field="dolar_currency_id")
frete_total_moeda = fields.Monetary(currency_field="freight_currency_id")
frete_total_reais = fields.Monetary()
frete_prepaid = fields.Float()
frete_total_dolares = fields.Float()
frete_total_moeda = fields.Float()
frete_total_reais = fields.Float()

icms = fields.Char()

Expand All @@ -166,10 +166,10 @@ def _fiscal_operation_domain(self):
importador_numero = fields.Char()
importador_numero_telefone = fields.Char()

local_descarga_total_dolares = fields.Monetary(currency_field="dolar_currency_id")
local_descarga_total_reais = fields.Monetary()
local_embarque_total_dolares = fields.Monetary(currency_field="dolar_currency_id")
local_embarque_total_reais = fields.Monetary()
local_descarga_total_dolares = fields.Float()
local_descarga_total_reais = fields.Float()
local_embarque_total_dolares = fields.Float()
local_embarque_total_reais = fields.Float()

modalidade_despacho_codigo = fields.Char()
modalidade_despacho_nome = fields.Char()
Expand All @@ -178,11 +178,9 @@ def _fiscal_operation_domain(self):

seguro_moeda_negociada_codigo = fields.Char()
seguro_moeda_negociada_nome = fields.Char()
seguro_total_dolares = fields.Monetary(currency_field="dolar_currency_id")
seguro_total_moeda_negociada = fields.Monetary(
currency_field="insurance_currency_id"
)
seguro_total_reais = fields.Monetary()
seguro_total_dolares = fields.Float()
seguro_total_moeda_negociada = fields.Float()
seguro_total_reais = fields.Float()

situacao_entrega_carga = fields.Char()
tipo_declaracao_codigo = fields.Char()
Expand Down Expand Up @@ -215,6 +213,7 @@ def importa_declaracao(self, arquivo=False):
vals = self._importa_declaracao(declaration_list)

if self:
self.state = "draft"
self.di_adicao_ids.unlink()
self.di_despacho_ids.unlink()
self.di_pagamento_ids.unlink()
Expand Down Expand Up @@ -350,8 +349,10 @@ def calcular_declaracao(self):
def gerar_fatura(self):
self.ensure_one()
self._validate_invoice_fields()
# if self.state != "open":
# raise UserError(_("Only open declarations can generate invoices."))

if not self.fiscal_operation_id:
raise UserError(_("Invoicing requires a fiscal operation"))

return self._generate_invoice()

def _validate_invoice_fields(self):
Expand All @@ -377,6 +378,9 @@ def _generate_invoice(self):
move_form.issuer = "company"
move_form.fiscal_operation_id = self.fiscal_operation_id

if self.fiscal_operation_id.state != "approved":
raise UserError(_("A operação fiscal selecionada não está aprovada."))

for mercadoria in self.di_mercadoria_ids:
with move_form.invoice_line_ids.new() as line_form:
line_form.product_id = mercadoria.product_id
Expand Down
35 changes: 20 additions & 15 deletions l10n_br_di/models/l10n_br_di_mercadoria.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@ def _compute_totals(self):
line.amount_subtotal = line.quantidade * line.valor_unitario
line.amount_subtotal_brl = line.quantidade * line.price_unit

line.unit_addition_deduction = (
line.addition_deduction = (
line.adicao_id.amount_add_ded_brl
* line.amount_subtotal_brl
/ line.adicao_id.condicao_venda_valor_reais
) / line.quantidade
)

line.unit_addition_deduction = line.addition_deduction / line.quantidade

line.amount_other = (
line.adicao_id.valor_outros
Expand Down Expand Up @@ -68,8 +70,7 @@ def _compute_totals(self):
descricao_mercadoria = fields.Char(string="Descrição")
quantidade = fields.Float(string="Qty")
unidade_medida = fields.Char(string="Uom")
valor_unitario = fields.Monetary(
currency_field="moeda_venda_id",
valor_unitario = fields.Float(
string="vUnMoeda",
digits=(12, 8),
)
Expand All @@ -83,32 +84,36 @@ def _compute_totals(self):

uom_id = fields.Many2one("uom.uom", string="Unit of Measure")

price_unit = fields.Monetary(
price_unit = fields.Float(
string="vUnBRL",
digits=(12, 8),
)

amount_subtotal = fields.Monetary(
amount_subtotal = fields.Float(
string="Subtotal (Moeda)",
digits=(12, 8),
currency_field="moeda_venda_id",
)
amount_subtotal_brl = fields.Monetary(string="Subtotal (BRL)", digits=(12, 8))
amount_subtotal_brl = fields.Float()

unit_addition_deduction = fields.Monetary(
string="+/-",
string="Valor +/- (Unitário)",
digits=(12, 8),
help="Equals to the sum of Valores divided by the sum of Mercadorias.Qty",
)

addition_deduction = fields.Monetary(
string="Valores +/-",
digits=(12, 8),
help="Equals to the sum of all di_valor_ids.valor divided by the sum of "
"di_mercadoria_ids.quantidade",
help="Equals to the sum of all Valores",
)

final_price_unit = fields.Monetary(string="vUnBRL Final", digits=(12, 8))
final_price_unit = fields.Float()

amount_other = fields.Monetary(string="vOutro")
amount_other = fields.Float()

amount_total = fields.Monetary(string="Total")
amount_total = fields.Float()

amount_afrmm = fields.Monetary(string="vAFRMM")
amount_afrmm = fields.Float()

def _importa_declaracao(self, mercadoria):
vals = {
Expand Down
6 changes: 3 additions & 3 deletions l10n_br_di/models/l10n_br_di_pagamento.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ class L10nBrDiPagamento(models.Model):
data_pagamento = fields.Date()
nome_tipo_pagamento = fields.Char()
numero_retificacao = fields.Char()
valor_juros_encargos = fields.Monetary()
valor_multa = fields.Monetary()
valor_receita = fields.Monetary()
valor_juros_encargos = fields.Float()
valor_multa = fields.Float()
valor_receita = fields.Float()

def _importa_declaracao(self, pagamento):
return {
Expand Down
4 changes: 2 additions & 2 deletions l10n_br_di/models/l10n_br_di_valor.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ class L10nBrDiValor(models.Model):
denominacao = fields.Char()
moeda_negociada_codigo = fields.Char()
moeda_negociada_nome = fields.Char()
valor_moeda_negociada = fields.Monetary(currency_field="moeda_negociada_id")
valor = fields.Monetary(currency_field="moeda_empresa_id")
valor_moeda_negociada = fields.Float()
valor = fields.Float()

moeda_negociada_id = fields.Many2one("res.currency")
moeda_empresa_id = fields.Many2one(
Expand Down
Loading

0 comments on commit a9242ab

Please sign in to comment.