diff --git a/l10n_br_delivery/README.rst b/l10n_br_delivery/README.rst new file mode 100644 index 000000000000..e5803b112aa8 --- /dev/null +++ b/l10n_br_delivery/README.rst @@ -0,0 +1,160 @@ +====================================== +delivery module Brazilian Localization +====================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:a42327d40a82670bd74fba8329ab1c5f0a9d5094b0523a19aee0433acc84d98b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--brazil-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-brazil/tree/15.0/l10n_br_delivery + :alt: OCA/l10n-brazil +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-brazil-15-0/l10n-brazil-15-0-l10n_br_delivery + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-brazil&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +*(summary: extends the delivery module to comply with the fiscal documents requirements)* + +Esse módulo localiza o módulo *delivery* para adequar as necessidades do Brasil. Em especial ele: + + * acrescenta informações para os Documentos Fiscais: Transportadora, responsabilidade do frete, volume e peso bruto. + * acrescenta na Transportadora o código ANTT e a lista de veículos. + * cria um modelo simples de veículo com os campos fiscais (placa, código ANTT, modelo, ano de fabricação...) + * desativa o método *_add_delivery_cost_to_so* da Expedição, pois o frete já esta corretamente informado no pedido. + * vale a pena notar que o rateamento do frete, seguro e outros custos já esta sendo feito pelo módulo l10n_br_fiscal, tanto para notas de saída como de entrada. + * se você for emitir NF-e, você precisa do módulo *l10n_br_delivery_nfe* que faz a integração deste módulo com o módulo *l10n_br_nfe*. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module depends on: + +* l10n_br_sale_stock +* delivery +* delivery_carrier_partner + +Configuration +============= + +Cadastre os Métodos de Envio que poderão ser selecionados nos Pedidos de Vendas, em: + + * Inventário > Configuração > Entrega > Métodos de Envio + +Veja que cada método é referente a uma Transportadora, também é possível cadastrar os Veículos da Transportadora em: + + * Inventário > Configuração > Entrega > Veículo + +Usage +===== + +Para usar esse modulo você precisa: + +* Criar um Pedido de Venda informar o Método de Entrega e o valor do Frete, se necessário os valores de Seguro e Outros Custos. + +Known issues / Roadmap +====================== + +* Integrar o modulo com os metódos de calculo automáticos do modulo delivery, hoje o usuário deve informar a Transportadora e o valor do Frete é informado manualmente. + +Changelog +========= + +14.0.1.0.0 (2022-09-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Migration. + +12.0.1.0.0 (2021-08-28) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Migration + +8.0.1.0.0 (2021-01-06) +~~~~~~~~~~~~~~~~~~~~~~ + +* 1st version + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* `Akretion `_: + + * Renato Lima + * Magno Costa + +* `KMEE `_: + + * Diego Paradeda + * Gabriel Cardoso de Faria + * Luis Otavio Malta Conceição + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-renatonlima| image:: https://github.com/renatonlima.png?size=40px + :target: https://github.com/renatonlima + :alt: renatonlima +.. |maintainer-mbcosta| image:: https://github.com/mbcosta.png?size=40px + :target: https://github.com/mbcosta + :alt: mbcosta + +Current `maintainers `__: + +|maintainer-renatonlima| |maintainer-mbcosta| + +This module is part of the `OCA/l10n-brazil `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_br_delivery/__init__.py b/l10n_br_delivery/__init__.py new file mode 100644 index 000000000000..0650744f6bc6 --- /dev/null +++ b/l10n_br_delivery/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/l10n_br_delivery/__manifest__.py b/l10n_br_delivery/__manifest__.py new file mode 100644 index 000000000000..b34b40723035 --- /dev/null +++ b/l10n_br_delivery/__manifest__.py @@ -0,0 +1,36 @@ +# Copyright (C) 2010 Renato Lima - Akretion +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "delivery module Brazilian Localization", + "license": "AGPL-3", + "author": "Akretion, Odoo Community Association (OCA)", + "maintainers": ["renatonlima", "mbcosta"], + "website": "https://github.com/OCA/l10n-brazil", + "version": "15.0.1.0.0", + "development_status": "Alpha", + "depends": [ + "l10n_br_sale_stock", + "delivery", + "delivery_carrier_partner", + ], + "data": [ + # Data + "data/res_config_settings_data.xml", + "data/account_incoterms_data.xml", + # View + "views/delivery_carrier_views.xml", + "views/l10n_br_delivery_view.xml", + "views/sale_order_view.xml", + "views/account_incoterms_view.xml", + "views/stock_picking_view.xml", + # Security + "security/ir.model.access.csv", + ], + "demo": [ + "demo/l10n_br_delivery_demo.xml", + "demo/sale_order_demo.xml", + ], + "category": "Localization", + "installable": True, +} diff --git a/l10n_br_delivery/data/account_incoterms_data.xml b/l10n_br_delivery/data/account_incoterms_data.xml new file mode 100644 index 000000000000..b0ae17919921 --- /dev/null +++ b/l10n_br_delivery/data/account_incoterms_data.xml @@ -0,0 +1,75 @@ + + + + + + + 1 + + + + + + 0 + + + + + diff --git a/l10n_br_delivery/data/res_config_settings_data.xml b/l10n_br_delivery/data/res_config_settings_data.xml new file mode 100644 index 000000000000..72483eee2552 --- /dev/null +++ b/l10n_br_delivery/data/res_config_settings_data.xml @@ -0,0 +1,15 @@ + + + + + True + + + + + + + diff --git a/l10n_br_delivery/demo/l10n_br_delivery_demo.xml b/l10n_br_delivery/demo/l10n_br_delivery_demo.xml new file mode 100644 index 000000000000..d943aa94a813 --- /dev/null +++ b/l10n_br_delivery/demo/l10n_br_delivery_demo.xml @@ -0,0 +1,127 @@ + + + + + + Transportadora - Teste + Transportadora - Teste + 21.221.265/0001-90 + Estrada do Caminho Velho + 1 + Jardim Nova Cidade + + + + 07252-312 + + www.transportadora.com.br + (11) 9999-9999 + teste@teste.com.br + 115.106.496.207 + + + + + + + Teste - Veículo da Transportadora 1 + Teste - Veículo da Transportadora 1 + ABC1234 + Teste - Motorista 1 + Teste - Codigo RTNC 1 + + + + + 2000 + 2001 + bau + + + + Teste - Veículo da Transportadora 2 + Teste - Veículo da Transportadora 2 + DEF5678 + Teste - Motorista 2 + Teste - Codigo RTNC 2 + + + + + 2010 + 2011 + bau + + + + + Teste - l10n_br_delivery + 10.0 + 3 + fixed + + + Teste - Código ANTT + + + + + + + Starting Inventory - l10n_br_delivery + confirm + + + + + + + + + 100 + + + + + + + + 100 + + + + + + + + + + + 3.0 + 1 + + + + + 3.0 + 1 + + + diff --git a/l10n_br_delivery/demo/sale_order_demo.xml b/l10n_br_delivery/demo/sale_order_demo.xml new file mode 100644 index 000000000000..a3394462ed11 --- /dev/null +++ b/l10n_br_delivery/demo/sale_order_demo.xml @@ -0,0 +1,75 @@ + + + + + + Main l10n_br_delivery - Produtos + + + + + + + draft + + TESTE + + + + + + + + Office Chair + + 2 + + 500 + out + + + 10 + 20 + 30 + + + + + + + + + + + + + + + + + Office Lamp + + 2 + + 500 + out + + + 5 + 10 + 15 + + + + + + + + + + + + + + + diff --git a/l10n_br_delivery/i18n/l10n_br_delivery.pot b/l10n_br_delivery/i18n/l10n_br_delivery.pot new file mode 100644 index 000000000000..efcbebcfa6b0 --- /dev/null +++ b/l10n_br_delivery/i18n/l10n_br_delivery.pot @@ -0,0 +1,347 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_br_delivery +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__0 +msgid "0 - Contratação do Frete por conta do Remetente (CIF)" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__1 +msgid "1 - Contratação do Frete por conta do destinatário/remetente (FOB)" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__2 +msgid "2 - Contratação do Frete por conta de terceiros" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__3 +msgid "3 - Transporte próprio por conta do remetente" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__4 +msgid "4 - Transporte próprio por conta do destinatário" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__9 +msgid "9 - Sem Ocorrência de transporte." +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__rntc_code +msgid "ANTT Code" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__active +msgid "Active" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__amount_gross_weight +msgid "Amount Gross Weight" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__amount_volume +msgid "Amount Volume" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__manufacture_year +msgid "Ano de Fabricação" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__model_year +msgid "Ano do Modelo" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__l10n_br_delivery_carrier_vehicle__type__bau +msgid "Caminhão Baú" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_bank_statement_line__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_payment__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_contract_contract__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_pos_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_purchase_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_repair_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_blanket_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__carrier_id +msgid "Carrier" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_l10n_br_delivery_carrier_vehicle +msgid "Carrier Vehicle" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__city_id +msgid "City" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__antt_code +msgid "Codigo ANTT" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__country_id +msgid "Country" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__create_date +msgid "Created on" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__carrier_id +msgid "Delivery Method" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__description +msgid "Description" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_l10n_br_fiscal_document_mixin_fields +msgid "Document Fiscal Mixin Fields" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__driver +msgid "Driver" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_order__carrier_id +msgid "Fill this field if you plan to invoice the shipping based on picking." +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_bank_statement_line__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_bank_statement_line__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_payment__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_payment__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document__incoterm_id +msgid "Fiscal Inconterm" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms__freight_responsibility +msgid "Frete por Conta" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__id +msgid "ID" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_contract_contract__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_contract_contract__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_pos_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_pos_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_purchase_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_purchase_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_repair_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_repair_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_blanket_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_blanket_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__incoterm_id +msgid "Incoterm" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_account_incoterms +msgid "Incoterms" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,help:l10n_br_delivery.field_account_incoterms__freight_responsibility +msgid "Informação usada na emissão de Documentos Fiscais" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,help:l10n_br_delivery.field_account_bank_statement_line__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_bank_statement_line__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_move__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_move__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_payment__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_payment__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_contract_contract__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_contract_contract__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_pos_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_pos_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_purchase_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_purchase_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_repair_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_repair_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_blanket_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_blanket_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_stock_picking__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_stock_picking__incoterm_id +msgid "" +"International Commercial Terms are a series of predefined commercial terms " +"used in international transactions." +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__type +msgid "Model Type" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__name +msgid "Name" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__plate +msgid "Placa" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: l10n_br_delivery +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_vehicle_form +msgid "Shipping Company" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_delivery_carrier +msgid "Shipping Methods" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__state_id +msgid "State" +msgstr "" + +#. module: l10n_br_delivery +#: model:delivery.carrier,name:l10n_br_delivery.test_br_delivery_carrier +msgid "Teste - l10n_br_delivery" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.actions.act_window,name:l10n_br_delivery.action_l10n_br_delivery_carrier_vehicle_form +#: model:ir.ui.menu,name:l10n_br_delivery.menu_l10n_br_delivery_carrier_vehicle_form +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_vehicle_form +msgid "Vehicle" +msgstr "" + +#. module: l10n_br_delivery +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_vehicle_form +msgid "Vehicle Data" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__vehicle_ids +msgid "Vehicles" +msgstr "" + +#. module: l10n_br_delivery +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_form_view +msgid "[('supplier', '=', True)]" +msgstr "" diff --git a/l10n_br_delivery/i18n/pt_BR.po b/l10n_br_delivery/i18n/pt_BR.po new file mode 100644 index 000000000000..fad982e6bf4d --- /dev/null +++ b/l10n_br_delivery/i18n/pt_BR.po @@ -0,0 +1,414 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_br_delivery +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-03-29 18:54+0000\n" +"Last-Translator: Marcel Savegnago \n" +"Language-Team: none\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__0 +msgid "0 - Contratação do Frete por conta do Remetente (CIF)" +msgstr "0 - Contratação do Frete por conta do Remetente (CIF)" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__1 +msgid "1 - Contratação do Frete por conta do destinatário/remetente (FOB)" +msgstr "1 - Contratação do Frete por conta do destinatário/remetente (FOB)" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__2 +msgid "2 - Contratação do Frete por conta de terceiros" +msgstr "2 - Contratação do Frete por conta de terceiros" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__3 +msgid "3 - Transporte próprio por conta do remetente" +msgstr "3 - Transporte próprio por conta do remetente" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__4 +#, fuzzy +msgid "4 - Transporte próprio por conta do destinatário" +msgstr "4 - Transporte próprio por conta do destinatário" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__account_incoterms__freight_responsibility__9 +#, fuzzy +msgid "9 - Sem Ocorrência de transporte." +msgstr "9 - Sem Ocorrência de transporte." + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__rntc_code +msgid "ANTT Code" +msgstr "Código ANTT" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__active +msgid "Active" +msgstr "Ativo" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__amount_gross_weight +msgid "Amount Gross Weight" +msgstr "Valor Peso Bruto" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__amount_volume +msgid "Amount Volume" +msgstr "Valor do Volume" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__manufacture_year +#, fuzzy +msgid "Ano de Fabricação" +msgstr "Ano de Fabricação" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__model_year +#, fuzzy +msgid "Ano do Modelo" +msgstr "Ano do Modelo" + +#. module: l10n_br_delivery +#: model:ir.model.fields.selection,name:l10n_br_delivery.selection__l10n_br_delivery_carrier_vehicle__type__bau +#, fuzzy +msgid "Caminhão Baú" +msgstr "Caminhão Baú" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_bank_statement_line__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_payment__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_contract_contract__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_pos_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_purchase_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_repair_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_blanket_order__carrier_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__carrier_id +msgid "Carrier" +msgstr "Transportadora" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_l10n_br_delivery_carrier_vehicle +msgid "Carrier Vehicle" +msgstr "Veículo da Transportadora" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__city_id +msgid "City" +msgstr "Cidade" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__antt_code +msgid "Codigo ANTT" +msgstr "Código ANTT" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__country_id +msgid "Country" +msgstr "País" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__carrier_id +msgid "Delivery Method" +msgstr "Método de Entrega" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__description +msgid "Description" +msgstr "Descrição" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__display_name +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__display_name +msgid "Display Name" +msgstr "Nome Exibido" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_l10n_br_fiscal_document_mixin_fields +msgid "Document Fiscal Mixin Fields" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__driver +msgid "Driver" +msgstr "Motorista" + +#. module: l10n_br_delivery +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_order__carrier_id +msgid "Fill this field if you plan to invoice the shipping based on picking." +msgstr "" +"Preencha este campo se você planeja faturar a entrega baseada no picking." + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_bank_statement_line__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_bank_statement_line__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_payment__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_payment__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document__incoterm_id +msgid "Fiscal Inconterm" +msgstr "" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms__freight_responsibility +#, fuzzy +msgid "Frete por Conta" +msgstr "Frete por Conta" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__id +#, fuzzy +msgid "ID" +msgstr "ID" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_contract_contract__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_contract_contract__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_pos_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_pos_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_purchase_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_purchase_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_repair_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_repair_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_blanket_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_blanket_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order__incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__fiscal_incoterm_id +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking__incoterm_id +#, fuzzy +msgid "Incoterm" +msgstr "Incoterm" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_account_incoterms +#, fuzzy +msgid "Incoterms" +msgstr "Incoterms" + +#. module: l10n_br_delivery +#: model:ir.model.fields,help:l10n_br_delivery.field_account_incoterms__freight_responsibility +#, fuzzy +msgid "Informação usada na emissão de Documentos Fiscais" +msgstr "Informação usada na emissão de Documentos Fiscais" + +#. module: l10n_br_delivery +#: model:ir.model.fields,help:l10n_br_delivery.field_account_bank_statement_line__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_bank_statement_line__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_move__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_move__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_payment__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_account_payment__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_contract_contract__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_contract_contract__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_pos_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_pos_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_purchase_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_purchase_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_repair_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_repair_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_blanket_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_blanket_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_order__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_sale_order__incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_stock_picking__fiscal_incoterm_id +#: model:ir.model.fields,help:l10n_br_delivery.field_stock_picking__incoterm_id +msgid "" +"International Commercial Terms are a series of predefined commercial terms " +"used in international transactions." +msgstr "" +"International Commercial Terms são uma série de termos comerciais " +"predefinidos utilizados em transações internacionais." + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_account_move +msgid "Journal Entry" +msgstr "Lançamento de Diário" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_incoterms____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_account_move____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_fiscal_document_mixin_fields____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_sale_order____last_update +#: model:ir.model.fields,field_description:l10n_br_delivery.field_stock_picking____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__write_uid +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__write_date +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__type +msgid "Model Type" +msgstr "Tipo de Modelo" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__name +msgid "Name" +msgstr "Nome" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__plate +#, fuzzy +msgid "Placa" +msgstr "Placa" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_sale_order +msgid "Sales Order" +msgstr "Pedido de Vendas" + +#. module: l10n_br_delivery +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_vehicle_form +msgid "Shipping Company" +msgstr "Empresa de Transporte" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_delivery_carrier +msgid "Shipping Methods" +msgstr "Métodos de Transporte" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_l10n_br_delivery_carrier_vehicle__state_id +msgid "State" +msgstr "Estado" + +#. module: l10n_br_delivery +#: model:delivery.carrier,name:l10n_br_delivery.test_br_delivery_carrier +#, fuzzy +msgid "Teste - l10n_br_delivery" +msgstr "Teste - l10n_br_delivery" + +#. module: l10n_br_delivery +#: model:ir.model,name:l10n_br_delivery.model_stock_picking +msgid "Transfer" +msgstr "Transferir" + +#. module: l10n_br_delivery +#: model:ir.actions.act_window,name:l10n_br_delivery.action_l10n_br_delivery_carrier_vehicle_form +#: model:ir.ui.menu,name:l10n_br_delivery.menu_l10n_br_delivery_carrier_vehicle_form +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_vehicle_form +msgid "Vehicle" +msgstr "Veículo" + +#. module: l10n_br_delivery +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_vehicle_form +msgid "Vehicle Data" +msgstr "Dados do Veículo" + +#. module: l10n_br_delivery +#: model:ir.model.fields,field_description:l10n_br_delivery.field_delivery_carrier__vehicle_ids +msgid "Vehicles" +msgstr "Veículos" + +#. module: l10n_br_delivery +#: model_terms:ir.ui.view,arch_db:l10n_br_delivery.l10n_br_delivery_carrier_form_view +#, fuzzy +msgid "[('supplier', '=', True)]" +msgstr "[('supplier', '=', True)]" + +#~ msgid "Document Fiscal Mixin" +#~ msgstr "Mixin Fiscal de Documentos" + +#~ msgid "Brazil" +#~ msgstr "Brasil" + +#, fuzzy +#~ msgid "Guarulhos" +#~ msgstr "Guarulhos" + +#~ msgid "Fiscal Document" +#~ msgstr "Documento Fiscal" + +#~ msgid "Freight" +#~ msgstr "Frete" + +#~ msgid "Freight Value" +#~ msgstr "Valor do Frete" + +#~ msgid "Insurance" +#~ msgstr "Seguros" + +#~ msgid "Insurance Value" +#~ msgstr "Valor do Seguro" + +#, python-format +#~ msgid "No carrier set for this order." +#~ msgstr "Nenhum operadora definida para esta ordem." + +#~ msgid "Other Costs" +#~ msgstr "Outros Custos" + +#, python-format +#~ msgid "" +#~ "Please use \"Check price\" in order to compute a shipping price for this " +#~ "quotation." +#~ msgstr "" +#~ "Por favor, use \"Verificar preço\" para calcular um preço de envio para " +#~ "esta cotação." + +#~ msgid "Sale Order" +#~ msgstr "Pedido de Venda" + +#, python-format +#~ msgid "You can add delivery price only on unconfirmed quotations." +#~ msgstr "" +#~ "Você pode adicionar preço de entrega apenas em cotações não confirmadas." diff --git a/l10n_br_delivery/models/__init__.py b/l10n_br_delivery/models/__init__.py new file mode 100644 index 000000000000..9e6eb6f41cee --- /dev/null +++ b/l10n_br_delivery/models/__init__.py @@ -0,0 +1,9 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import account_move +from . import delivery_carrier +from . import vehicle +from . import sale_order +from . import stock_picking +from . import account_incoterms +from . import fiscal_document_mixin diff --git a/l10n_br_delivery/models/account_incoterms.py b/l10n_br_delivery/models/account_incoterms.py new file mode 100644 index 000000000000..220f486f8ee5 --- /dev/null +++ b/l10n_br_delivery/models/account_incoterms.py @@ -0,0 +1,27 @@ +# Copyright (C) 2021-Today - Akretion (). +# @author Magno Costa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + +# Modalidade do frete +MODFRETE_TRANSP = [ + ("0", "0 - Contratação do Frete por conta do Remetente (CIF)"), + ("1", "1 - Contratação do Frete por conta do" " destinatário/remetente (FOB)"), + ("2", "2 - Contratação do Frete por conta de terceiros"), + ("3", "3 - Transporte próprio por conta do remetente"), + ("4", "4 - Transporte próprio por conta do destinatário"), + ("9", "9 - Sem Ocorrência de transporte."), +] + + +class AccountIncoterms(models.Model): + _inherit = "account.incoterms" + + freight_responsibility = fields.Selection( + selection=MODFRETE_TRANSP, + string="Frete por Conta", + help="Informação usada na emissão de Documentos Fiscais", + required=True, + default="0", + ) diff --git a/l10n_br_delivery/models/account_move.py b/l10n_br_delivery/models/account_move.py new file mode 100644 index 000000000000..78bbb527b7ae --- /dev/null +++ b/l10n_br_delivery/models/account_move.py @@ -0,0 +1,12 @@ +# Copyright 2019 Akretion (Raphaël Valyi ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class AccountMove(models.Model): + _inherit = "account.move" + + @api.model + def _shadowed_fields(self): + return super()._shadowed_fields() + ["incoterm_id"] diff --git a/l10n_br_delivery/models/delivery_carrier.py b/l10n_br_delivery/models/delivery_carrier.py new file mode 100644 index 000000000000..f783c639ff02 --- /dev/null +++ b/l10n_br_delivery/models/delivery_carrier.py @@ -0,0 +1,19 @@ +# Copyright (C) 2010 Renato Lima - Akretion +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class Carrier(models.Model): + _inherit = "delivery.carrier" + + antt_code = fields.Char( + string="Codigo ANTT", + size=32, + ) + + vehicle_ids = fields.One2many( + comodel_name="l10n_br_delivery.carrier.vehicle", + inverse_name="carrier_id", + string="Vehicles", + ) diff --git a/l10n_br_delivery/models/fiscal_document_mixin.py b/l10n_br_delivery/models/fiscal_document_mixin.py new file mode 100644 index 000000000000..70582fcf4c3d --- /dev/null +++ b/l10n_br_delivery/models/fiscal_document_mixin.py @@ -0,0 +1,29 @@ +# Copyright (C) 2021-Today - Akretion (). +# @author Magno Costa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FiscalDocumentMixin(models.AbstractModel): + _inherit = "l10n_br_fiscal.document.mixin.fields" + + def _get_default_incoterm(self): + return self.env.user.company_id.incoterm_id + + # Esta sendo implementado aqui para existir nos objetos herdados + incoterm_id = fields.Many2one( + comodel_name="account.incoterms", + string="Incoterm", + help="International Commercial Terms are a series of" + " predefined commercial terms used in international" + " transactions.", + ) + + fiscal_incoterm_id = fields.Many2one(related="incoterm_id") + + carrier_id = fields.Many2one( + comodel_name="delivery.carrier", + string="Carrier", + ondelete="restrict", + ) diff --git a/l10n_br_delivery/models/sale_order.py b/l10n_br_delivery/models/sale_order.py new file mode 100644 index 000000000000..44905b47c35f --- /dev/null +++ b/l10n_br_delivery/models/sale_order.py @@ -0,0 +1,57 @@ +# Copyright 2020 KMEE INFORMATICA LTDA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + # A partir da v9 existe apenas o campo weight, que é referente ao + # Peso Bruto/Gross Weight https://github.com/OCA/product-attribute/pull/894 + # Caso a implementação precise do Peso Liquido o modulo do link deve ser + # cosiderado. + # Esse modulo l10n_br_delivery é pensando para ter aderencia com o + # product_net_weight (modulo link acima). + amount_gross_weight = fields.Float(compute="_compute_amount_gross_weight") + + amount_volume = fields.Float(compute="_compute_amount_volume") + + # Devido o campo no sale_order chamar apenas incoterm + # ao inves de incoterm_id como o padrão, a copia do + # arquivo não acontece, por isso é preciso fazer o + # related abaixo + # TODO: Verificar na migração se isso foi alterado + incoterm_id = fields.Many2one(related="incoterm") + + @api.depends("order_line") + def _compute_delivery_state(self): + for order in self: + order.delivery_set = True if order.carrier_id else False + + def set_delivery_line(self, carrier, amount): + # Remove delivery products from the sales order + self._remove_delivery_line() + + for order in self: + order.carrier_id = carrier.id + order.amount_freight_value = amount + if order.delivery_costs == "line": + order.delivery_costs = "total" + order.amount_freight_value = amount + order.delivery_costs = "line" + return True + + def _compute_amount_gross_weight(self): + for record in self: + amount_gross_weight = 0.0 + for line in record.order_line: + amount_gross_weight += line.product_qty * line.product_id.weight + record.amount_gross_weight = amount_gross_weight + + def _compute_amount_volume(self): + for record in self: + amount_volume = 0.0 + for line in record.order_line: + amount_volume += line.product_qty * line.product_id.volume + record.amount_volume = amount_volume diff --git a/l10n_br_delivery/models/stock_picking.py b/l10n_br_delivery/models/stock_picking.py new file mode 100644 index 000000000000..a88f937d201c --- /dev/null +++ b/l10n_br_delivery/models/stock_picking.py @@ -0,0 +1,13 @@ +# Copyright 2020 KMEE INFORMATICA LTDA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + def _add_delivery_cost_to_so(self): + # disable this function since, if called, adds a delivery line to + # order -> strategy no longer used, view amount_freight + return diff --git a/l10n_br_delivery/models/vehicle.py b/l10n_br_delivery/models/vehicle.py new file mode 100644 index 000000000000..e5a39d819fa8 --- /dev/null +++ b/l10n_br_delivery/models/vehicle.py @@ -0,0 +1,70 @@ +# Copyright (C) 2010 Renato Lima - Akretion +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class CarrierVehicle(models.Model): + _name = "l10n_br_delivery.carrier.vehicle" + _description = "Carrier Vehicle" + + name = fields.Char(required=True, size=32) + + description = fields.Char( + size=132, + ) + + plate = fields.Char( + string="Placa", + size=7, + ) + + driver = fields.Char( + size=64, + ) + + rntc_code = fields.Char( + string="ANTT Code", + size=32, + ) + + country_id = fields.Many2one( + comodel_name="res.country", + string="Country", + ) + + state_id = fields.Many2one( + comodel_name="res.country.state", + string="State", + domain="[('country_id', '=', country_id)]", + ) + + city_id = fields.Many2one( + comodel_name="res.city", + string="City", + domain="[('state_id', '=', state_id)]", + ) + + active = fields.Boolean() + + manufacture_year = fields.Char( + string="Ano de Fabricação", + size=4, + ) + + model_year = fields.Char( + string="Ano do Modelo", + size=4, + ) + + type = fields.Selection( + selection=[("bau", "Caminhão Baú")], + string="Model Type", + ) + + carrier_id = fields.Many2one( + comodel_name="delivery.carrier", + string="Carrier", + index=True, + ondelete="cascade", + ) diff --git a/l10n_br_delivery/readme/CONFIGURE.rst b/l10n_br_delivery/readme/CONFIGURE.rst new file mode 100644 index 000000000000..89f8c3d0d9f9 --- /dev/null +++ b/l10n_br_delivery/readme/CONFIGURE.rst @@ -0,0 +1,7 @@ +Cadastre os Métodos de Envio que poderão ser selecionados nos Pedidos de Vendas, em: + + * Inventário > Configuração > Entrega > Métodos de Envio + +Veja que cada método é referente a uma Transportadora, também é possível cadastrar os Veículos da Transportadora em: + + * Inventário > Configuração > Entrega > Veículo diff --git a/l10n_br_delivery/readme/CONTRIBUTORS.rst b/l10n_br_delivery/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..7d1713d055a4 --- /dev/null +++ b/l10n_br_delivery/readme/CONTRIBUTORS.rst @@ -0,0 +1,10 @@ +* `Akretion `_: + + * Renato Lima + * Magno Costa + +* `KMEE `_: + + * Diego Paradeda + * Gabriel Cardoso de Faria + * Luis Otavio Malta Conceição diff --git a/l10n_br_delivery/readme/DESCRIPTION.rst b/l10n_br_delivery/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..40a4f9767952 --- /dev/null +++ b/l10n_br_delivery/readme/DESCRIPTION.rst @@ -0,0 +1,10 @@ +*(summary: extends the delivery module to comply with the fiscal documents requirements)* + +Esse módulo localiza o módulo *delivery* para adequar as necessidades do Brasil. Em especial ele: + + * acrescenta informações para os Documentos Fiscais: Transportadora, responsabilidade do frete, volume e peso bruto. + * acrescenta na Transportadora o código ANTT e a lista de veículos. + * cria um modelo simples de veículo com os campos fiscais (placa, código ANTT, modelo, ano de fabricação...) + * desativa o método *_add_delivery_cost_to_so* da Expedição, pois o frete já esta corretamente informado no pedido. + * vale a pena notar que o rateamento do frete, seguro e outros custos já esta sendo feito pelo módulo l10n_br_fiscal, tanto para notas de saída como de entrada. + * se você for emitir NF-e, você precisa do módulo *l10n_br_delivery_nfe* que faz a integração deste módulo com o módulo *l10n_br_nfe*. diff --git a/l10n_br_delivery/readme/HISTORY.rst b/l10n_br_delivery/readme/HISTORY.rst new file mode 100644 index 000000000000..eb0ffa7156d7 --- /dev/null +++ b/l10n_br_delivery/readme/HISTORY.rst @@ -0,0 +1,14 @@ +14.0.1.0.0 (2022-09-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Migration. + +12.0.1.0.0 (2021-08-28) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Migration + +8.0.1.0.0 (2021-01-06) +~~~~~~~~~~~~~~~~~~~~~~ + +* 1st version diff --git a/l10n_br_delivery/readme/INSTALL.rst b/l10n_br_delivery/readme/INSTALL.rst new file mode 100644 index 000000000000..ae8a1908cf0c --- /dev/null +++ b/l10n_br_delivery/readme/INSTALL.rst @@ -0,0 +1,5 @@ +This module depends on: + +* l10n_br_sale_stock +* delivery +* delivery_carrier_partner diff --git a/l10n_br_delivery/readme/ROADMAP.rst b/l10n_br_delivery/readme/ROADMAP.rst new file mode 100644 index 000000000000..154a79b22cd9 --- /dev/null +++ b/l10n_br_delivery/readme/ROADMAP.rst @@ -0,0 +1 @@ +* Integrar o modulo com os metódos de calculo automáticos do modulo delivery, hoje o usuário deve informar a Transportadora e o valor do Frete é informado manualmente. diff --git a/l10n_br_delivery/readme/USAGE.rst b/l10n_br_delivery/readme/USAGE.rst new file mode 100644 index 000000000000..cac8c934791e --- /dev/null +++ b/l10n_br_delivery/readme/USAGE.rst @@ -0,0 +1,3 @@ +Para usar esse modulo você precisa: + +* Criar um Pedido de Venda informar o Método de Entrega e o valor do Frete, se necessário os valores de Seguro e Outros Custos. diff --git a/l10n_br_delivery/security/ir.model.access.csv b/l10n_br_delivery/security/ir.model.access.csv new file mode 100644 index 000000000000..f2e948d64b7f --- /dev/null +++ b/l10n_br_delivery/security/ir.model.access.csv @@ -0,0 +1,6 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_l10n_br_delivery_carrier_vehicle_sale","l10n_br_delivery_carrier_vehicle","model_l10n_br_delivery_carrier_vehicle","sales_team.group_sale_salesman",1,0,0,0 +"access_l10n_br_delivery_carrier_vehicle_sale_manager","l10n_br_delivery_carrier_vehicle","model_l10n_br_delivery_carrier_vehicle","sales_team.group_sale_manager",1,0,0,0 +"access_l10n_br_delivery_carrier_vehicle_partner_manager","l10n_br_delivery_carrier_vehicle","model_l10n_br_delivery_carrier_vehicle","base.group_partner_manager",1,0,0,0 +"access_l10n_br_delivery_carrier_vehicle_stock_user","l10n_br_delivery_carrier_vehicle","model_l10n_br_delivery_carrier_vehicle","stock.group_stock_user",1,0,0,0 +"access_l10n_br_delivery_carrier_vehicle_stock_manager","l10n_br_delivery_carrier_vehicle","model_l10n_br_delivery_carrier_vehicle","stock.group_stock_manager",1,1,1,1 diff --git a/l10n_br_delivery/static/description/icon.png b/l10n_br_delivery/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/l10n_br_delivery/static/description/icon.png differ diff --git a/l10n_br_delivery/static/description/index.html b/l10n_br_delivery/static/description/index.html new file mode 100644 index 000000000000..5fb2eaf3d981 --- /dev/null +++ b/l10n_br_delivery/static/description/index.html @@ -0,0 +1,520 @@ + + + + + +delivery module Brazilian Localization + + + +
+

delivery module Brazilian Localization

+ + +

Alpha License: AGPL-3 OCA/l10n-brazil Translate me on Weblate Try me on Runboat

+

(summary: extends the delivery module to comply with the fiscal documents requirements)

+

Esse módulo localiza o módulo delivery para adequar as necessidades do Brasil. Em especial ele:

+
+
    +
  • acrescenta informações para os Documentos Fiscais: Transportadora, responsabilidade do frete, volume e peso bruto.
  • +
  • acrescenta na Transportadora o código ANTT e a lista de veículos.
  • +
  • cria um modelo simples de veículo com os campos fiscais (placa, código ANTT, modelo, ano de fabricação…)
  • +
  • desativa o método _add_delivery_cost_to_so da Expedição, pois o frete já esta corretamente informado no pedido.
  • +
  • vale a pena notar que o rateamento do frete, seguro e outros custos já esta sendo feito pelo módulo l10n_br_fiscal, tanto para notas de saída como de entrada.
  • +
  • se você for emitir NF-e, você precisa do módulo l10n_br_delivery_nfe que faz a integração deste módulo com o módulo l10n_br_nfe.
  • +
+
+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Installation

+

This module depends on:

+
    +
  • l10n_br_sale_stock
  • +
  • delivery
  • +
  • delivery_carrier_partner
  • +
+
+
+

Configuration

+

Cadastre os Métodos de Envio que poderão ser selecionados nos Pedidos de Vendas, em:

+
+
    +
  • Inventário > Configuração > Entrega > Métodos de Envio
  • +
+
+

Veja que cada método é referente a uma Transportadora, também é possível cadastrar os Veículos da Transportadora em:

+
+
    +
  • Inventário > Configuração > Entrega > Veículo
  • +
+
+
+
+

Usage

+

Para usar esse modulo você precisa:

+
    +
  • Criar um Pedido de Venda informar o Método de Entrega e o valor do Frete, se necessário os valores de Seguro e Outros Custos.
  • +
+
+
+

Known issues / Roadmap

+
    +
  • Integrar o modulo com os metódos de calculo automáticos do modulo delivery, hoje o usuário deve informar a Transportadora e o valor do Frete é informado manualmente.
  • +
+
+
+

Changelog

+
+

14.0.1.0.0 (2022-09-29)

+
    +
  • Migration.
  • +
+
+
+

12.0.1.0.0 (2021-08-28)

+
    +
  • Migration
  • +
+
+
+

8.0.1.0.0 (2021-01-06)

+
    +
  • 1st version
  • +
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainers:

+

renatonlima mbcosta

+

This module is part of the OCA/l10n-brazil project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/l10n_br_delivery/tests/__init__.py b/l10n_br_delivery/tests/__init__.py new file mode 100644 index 000000000000..0a2155ebaa8f --- /dev/null +++ b/l10n_br_delivery/tests/__init__.py @@ -0,0 +1 @@ +from . import test_delivery_inverse_amount diff --git a/l10n_br_delivery/tests/test_delivery_inverse_amount.py b/l10n_br_delivery/tests/test_delivery_inverse_amount.py new file mode 100644 index 000000000000..42f0dc586dcb --- /dev/null +++ b/l10n_br_delivery/tests/test_delivery_inverse_amount.py @@ -0,0 +1,446 @@ +# @ 2020 KMEE - www.kmee.com.br +# Copyright (C) 2022-Today - Akretion (). +# @author Magno Costa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import Form, TransactionCase + + +class TestDeliveryInverseAmount(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.sale_demo = cls.env.ref("l10n_br_delivery.main_so_delivery_1") + + # Create two sale orders + sale_order_form_total = Form(cls.env["sale.order"], "sale.view_order_form") + sale_order_form_total.partner_id = cls.env.ref("l10n_br_base.res_partner_kmee") + cls.sale_order_total_id = sale_order_form_total.save() + + sale_order_form_line = Form(cls.env["sale.order"], "sale.view_order_form") + sale_order_form_line.partner_id = cls.env.ref("l10n_br_base.res_partner_kmee") + cls.sale_order_line_id = sale_order_form_line.save() + + # Set 2 different products to the sale orders + with Form(cls.sale_order_total_id) as so: + with so.order_line.new() as line: + line.product_id = cls.env.ref("product.product_delivery_01") + with so.order_line.new() as line: + line.product_id = cls.env.ref("product.product_delivery_02") + + with Form(cls.sale_order_line_id) as so: + with so.order_line.new() as line: + line.product_id = cls.env.ref("product.product_delivery_01") + with so.order_line.new() as line: + line.product_id = cls.env.ref("product.product_delivery_02") + + # Alteração para permitir do teste + cls.sale_order_line_id.company_id.delivery_costs = "total" + # Change freight, insurance and other costs amount by Total values + with Form(cls.sale_order_total_id) as so: + so.amount_freight_value = 100.0 + so.amount_insurance_value = 100.0 + so.amount_other_value = 100.0 + + # Alteração para permitir do teste + cls.sale_order_line_id.company_id.delivery_costs = "line" + # Change freight, insurance and other costs amount by Lines values + with Form(cls.sale_order_line_id) as so: + with so.order_line.edit(0) as line: + line.freight_value = 70.00 + line.insurance_value = 70.00 + line.other_value = 70.00 + with so.order_line.edit(1) as line: + line.freight_value = 10.00 + line.insurance_value = 10.00 + line.other_value = 10.00 + + # TODO ?: alterando para permitir edição do campo e não falhar o teste + cls.sale_order_line_id.company_id.delivery_costs = "total" + with Form(cls.sale_order_line_id) as so: + so.amount_freight_value = 100.0 + so.amount_insurance_value = 100.0 + so.amount_other_value = 100.0 + + # Confirm and create invoices for the sale orders + cls.sale_order_total_id.action_confirm() + cls.sale_order_line_id.action_confirm() + + picking = cls.sale_order_total_id.picking_ids + picking.action_confirm() + # Check product availability + picking.action_assign() + # Force product availability + for move in picking.move_ids_without_package: + move.quantity_done = move.product_uom_qty + picking.button_validate() + + picking = cls.sale_order_line_id.picking_ids + picking.action_confirm() + # Check product availability + picking.action_assign() + # Force product availability + for move in picking.move_ids_without_package: + move.quantity_done = move.product_uom_qty + picking.button_validate() + + for move in picking.move_ids_without_package: + move.quantity_done = move.product_uom_qty + + wizard_total = ( + cls.env["sale.advance.payment.inv"] + .with_context(active_ids=cls.sale_order_total_id.ids) + .create({}) + ) + + wizard_line = ( + cls.env["sale.advance.payment.inv"] + .with_context(active_ids=cls.sale_order_line_id.ids) + .create({}) + ) + + wizard_total.create_invoices() + wizard_line.create_invoices() + + def test_sale_order_total_amounts(self): + """Check sale order total amounts""" + self.assertEqual( + self.sale_order_total_id.amount_price_gross, + 110.0, + "Unexpected value for the field amount_price_gross from Sale Order", + ) + self.assertEqual( + self.sale_order_total_id.amount_untaxed, + 110.0, + "Unexpected value for the field amount_untaxed from Sale Order", + ) + self.assertEqual( + self.sale_order_total_id.amount_freight_value, + 100.0, + "Unexpected value for the field amount_freight from Sale Order", + ) + self.assertEqual( + self.sale_order_total_id.amount_insurance_value, + 100.0, + "Unexpected value for the field amount_insurance from Sale Order", + ) + self.assertEqual( + self.sale_order_total_id.amount_other_value, + 100.0, + "Unexpected value for the field amount_costs from Sale Order", + ) + self.assertEqual( + self.sale_order_total_id.amount_tax, + 0.0, + "Unexpected value for the field amount_tax from Sale Order", + ) + + def test_sale_order_line_amounts(self): + """Check sale order line amounts""" + self.assertEqual( + self.sale_order_line_id.amount_price_gross, + 110.0, + "Unexpected value for the field amount_price_gross from Sale Order", + ) + self.assertEqual( + self.sale_order_line_id.amount_untaxed, + 110.0, + "Unexpected value for the field amount_untaxed from Sale Order", + ) + self.assertEqual( + self.sale_order_line_id.amount_freight_value, + 100.0, + "Unexpected value for the field amount_freight from Sale Order", + ) + self.assertEqual( + self.sale_order_line_id.amount_insurance_value, + 100.0, + "Unexpected value for the field amount_insurance from Sale Order", + ) + self.assertEqual( + self.sale_order_line_id.amount_other_value, + 100.0, + "Unexpected value for the field amount_other from Sale Order", + ) + self.assertEqual( + self.sale_order_line_id.amount_tax, + 0.0, + "Unexpected value for the field amount_tax from Sale Order", + ) + + def test_invoice_amount_tax(self): + """Check invoice amount tax""" + invoice_tax_total = self.sale_order_total_id.invoice_ids[0].amount_tax + + self.assertEqual( + invoice_tax_total, + 0.0, + "Unexpected value for the field invoice_tax from Invoice", + ) + + invoice_tax_line = self.sale_order_line_id.invoice_ids[0].amount_tax + + self.assertEqual( + invoice_tax_line, + 0.0, + "Unexpected value for the field invoice_tax from Invoice", + ) + + def test_inverse_amount_freight_total(self): + """Check Fiscal Document freight values for total""" + fiscal_document_id = self.sale_order_total_id.invoice_ids[0].fiscal_document_id + self.assertEqual( + fiscal_document_id.amount_freight_value, + 100, + "Unexpected value for the field amount_freight_value from " + "Fiscal Document", + ) + + for line in fiscal_document_id.fiscal_line_ids: + if line.name == "[FURN_7777] Office Chair": + self.assertEqual( + line.freight_value, + 63.64, + "Unexpected value for the field freight_value from " + "Fiscal Document line", + ) + if line.name == "[FURN_8888] Office Lamp": + self.assertEqual( + line.freight_value, + 36.36, + "Unexpected value for the field freight_value from " + "Fiscal Document line", + ) + + def test_inverse_amount_freight_line(self): + """Check Fiscal Document freight values for lines""" + fiscal_document_id = self.sale_order_line_id.invoice_ids[0].fiscal_document_id + self.assertEqual( + fiscal_document_id.amount_freight_value, + 100, + "Unexpected value for the field amount_freight_value from " + "Fiscal Document", + ) + + for line in fiscal_document_id.fiscal_line_ids: + if line.name == "[FURN_7777] Office Chair": + self.assertEqual( + line.freight_value, + 87.5, + "Unexpected value for the field freight_value from " + "Fiscal Document line", + ) + if line.name == "[FURN_8888] Office Lamp": + self.assertEqual( + line.freight_value, + 12.5, + "Unexpected value for the field freight_value from " + "Fiscal Document line", + ) + + def test_inverse_amount_insurance_total(self): + """Check Fiscal Document insurance values for total""" + fiscal_document_id = self.sale_order_total_id.invoice_ids[0].fiscal_document_id + self.assertEqual( + fiscal_document_id.amount_insurance_value, + 100, + "Unexpected value for the field amount_insurance_value from " + "Fiscal Document", + ) + + for line in fiscal_document_id.fiscal_line_ids: + if line.name == "[FURN_7777] Office Chair": + self.assertEqual( + line.insurance_value, + 63.64, + "Unexpected value for the field insurance_value from " + "Fiscal Document line", + ) + if line.name == "[FURN_8888] Office Lamp": + self.assertEqual( + line.insurance_value, + 36.36, + "Unexpected value for the field insurance_value from " + "Fiscal Document line", + ) + + def test_inverse_amount_insurance_line(self): + """Check Fiscal Document insurance values for lines""" + fiscal_document_id = self.sale_order_line_id.invoice_ids[0].fiscal_document_id + self.assertEqual( + fiscal_document_id.amount_insurance_value, + 100, + "Unexpected value for the field amount_insurance_value from " + "Fiscal Document", + ) + + for line in fiscal_document_id.fiscal_line_ids: + if line.name == "[FURN_7777] Office Chair": + self.assertEqual( + line.insurance_value, + 87.5, + "Unexpected value for the field insurance_value from " + "Fiscal Document line", + ) + if line.name == "[FURN_8888] Office Lamp": + self.assertEqual( + line.insurance_value, + 12.5, + "Unexpected value for the field insurance_value from " + "Fiscal Document line", + ) + + def test_inverse_amount_other_costs_total(self): + """Check Fiscal Document other costs values for total""" + fiscal_document_id = self.sale_order_total_id.invoice_ids[0].fiscal_document_id + self.assertEqual( + fiscal_document_id.amount_other_value, + 100, + "Unexpected value for the field other_value from " "Fiscal Document", + ) + + for line in fiscal_document_id.fiscal_line_ids: + if line.name == "[FURN_7777] Office Chair": + self.assertEqual( + line.other_value, + 63.64, + "Unexpected value for the field other_value from " + "Fiscal Document line", + ) + if line.name == "[FURN_8888] Office Lamp": + self.assertEqual( + line.other_value, + 36.36, + "Unexpected value for the field other_value from " + "Fiscal Document line", + ) + + def test_inverse_amount_other_line(self): + """Check Fiscal Document other other values for lines""" + fiscal_document_id = self.sale_order_line_id.invoice_ids[0].fiscal_document_id + self.assertEqual( + fiscal_document_id.amount_other_value, + 100, + "Unexpected value for the field other_value from " "Fiscal Document", + ) + + for line in fiscal_document_id.fiscal_line_ids: + if line.name == "[FURN_7777] Office Chair": + self.assertEqual( + line.other_value, + 87.5, + "Unexpected value for the field other_value from " + "Fiscal Document line", + ) + if line.name == "[FURN_8888] Office Lamp": + self.assertEqual( + line.other_value, + 12.5, + "Unexpected value for the field other_value from " + "Fiscal Document line", + ) + + def test_not_cost_ratio_by_lines(self): + """ + Teste quando não deve acontecer divisão proporcional entre os valores, + de Frete, Seguro e Outros Custos, esses valores nas linhas devem ser + independentes. + """ + self.sale_demo.company_id.delivery_costs = "line" + self.sale_demo.action_confirm() + + self.assertEqual( + self.sale_demo.amount_freight_value, + 30.0, + "Unexpected value for the field amount_freight from Sale Order", + ) + self.assertEqual( + self.sale_demo.amount_insurance_value, + 45.0, + "Unexpected value for the field amount_insurance from Sale Order", + ) + self.assertEqual( + self.sale_demo.amount_other_value, + 15.0, + "Unexpected value for the field amount_costs from Sale Order", + ) + for line in self.sale_demo.order_line: + other_line = self.sale_demo.order_line.filtered( + lambda o_l: o_l.id != line.id + ) + self.assertNotEqual( + line.freight_value, + other_line.freight_value, + "Value freight_value should not be has same value in lines.", + ) + self.assertNotEqual( + line.insurance_value, + other_line.insurance_value, + "Value insurance_value should not be has same value in lines.", + ) + self.assertNotEqual( + line.other_value, + other_line.other_value, + "Value other_value should not be has same value in lines.", + ) + + picking = self.sale_demo.picking_ids + # Check product availability + picking.action_assign() + # Force product availability + for move in picking.move_ids_without_package: + move.quantity_done = move.product_uom_qty + picking.button_validate() + self.assertEqual(picking.state, "done") + + self.sale_demo._create_invoices(final=True) + + self.assertEqual(self.sale_demo.state, "sale", "Error to confirm Sale Order.") + + invoice = self.sale_demo.invoice_ids[0] + invoice.action_post() + self.assertEqual(invoice.state, "posted", "Invoice should be in state Posted") + for line in invoice.invoice_line_ids: + other_line = invoice.invoice_line_ids.filtered( + lambda o_l: o_l.id != line.id + ) + self.assertNotEqual( + line.freight_value, + other_line.freight_value, + "Value freight_value should not be has same value" " in invoice lines.", + ) + self.assertNotEqual( + line.insurance_value, + other_line.insurance_value, + "Value insurance_value should not be has same value" + " in invoice lines.", + ) + self.assertNotEqual( + line.other_value, + other_line.other_value, + "Value other_value should not be has same value" " in invoice lines.", + ) + + fiscal_document_id = self.sale_demo.invoice_ids[0].fiscal_document_id + + for line in fiscal_document_id.fiscal_line_ids: + other_line = fiscal_document_id.fiscal_line_ids.filtered( + lambda o_l: o_l.id != line.id + ) + self.assertNotEqual( + line.freight_value, + other_line.freight_value, + "Value freight_value should not be has same value" " in invoice lines.", + ) + self.assertNotEqual( + line.insurance_value, + other_line.insurance_value, + "Value insurance_value should not be has same value" + " in invoice lines.", + ) + self.assertNotEqual( + line.other_value, + other_line.other_value, + "Value other_value should not be has same value" " in invoice lines.", + ) diff --git a/l10n_br_delivery/views/account_incoterms_view.xml b/l10n_br_delivery/views/account_incoterms_view.xml new file mode 100644 index 000000000000..39aaf99ad43f --- /dev/null +++ b/l10n_br_delivery/views/account_incoterms_view.xml @@ -0,0 +1,16 @@ + + + + + account.incoterms.form + account.incoterms + 10 + + + + + + + + + diff --git a/l10n_br_delivery/views/delivery_carrier_views.xml b/l10n_br_delivery/views/delivery_carrier_views.xml new file mode 100644 index 000000000000..b1beb0d07744 --- /dev/null +++ b/l10n_br_delivery/views/delivery_carrier_views.xml @@ -0,0 +1,22 @@ + + + + + l10n_br_delivery.carrier.form + delivery.carrier + + + + [('supplier', '=', True)] + + + + + + + + + diff --git a/l10n_br_delivery/views/l10n_br_delivery_view.xml b/l10n_br_delivery/views/l10n_br_delivery_view.xml new file mode 100644 index 000000000000..9beaf6d9de95 --- /dev/null +++ b/l10n_br_delivery/views/l10n_br_delivery_view.xml @@ -0,0 +1,66 @@ + + + + + + l10n_br_delivery.carrier.vehicle.form + l10n_br_delivery.carrier.vehicle + form + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + + l10n_br_delivery.carrier.vehicle.tree + l10n_br_delivery.carrier.vehicle + tree + + + + + + + + + + + Vehicle + ir.actions.act_window + l10n_br_delivery.carrier.vehicle + tree,form + + + + + +
diff --git a/l10n_br_delivery/views/sale_order_view.xml b/l10n_br_delivery/views/sale_order_view.xml new file mode 100644 index 000000000000..bd093b8c92a7 --- /dev/null +++ b/l10n_br_delivery/views/sale_order_view.xml @@ -0,0 +1,41 @@ + + + + + l10n_br_delivery.sale.order.form + sale.order + + 99 + + + + + + + + + + + + + + diff --git a/l10n_br_delivery/views/stock_picking_view.xml b/l10n_br_delivery/views/stock_picking_view.xml new file mode 100644 index 000000000000..ea0b095ca1d1 --- /dev/null +++ b/l10n_br_delivery/views/stock_picking_view.xml @@ -0,0 +1,16 @@ + + + + + l10n_br_delivery.picking.form + stock.picking + + 99 + + + + + + + + diff --git a/setup/l10n_br_delivery/odoo/addons/l10n_br_delivery b/setup/l10n_br_delivery/odoo/addons/l10n_br_delivery new file mode 120000 index 000000000000..a47ece235598 --- /dev/null +++ b/setup/l10n_br_delivery/odoo/addons/l10n_br_delivery @@ -0,0 +1 @@ +../../../../l10n_br_delivery \ No newline at end of file diff --git a/setup/l10n_br_delivery/setup.py b/setup/l10n_br_delivery/setup.py new file mode 100644 index 000000000000..28c57bb64031 --- /dev/null +++ b/setup/l10n_br_delivery/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)