odoo-addon-l10n-br-fiscal 17.0.1.0.0.13__py3-none-any.whl → 17.0.4.0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. odoo/addons/l10n_br_fiscal/README.rst +1 -1
  2. odoo/addons/l10n_br_fiscal/__manifest__.py +1 -1
  3. odoo/addons/l10n_br_fiscal/constants/fiscal.py +0 -20
  4. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.document.type.csv +1 -0
  5. odoo/addons/l10n_br_fiscal/data/operation_data.xml +1 -1
  6. odoo/addons/l10n_br_fiscal/demo/fiscal_document_demo.xml +3 -91
  7. odoo/addons/l10n_br_fiscal/demo/fiscal_document_nfse_demo.xml +0 -4
  8. odoo/addons/l10n_br_fiscal/demo/fiscal_operation_demo.xml +2 -2
  9. odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +78 -54
  10. odoo/addons/l10n_br_fiscal/i18n/pt_BR.po +91 -60
  11. odoo/addons/l10n_br_fiscal/migrations/17.0.2.0.0/pre-migration.py +25 -0
  12. odoo/addons/l10n_br_fiscal/migrations/17.0.3.0.0/pre-migration.py +30 -0
  13. odoo/addons/l10n_br_fiscal/models/comment.py +2 -2
  14. odoo/addons/l10n_br_fiscal/models/document.py +31 -6
  15. odoo/addons/l10n_br_fiscal/models/document_line.py +49 -2
  16. odoo/addons/l10n_br_fiscal/models/document_line_mixin.py +63 -19
  17. odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py +99 -68
  18. odoo/addons/l10n_br_fiscal/models/document_mixin.py +3 -12
  19. odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py +33 -169
  20. odoo/addons/l10n_br_fiscal/models/document_related.py +1 -1
  21. odoo/addons/l10n_br_fiscal/models/document_serie.py +33 -0
  22. odoo/addons/l10n_br_fiscal/models/ibpt.py +1 -1
  23. odoo/addons/l10n_br_fiscal/models/icms_regulation.py +1 -1
  24. odoo/addons/l10n_br_fiscal/models/invalidate_number.py +4 -5
  25. odoo/addons/l10n_br_fiscal/models/operation_dashboard.py +1 -1
  26. odoo/addons/l10n_br_fiscal/models/product_template.py +1 -1
  27. odoo/addons/l10n_br_fiscal/models/res_partner.py +4 -0
  28. odoo/addons/l10n_br_fiscal/models/tax.py +7 -3
  29. odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_base.py +1 -1
  30. odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_credit.py +1 -1
  31. odoo/addons/l10n_br_fiscal/security/fiscal_security.xml +6 -16
  32. odoo/addons/l10n_br_fiscal/security/ir.model.access.csv +1 -2
  33. odoo/addons/l10n_br_fiscal/static/description/index.html +1 -1
  34. odoo/addons/l10n_br_fiscal/tests/__init__.py +1 -0
  35. odoo/addons/l10n_br_fiscal/tests/test_document_edition.py +138 -0
  36. odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py +3 -13
  37. odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_nfse.py +0 -1
  38. odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_serie.py +60 -0
  39. odoo/addons/l10n_br_fiscal/tests/test_tax_benefit.py +0 -1
  40. odoo/addons/l10n_br_fiscal/views/document_line_mixin_view.xml +0 -1
  41. odoo/addons/l10n_br_fiscal/views/document_line_view.xml +6 -4
  42. odoo/addons/l10n_br_fiscal/views/document_view.xml +10 -14
  43. odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +0 -9
  44. odoo/addons/l10n_br_fiscal/views/operation_dashboard_view.xml +3 -3
  45. odoo/addons/l10n_br_fiscal/views/product_product_view.xml +1 -1
  46. odoo/addons/l10n_br_fiscal/views/product_template_view.xml +1 -1
  47. odoo/addons/l10n_br_fiscal/views/res_partner_view.xml +3 -0
  48. odoo/addons/l10n_br_fiscal/wizards/base_wizard_mixin.py +1 -1
  49. {odoo_addon_l10n_br_fiscal-17.0.1.0.0.13.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/METADATA +2 -2
  50. {odoo_addon_l10n_br_fiscal-17.0.1.0.0.13.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/RECORD +52 -49
  51. {odoo_addon_l10n_br_fiscal-17.0.1.0.0.13.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/WHEEL +0 -0
  52. {odoo_addon_l10n_br_fiscal-17.0.1.0.0.13.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/top_level.txt +0 -0
@@ -356,6 +356,11 @@ msgstr ""
356
356
  msgid "A CST is necessary to create fiscal operations for your fiscal moves."
357
357
  msgstr ""
358
358
 
359
+ #. module: l10n_br_fiscal
360
+ #: model:ir.model.constraint,message:l10n_br_fiscal.constraint_l10n_br_fiscal_document_serie_document_serie_unique
361
+ msgid "A Fiscal Document Serie already exists for this document type."
362
+ msgstr ""
363
+
359
364
  #. module: l10n_br_fiscal
360
365
  #: model_terms:ir.actions.act_window,help:l10n_br_fiscal.legal_nature_action
361
366
  msgid ""
@@ -701,7 +706,6 @@ msgstr "Adicionar ao Montante do Documento?"
701
706
 
702
707
  #. module: l10n_br_fiscal
703
708
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__additional_data
704
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__additional_data
705
709
  msgid "Additional Data"
706
710
  msgstr "Dados Adicionais"
707
711
 
@@ -736,6 +740,7 @@ msgstr "Ajuste"
736
740
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_cst__cst_type__all
737
741
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_import_wizard_mixin__fiscal_operation_type__all
738
742
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_operation__fiscal_operation_type__all
743
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_nfe_import_xml__fiscal_operation_type__all
739
744
  #: model_terms:ir.ui.view,arch_db:l10n_br_fiscal.cfop_search
740
745
  msgid "All"
741
746
  msgstr "Todos"
@@ -757,11 +762,6 @@ msgstr ""
757
762
  msgid "All Serie for Documents supported by Brazilian Fiscal modulo for Odoo."
758
763
  msgstr ""
759
764
 
760
- #. module: l10n_br_fiscal
761
- #: model:ir.ui.menu,name:l10n_br_fiscal.document_all_menu
762
- msgid "All low level Documents"
763
- msgstr ""
764
-
765
765
  #. module: l10n_br_fiscal
766
766
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__allow_csll_irpj
767
767
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__allow_csll_irpj
@@ -772,8 +772,8 @@ msgstr "Permitir Csll Irpj"
772
772
  #. odoo-python
773
773
  #: code:addons/l10n_br_fiscal/models/tax_pis_cofins_base.py:0
774
774
  #: code:addons/l10n_br_fiscal/models/tax_pis_cofins_credit.py:0
775
- #: model:ir.model.constraint,message:l10n_br_fiscal.constraint_l10n_br_fiscal_tax_pis_cofins_base_l10n_br_fiscal_tax_pis_cofins_base_uniq
776
- #: model:ir.model.constraint,message:l10n_br_fiscal.constraint_l10n_br_fiscal_tax_pis_cofins_credit_l10n_br_fiscal_tax_pis_cofins_code_uniq
775
+ #: model:ir.model.constraint,message:l10n_br_fiscal.constraint_l10n_br_fiscal_tax_pis_cofins_base_code_unique
776
+ #: model:ir.model.constraint,message:l10n_br_fiscal.constraint_l10n_br_fiscal_tax_pis_cofins_credit_code_unique
777
777
  #, python-format
778
778
  msgid "Already exists with this code !"
779
779
  msgstr "Já existe com este código !"
@@ -816,14 +816,6 @@ msgstr "Total Fiscal"
816
816
  msgid "Amount Gross"
817
817
  msgstr "Total Bruto"
818
818
 
819
- #. module: l10n_br_fiscal
820
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__amount_tax
821
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__amount_tax
822
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__amount_tax
823
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__amount_tax
824
- msgid "Amount Tax"
825
- msgstr "Total de Imposto"
826
-
827
819
  #. module: l10n_br_fiscal
828
820
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__amount_tax_included
829
821
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__amount_tax_included
@@ -842,22 +834,6 @@ msgstr "Total Não incluído Impostos"
842
834
  msgid "Amount Taxed"
843
835
  msgstr "Total Tributado"
844
836
 
845
- #. module: l10n_br_fiscal
846
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__amount_total
847
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__amount_total
848
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__amount_total
849
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__amount_total
850
- msgid "Amount Total"
851
- msgstr "Valor Total"
852
-
853
- #. module: l10n_br_fiscal
854
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__amount_untaxed
855
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__amount_untaxed
856
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__amount_untaxed
857
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__amount_untaxed
858
- msgid "Amount Untaxed"
859
- msgstr "Total sem Impostos"
860
-
861
837
  #. module: l10n_br_fiscal
862
838
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_simplified_tax_range__amount_deduced
863
839
  msgid "Amount to be Deducted"
@@ -1654,8 +1630,8 @@ msgstr ""
1654
1630
  #: model:ir.model,name:l10n_br_fiscal.model_l10n_br_fiscal_city_taxation_code
1655
1631
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__city_taxation_code_id
1656
1632
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__city_taxation_code_id
1657
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_product_product__city_taxation_code_id
1658
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_product_template__city_taxation_code_id
1633
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_product_product__city_taxation_code_ids
1634
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_product_template__city_taxation_code_ids
1659
1635
  #: model:ir.ui.menu,name:l10n_br_fiscal.city_taxation_code_menu
1660
1636
  #: model_terms:ir.ui.view,arch_db:l10n_br_fiscal.tax_definition_form
1661
1637
  msgid "City Taxation Code"
@@ -1946,7 +1922,6 @@ msgid "Create new products."
1946
1922
  msgstr "Criar novos produtos."
1947
1923
 
1948
1924
  #. module: l10n_br_fiscal
1949
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_base_wizard_mixin__create_uid
1950
1925
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cest__create_uid
1951
1926
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cfop__create_uid
1952
1927
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_city_taxation_code__create_uid
@@ -1990,7 +1965,6 @@ msgid "Created by"
1990
1965
  msgstr "Criado por"
1991
1966
 
1992
1967
  #. module: l10n_br_fiscal
1993
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_base_wizard_mixin__create_date
1994
1968
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cest__create_date
1995
1969
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cfop__create_date
1996
1970
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_city_taxation_code__create_date
@@ -2055,7 +2029,6 @@ msgstr "Impostos personalizados"
2055
2029
 
2056
2030
  #. module: l10n_br_fiscal
2057
2031
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__customer_additional_data
2058
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__customer_additional_data
2059
2032
  msgid "Customer Additional Data"
2060
2033
  msgstr "Dados Adicionais do Cliente"
2061
2034
 
@@ -2280,7 +2253,6 @@ msgid "Discount Value"
2280
2253
  msgstr "Valor do desconto"
2281
2254
 
2282
2255
  #. module: l10n_br_fiscal
2283
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_base_wizard_mixin__display_name
2284
2256
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cest__display_name
2285
2257
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cfop__display_name
2286
2258
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_city_taxation_code__display_name
@@ -2523,13 +2495,6 @@ msgstr "Energia elétrica"
2523
2495
  msgid "Enviar"
2524
2496
  msgstr "Enviar"
2525
2497
 
2526
- #. module: l10n_br_fiscal
2527
- #. odoo-python
2528
- #: code:addons/l10n_br_fiscal/models/ibpt.py:0
2529
- #, python-format
2530
- msgid "Error in the request: {}"
2531
- msgstr "Erro na solicitação: {}"
2532
-
2533
2498
  #. module: l10n_br_fiscal
2534
2499
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__estimate_tax
2535
2500
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__estimate_tax
@@ -2750,7 +2715,6 @@ msgstr "Fiscal"
2750
2715
 
2751
2716
  #. module: l10n_br_fiscal
2752
2717
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__fiscal_additional_data
2753
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__fiscal_additional_data
2754
2718
  msgid "Fiscal Additional Data"
2755
2719
  msgstr "Dados Adicionais Fiscais"
2756
2720
 
@@ -2760,6 +2724,30 @@ msgstr "Dados Adicionais Fiscais"
2760
2724
  msgid "Fiscal Additional data manually entered by user"
2761
2725
  msgstr "Dados adicionais fiscais inseridos manualmente pelo usuário"
2762
2726
 
2727
+ #. module: l10n_br_fiscal
2728
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__fiscal_amount_tax
2729
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__fiscal_amount_tax
2730
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__fiscal_amount_tax
2731
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__fiscal_amount_tax
2732
+ msgid "Fiscal Amount Tax"
2733
+ msgstr ""
2734
+
2735
+ #. module: l10n_br_fiscal
2736
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__fiscal_amount_total
2737
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__fiscal_amount_total
2738
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__fiscal_amount_total
2739
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__fiscal_amount_total
2740
+ msgid "Fiscal Amount Total"
2741
+ msgstr ""
2742
+
2743
+ #. module: l10n_br_fiscal
2744
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__fiscal_amount_untaxed
2745
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line__fiscal_amount_untaxed
2746
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_line_mixin__fiscal_amount_untaxed
2747
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document_mixin__fiscal_amount_untaxed
2748
+ msgid "Fiscal Amount Untaxed"
2749
+ msgstr ""
2750
+
2763
2751
  #. module: l10n_br_fiscal
2764
2752
  #: model:ir.model,name:l10n_br_fiscal.model_l10n_br_fiscal_base_wizard_mixin
2765
2753
  msgid "Fiscal Base Wizard Mixin"
@@ -4263,7 +4251,6 @@ msgid "ICMSSN Credit Value"
4263
4251
  msgstr "Valor do Crédito de ICMSSN"
4264
4252
 
4265
4253
  #. module: l10n_br_fiscal
4266
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_base_wizard_mixin__id
4267
4254
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cest__id
4268
4255
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cfop__id
4269
4256
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_city_taxation_code__id
@@ -4851,6 +4838,7 @@ msgstr "Imunidade"
4851
4838
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_serie__fiscal_type__in
4852
4839
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_operation__fiscal_operation_type__in
4853
4840
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_tax_definition__type_in_out__in
4841
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_nfe_import_xml__fiscal_operation_type__in
4854
4842
  #, python-format
4855
4843
  msgid "In"
4856
4844
  msgstr "Entrada"
@@ -5067,7 +5055,6 @@ msgid "Last Period Payroll Amount"
5067
5055
  msgstr "Valor da folha de pagamento do último período"
5068
5056
 
5069
5057
  #. module: l10n_br_fiscal
5070
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_base_wizard_mixin__write_uid
5071
5058
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cest__write_uid
5072
5059
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cfop__write_uid
5073
5060
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_city_taxation_code__write_uid
@@ -5111,7 +5098,6 @@ msgid "Last Updated by"
5111
5098
  msgstr "Última Atualização por"
5112
5099
 
5113
5100
  #. module: l10n_br_fiscal
5114
- #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_base_wizard_mixin__write_date
5115
5101
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cest__write_date
5116
5102
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_cfop__write_date
5117
5103
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_city_taxation_code__write_date
@@ -5609,6 +5595,18 @@ msgstr "Imposto Nacional Simplificado"
5609
5595
  msgid "National Simplified Tax Range"
5610
5596
  msgstr "Faixa Nacional Simplificada de Impostos"
5611
5597
 
5598
+ #. module: l10n_br_fiscal
5599
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__activity_calendar_event_id
5600
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_icms_regulation__activity_calendar_event_id
5601
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_nbs__activity_calendar_event_id
5602
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_ncm__activity_calendar_event_id
5603
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_operation__activity_calendar_event_id
5604
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_operation_line__activity_calendar_event_id
5605
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_service_type__activity_calendar_event_id
5606
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_tax_definition__activity_calendar_event_id
5607
+ msgid "Next Activity Calendar Event"
5608
+ msgstr "Próximo Evento do Calendário de Atividades"
5609
+
5612
5610
  #. module: l10n_br_fiscal
5613
5611
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_document__activity_date_deadline
5614
5612
  #: model:ir.model.fields,field_description:l10n_br_fiscal.field_l10n_br_fiscal_icms_regulation__activity_date_deadline
@@ -5799,11 +5797,6 @@ msgstr "Não se aplica"
5799
5797
  msgid "Object"
5800
5798
  msgstr "Objeto"
5801
5799
 
5802
- #. module: l10n_br_fiscal
5803
- #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__res_company__processador_edoc__oca
5804
- msgid "Odoo Community"
5805
- msgstr ""
5806
-
5807
5800
  #. module: l10n_br_fiscal
5808
5801
  #: model_terms:ir.actions.act_window,help:l10n_br_fiscal.comment_action
5809
5802
  msgid "Odoo helps you easily track all activities related to a fiscal comment."
@@ -5958,6 +5951,7 @@ msgstr "Outros"
5958
5951
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_serie__fiscal_type__out
5959
5952
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_operation__fiscal_operation_type__out
5960
5953
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_tax_definition__type_in_out__out
5954
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_nfe_import_xml__fiscal_operation_type__out
5961
5955
  #, python-format
5962
5956
  msgid "Out"
5963
5957
  msgstr "Saída"
@@ -6613,6 +6607,12 @@ msgstr "RESMA"
6613
6607
  msgid "RIPI"
6614
6608
  msgstr "RIPI"
6615
6609
 
6610
+ #. module: l10n_br_fiscal
6611
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_res_partner__rntrc_code
6612
+ #: model:ir.model.fields,field_description:l10n_br_fiscal.field_res_users__rntrc_code
6613
+ msgid "RNTRC Code"
6614
+ msgstr ""
6615
+
6616
6616
  #. module: l10n_br_fiscal
6617
6617
  #: model:uom.uom,name:l10n_br_fiscal.UOM_ROLO
6618
6618
  msgid "ROLO"
@@ -8213,6 +8213,22 @@ msgstr ""
8213
8213
  msgid "You can delete only draft Invalidate Number Range !"
8214
8214
  msgstr ""
8215
8215
 
8216
+ #. module: l10n_br_fiscal
8217
+ #. odoo-python
8218
+ #: code:addons/l10n_br_fiscal/models/document_serie.py:0
8219
+ #, python-format
8220
+ msgid ""
8221
+ "You cannot change the code of a document serie %(name)s that is already in "
8222
+ "use."
8223
+ msgstr ""
8224
+
8225
+ #. module: l10n_br_fiscal
8226
+ #. odoo-python
8227
+ #: code:addons/l10n_br_fiscal/models/document_serie.py:0
8228
+ #, python-format
8229
+ msgid "You cannot change the internal sequence."
8230
+ msgstr ""
8231
+
8216
8232
  #. module: l10n_br_fiscal
8217
8233
  #. odoo-python
8218
8234
  #: code:addons/l10n_br_fiscal/models/operation_line.py:0
@@ -8278,6 +8294,7 @@ msgstr ""
8278
8294
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_import_wizard_mixin__state__confirm
8279
8295
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_status_wizard__state__confirm
8280
8296
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_invalidate_number_wizard__state__confirm
8297
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_nfe_import_xml__state__confirm
8281
8298
  msgid "confirm"
8282
8299
  msgstr ""
8283
8300
 
@@ -8293,9 +8310,15 @@ msgstr "dias"
8293
8310
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_import_wizard_mixin__state__done
8294
8311
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_status_wizard__state__done
8295
8312
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_invalidate_number_wizard__state__done
8313
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_nfe_import_xml__state__done
8296
8314
  msgid "done"
8297
8315
  msgstr ""
8298
8316
 
8317
+ #. module: l10n_br_fiscal
8318
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__res_company__processador_edoc__oca
8319
+ msgid "erpbrasil.edoc"
8320
+ msgstr "erpbrasil.edoc"
8321
+
8299
8322
  #. module: l10n_br_fiscal
8300
8323
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_base_wizard_mixin__state__init
8301
8324
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_cancel_wizard__state__init
@@ -8303,6 +8326,7 @@ msgstr ""
8303
8326
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_import_wizard_mixin__state__init
8304
8327
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_document_status_wizard__state__init
8305
8328
  #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_fiscal_invalidate_number_wizard__state__init
8329
+ #: model:ir.model.fields.selection,name:l10n_br_fiscal.selection__l10n_br_nfe_import_xml__state__init
8306
8330
  msgid "init"
8307
8331
  msgstr ""
8308
8332
 
@@ -8337,6 +8361,19 @@ msgstr "pis_wh"
8337
8361
  msgid "{} Tax Estimate Updated"
8338
8362
  msgstr "{} Estimativa de Imposto Atualizada"
8339
8363
 
8364
+ #~ msgid "Amount Tax"
8365
+ #~ msgstr "Total de Imposto"
8366
+
8367
+ #~ msgid "Amount Total"
8368
+ #~ msgstr "Valor Total"
8369
+
8370
+ #~ msgid "Amount Untaxed"
8371
+ #~ msgstr "Total sem Impostos"
8372
+
8373
+ #, python-format
8374
+ #~ msgid "Error in the request: {}"
8375
+ #~ msgstr "Erro na solicitação: {}"
8376
+
8340
8377
  #~ msgid "<i class=\"fa fa-arrow-right\"/> Generate an Access Key"
8341
8378
  #~ msgstr "<i class=\"fa fa-arrow-right\"/> Gerar uma chave de acesso"
8342
8379
 
@@ -8662,9 +8699,6 @@ msgstr "{} Estimativa de Imposto Atualizada"
8662
8699
  #~ msgid "Manualmente"
8663
8700
  #~ msgstr "Manualmente"
8664
8701
 
8665
- #~ msgid "Next Activity Calendar Event"
8666
- #~ msgstr "Próximo Evento do Calendário de Atividades"
8667
-
8668
8702
  #~ msgid ""
8669
8703
  #~ "Odoo helps you easily track all activities\n"
8670
8704
  #~ " related to a fiscal comment."
@@ -8791,9 +8825,6 @@ msgstr "{} Estimativa de Imposto Atualizada"
8791
8825
  #~ msgid "You need set a default fiscal document in your company !"
8792
8826
  #~ msgstr "Você precisa definir um documento fiscal padrão em sua empresa !"
8793
8827
 
8794
- #~ msgid "erpbrasil.edoc"
8795
- #~ msgstr "erpbrasil.edoc"
8796
-
8797
8828
  #~ msgid "Document Fiscal Mixin Methods"
8798
8829
  #~ msgstr "Métodos de Mixina Fiscal de Documentos"
8799
8830
 
@@ -0,0 +1,25 @@
1
+ # Copyright (C) 2025 - Engenere (<https://engenere.one>).
2
+ # @author Antônio S. Pereira Neto <neto@engenere.one>
3
+
4
+ from openupgradelib import openupgrade
5
+
6
+
7
+ @openupgrade.migrate()
8
+ def migrate(env, version):
9
+ """Rename product.template M2M field to the new pluralized name.
10
+
11
+ The underlying Many2many relation table remains the same because
12
+ Odoo derives it from model table names, not the field name. This
13
+ rename keeps references (e.g., stored views/filters) consistent.
14
+ """
15
+ openupgrade.rename_fields(
16
+ env,
17
+ [
18
+ (
19
+ "product.template",
20
+ "product.template",
21
+ "city_taxation_code_id",
22
+ "city_taxation_code_ids",
23
+ ),
24
+ ],
25
+ )
@@ -0,0 +1,30 @@
1
+ # Copyright (C) 2025 - Engenere (<https://engenere.one>).
2
+ # @author Antônio S. Pereira Neto <neto@engenere.one>
3
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
4
+
5
+ from openupgradelib import openupgrade
6
+
7
+
8
+ @openupgrade.migrate()
9
+ def migrate(env, version):
10
+ field_spec = [
11
+ (
12
+ "l10n_br_fiscal.document",
13
+ "l10n_br_fiscal_document",
14
+ "amount_untaxed",
15
+ "fiscal_amount_untaxed",
16
+ ),
17
+ (
18
+ "l10n_br_fiscal.document",
19
+ "l10n_br_fiscal_document",
20
+ "amount_tax",
21
+ "fiscal_amount_tax",
22
+ ),
23
+ (
24
+ "l10n_br_fiscal.document",
25
+ "l10n_br_fiscal_document",
26
+ "amount_total",
27
+ "fiscal_amount_total",
28
+ ),
29
+ ]
30
+ openupgrade.rename_fields(env, field_spec)
@@ -6,7 +6,7 @@ from datetime import datetime
6
6
 
7
7
  from dateutil.relativedelta import relativedelta
8
8
 
9
- from odoo import api, fields, models, tools
9
+ from odoo import api, fields, models
10
10
  from odoo.osv import expression
11
11
 
12
12
  from ..constants.fiscal import (
@@ -165,7 +165,7 @@ class Comment(models.Model):
165
165
 
166
166
  comments = [manual_comment] if manual_comment else []
167
167
  for record in self:
168
- template = mako_safe_env.from_string(tools.ustr(record.comment))
168
+ template = mako_safe_env.from_string(record.comment)
169
169
  comments.append(template.render(vals))
170
170
  return " - ".join(comments)
171
171
 
@@ -10,6 +10,8 @@ from odoo import _, api, fields, models
10
10
  from odoo.exceptions import ValidationError
11
11
 
12
12
  from ..constants.fiscal import (
13
+ COMMENT_TYPE_COMMERCIAL,
14
+ COMMENT_TYPE_FISCAL,
13
15
  DOCUMENT_ISSUER_COMPANY,
14
16
  DOCUMENT_ISSUER_DICT,
15
17
  DOCUMENT_ISSUER_PARTNER,
@@ -184,9 +186,9 @@ class Document(models.Model):
184
186
  )
185
187
 
186
188
  currency_id = fields.Many2one(
189
+ related="company_id.currency_id",
187
190
  comodel_name="res.currency",
188
191
  string="Currency",
189
- compute="_compute_currency_id",
190
192
  )
191
193
 
192
194
  # this related "state" field is required for the status bar widget
@@ -236,6 +238,10 @@ class Document(models.Model):
236
238
  string="Company ST State Tax Number",
237
239
  )
238
240
 
241
+ fiscal_additional_data = fields.Text()
242
+
243
+ customer_additional_data = fields.Text()
244
+
239
245
  @api.constrains("document_key")
240
246
  def _check_key(self):
241
247
  for record in self:
@@ -320,11 +326,6 @@ class Document(models.Model):
320
326
  self.fiscal_operation_id = False
321
327
  return {"domain": {"fiscal_operation_id": domain}}
322
328
 
323
- @api.depends("company_id")
324
- def _compute_currency_id(self):
325
- for doc in self:
326
- doc.currency_id = doc.company_id.currency_id or self.env.company.currency_id
327
-
328
329
  def _compute_document_name(self):
329
330
  self.ensure_one()
330
331
  name = ""
@@ -476,3 +477,27 @@ class Document(models.Model):
476
477
  def _compute_edoc_purpose(self):
477
478
  for record in self:
478
479
  record.edoc_purpose = record.fiscal_operation_id.edoc_purpose
480
+
481
+ def __document_comment_vals(self):
482
+ return {
483
+ "user": self.env.user,
484
+ "ctx": self._context,
485
+ "doc": self,
486
+ }
487
+
488
+ def _document_comment(self):
489
+ for d in self:
490
+ # Fiscal Comments
491
+ d.fiscal_additional_data = d.comment_ids.filtered(
492
+ lambda c: c.comment_type == COMMENT_TYPE_FISCAL
493
+ ).compute_message(
494
+ d.__document_comment_vals(), d.manual_fiscal_additional_data
495
+ )
496
+
497
+ # Commercial Comments
498
+ d.customer_additional_data = d.comment_ids.filtered(
499
+ lambda c: c.comment_type == COMMENT_TYPE_COMMERCIAL
500
+ ).compute_message(
501
+ d.__document_comment_vals(), d.manual_customer_additional_data
502
+ )
503
+ d.fiscal_line_ids._document_comment()
@@ -1,7 +1,7 @@
1
1
  # Copyright (C) 2013 Renato Lima - Akretion
2
2
  # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
3
 
4
- from odoo import fields, models
4
+ from odoo import api, fields, models
5
5
 
6
6
 
7
7
  class DocumentLine(models.Model):
@@ -30,7 +30,12 @@ class DocumentLine(models.Model):
30
30
  ondelete="cascade",
31
31
  )
32
32
 
33
- name = fields.Char()
33
+ name = fields.Char(
34
+ compute="_compute_name",
35
+ store=True,
36
+ precompute=True,
37
+ readonly=False,
38
+ )
34
39
 
35
40
  company_id = fields.Many2one(
36
41
  comodel_name="res.company",
@@ -50,6 +55,15 @@ class DocumentLine(models.Model):
50
55
  precompute=True,
51
56
  )
52
57
 
58
+ uom_id = fields.Many2one(
59
+ comodel_name="uom.uom",
60
+ string="UOM",
61
+ compute="_compute_uom_id",
62
+ store=True,
63
+ readonly=False,
64
+ precompute=True,
65
+ )
66
+
53
67
  quantity = fields.Float(default=1.0)
54
68
 
55
69
  ind_final = fields.Selection(related="document_id.ind_final")
@@ -67,3 +81,36 @@ class DocumentLine(models.Model):
67
81
  edoc_purpose = fields.Selection(
68
82
  related="document_id.edoc_purpose",
69
83
  )
84
+
85
+ additional_data = fields.Text()
86
+
87
+ @api.depends("product_id")
88
+ def _compute_name(self):
89
+ for line in self:
90
+ if line.product_id:
91
+ line.name = line.product_id.display_name
92
+ else:
93
+ line.name = False
94
+
95
+ @api.depends("product_id")
96
+ def _compute_uom_id(self):
97
+ for line in self:
98
+ if line.fiscal_operation_type == "in":
99
+ line.uom_id = line.product_id.uom_po_id
100
+ else:
101
+ line.uom_id = line.product_id.uom_id
102
+
103
+ def __document_comment_vals(self):
104
+ self.ensure_one()
105
+ return {
106
+ "user": self.env.user,
107
+ "ctx": self._context,
108
+ "doc": self.document_id if hasattr(self, "document_id") else None,
109
+ "item": self,
110
+ }
111
+
112
+ def _document_comment(self):
113
+ for line in self:
114
+ line.additional_data = line.comment_ids.compute_message(
115
+ line.__document_comment_vals(), line.manual_additional_data
116
+ )