Skip to content

Commit

Permalink
Merge 7a1fefa into 7f7cc53
Browse files Browse the repository at this point in the history
  • Loading branch information
mileo committed May 17, 2019
2 parents 7f7cc53 + 7a1fefa commit d3c8075
Show file tree
Hide file tree
Showing 70 changed files with 4,903 additions and 13 deletions.
31 changes: 18 additions & 13 deletions l10n_br_account_product/sped/nfe/document.py
Expand Up @@ -251,7 +251,12 @@ def _emmiter(self, invoice, company):
company.zip or '')
self.nfe.infNFe.emit.enderEmit.cPais.valor = (
company.country_id.bc_code[1:])
self.nfe.infNFe.emit.enderEmit.xPais.valor = company.country_id.name

if company.country_id.name.lower() == 'brazil':
self.nfe.infNFe.emit.enderEmit.xPais.valor = 'Brasil'
else:
self.nfe.infNFe.emit.enderEmit.xPais.valor = company.country_id.name

self.nfe.infNFe.emit.enderEmit.fone.valor = punctuation_rm(
str(company.phone or '').replace(' ', ''))
self.nfe.infNFe.emit.IE.valor = punctuation_rm(
Expand Down Expand Up @@ -310,18 +315,18 @@ def _receiver(self, invoice, company, nfe_environment):
invoice.partner_id.legal_name[:60] or '')
).encode('ASCII', 'ignore'))

if invoice.partner_id.is_company:
self.nfe.infNFe.dest.IE.valor = punctuation_rm(
invoice.partner_id.inscr_est)

if invoice.partner_id.country_id.id == \
invoice.company_id.country_id.id:
if invoice.partner_id.is_company:
self.nfe.infNFe.dest.IE.valor = punctuation_rm(
invoice.partner_id.inscr_est)

if invoice.partner_id.country_id.id == \
invoice.company_id.country_id.id:
if invoice.partner_id.is_company:
self.nfe.infNFe.dest.CNPJ.valor = punctuation_rm(
invoice.partner_id.cnpj_cpf)
else:
self.nfe.infNFe.dest.CPF.valor = punctuation_rm(
invoice.partner_id.cnpj_cpf)
self.nfe.infNFe.dest.CNPJ.valor = punctuation_rm(
invoice.partner_id.cnpj_cpf)
else:
self.nfe.infNFe.dest.CPF.valor = punctuation_rm(
invoice.partner_id.cnpj_cpf)

self.nfe.infNFe.dest.indIEDest.valor = \
invoice.partner_id.partner_fiscal_type_id.ind_ie_dest
Expand Down Expand Up @@ -359,7 +364,7 @@ def _details(self, invoice, invoice_line, index):
self.det.prod.cEAN.valor =\
invoice_line.product_id.barcode or 'SEM GTIN'
self.det.prod.cEANTrib.valor =\
invoice_line.product_id.barcode or ''
invoice_line.product_id.barcode or 'SEM GTIN'
self.det.prod.xProd.valor = (normalize(
'NFKD', unicode(
invoice_line.product_id.name[:120] or '')
Expand Down
128 changes: 128 additions & 0 deletions nfe/README.rst
@@ -0,0 +1,128 @@
===
NFE
===

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |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/10.0/nfe
: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-10-0/l10n-brazil-10-0-nfe
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/124/10.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

Esse módulo implementa as interações de documentos eletrônicos com o SEFAZ.

Com ele é possível transmitir e consultar NF-e, fazer cartas de correção, inutilizar faixas de numeração,
importar documentos eletrônicos a partir de arquivos TXT e XML, consultar MD-e, manifestar ciência ou desconhecimento da
MD-e e importar a NF-e diretamente da MD-e.

**Table of contents**

.. contents::
:local:

Installation
============

This module depends on :
* l10n_br_account_product
* barcodes

And python dependencies:

* nfelib

Configuration
=============

To configure this module, you need to:

#. Go to ...

.. figure:: https://raw.githubusercontent.com/OCA/l10n-brazil/10.0/nfe/path/to/local/image.png
:alt: alternative description
:width: 600 px

Usage
=====

To use this module, you need to:

#. Go to ...

Known issues / Roadmap
======================

* TODO

Changelog
=========

TODO:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/l10n-brazil/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/l10n-brazil/issues/new?body=module:%20nfe%0Aversion:%2010.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
~~~~~~~

* Akretion
* Danimar Ribeiro
* KMEE

Contributors
~~~~~~~~~~~~

* Danimar Ribeiro <danimar.ribeiro@trustcode.com.br>
* Luis Felipe Mileo <mileo@kmee.com.br>
* Renato Lima <renato.lima@akretion.com.br>

Other credits
~~~~~~~~~~~~~

The development of this module has been financially supported by:

* KMEE INFORMATICA LTDA
* AKRETION LTDA

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.

This module is part of the `OCA/l10n-brazil <https://github.com/OCA/l10n-brazil/tree/10.0/nfe>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
10 changes: 10 additions & 0 deletions nfe/__init__.py
@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2013 Renato Lima - Akretion
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

from . import sped
from . import models
from . import wizard
from . import report
from . import service
from . import tests
48 changes: 48 additions & 0 deletions nfe/__manifest__.py
@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2013 Renato Lima - Akretion
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html


{
'name': 'NFE',
'version': '10.0.1.0.0',
'category': 'Generic Modules',
'author': 'Akretion, Danimar Ribeiro, KMEE, Odoo Community Association (OCA)',
'license': 'AGPL-3',
'website': 'http://odoo-brasil.org',
'external_dependencies': {
'python': [
'pysped'
],
},
'depends': [
'l10n_br_account_product',
'barcodes',
],
'data': [
'data/nfe_attach_email.xml',
'security/ir.model.access.csv',
'wizard/nfe_xml_periodic_export.xml',
'wizard/nfe_invoice_cce_view.xml',
'wizard/nfe_invoice_cancel_view.xml',
'wizard/l10n_br_account_invoice_import.xml',
'data/nfe_schedule.xml',
# 'account_invoice_workflow.xml',
'views/l10n_br_account_view.xml',
'views/account_invoice_view.xml',
'views/res_partner_view.xml',
'views/res_company_view.xml',
'views/nfe_mde_view.xml',
'views/account_fiscal_position_view.xml',
'views/nfe_import_view.xml',
'report/report_print_button_view.xml',
'report/report_danfe.xml',
'wizard/wizard_nfe_import_xml_view.xml',
],
'css': [
'static/src/css/nfe_import.css'
],
'demo': [],
'test': [],
'installable': True,
}
96 changes: 96 additions & 0 deletions nfe/data/nfe_attach_email.xml
@@ -0,0 +1,96 @@
<odoo noupdate="1">

<record id="email_template_nfe" model="mail.template">
<field name="name">NF-E - Send by Email</field>
<field name="email_from">${(object.user_id.email or object.company_id.email or 'noreply@localhost')|safe}</field>
<field name="subject">${object.company_id.name} NF ${object.document_serie_id.code}/${object.number or 'n/a'}</field>
<field name="email_recipients">${object.contact_id and object.contact_id.id or object.partner_id.id}</field>
<field name="model_id" ref="account.model_account_invoice"/>
<field name="attachment_ids"/>
<field name="auto_delete" eval="True"/>
<field name="lang">${object.partner_id.lang}</field>
<field name="body_html">
<![CDATA[ <div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #EEE; ">
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #EEE; ">
<p>Olá ${object.partner_id.name},</p>
<p>Este e-mail refere-se a Nota Fiscal Eletrônica Nacional</p>
<p style="border-left: 1px solid #00008e; margin-left: 30px;">
&nbsp;&nbsp;<strong>REFERÊNCIAS</strong><br />
&nbsp;&nbsp;Razão Social: <strong>${object.partner_id.legal_name}</strong><br />
&nbsp;&nbsp;CNPJ: <strong>${object.partner_id.cnpj_cpf}</strong><br />
&nbsp;&nbsp;Chave de acesso: <strong>${object.nfe_access_key}</strong><br />
% if object.nfe_protocol_number:
&nbsp;&nbsp;Protocolo: <strong>${object.nfe_protocol_number or " "}</strong><br />
% endif
&nbsp;&nbsp;Número: <strong>${object.internal_number}</strong><br />
&nbsp;&nbsp;Série: <strong>${object.document_serie_id.code}</strong><br />
&nbsp;&nbsp;Data da Fatura: ${object.date_invoice}<br />
&nbsp;&nbsp;Valor Total: <strong>${object.currency_id.symbol} ${object.amount_total} </strong><br />
% if object.origin:
&nbsp;&nbsp;Referência
% endif
% if object.name:
&nbsp;do Cliente
% endif
% if object.name:
&nbsp;- ${object.name}
% endif
% if object.origin:
&nbsp;- ${object.origin} <br />
% endif
% if object.user_id.email:
&nbsp;&nbsp;Contato: <a href="mailto:${object.user_id.email or ''}?subject=Invoice%20${object.number}">${object.user_id.name}</a>
% endif
</p>
<p>Para verificar a autorização da SEFAZ referente à nota acima mencionada, acesse o site http://www.nfe.fazenda.gov.br/portal</p>
<br/>
<br/>
<div style="width: 375px; margin: 0px; padding: 0px; background-color: #00008E; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; background-repeat: repeat no-repeat;">
<h3 style="margin: 0px; padding: 2px 14px; font-size: 12px; color: #DDD;">
<strong style="text-transform:uppercase;">${object.company_id.name}</strong></h3>
</div>
<div style="width: 347px; margin: 0px; padding: 5px 14px; line-height: 16px; background-color: #EEE;">
<span style="color: #222; margin-bottom: 5px; display: block; ">
% if object.company_id.legal_name:
Razão Social: ${object.company_id.legal_name}<br/>
CNPJ: ${object.company_id.cnpj_cpf}<br/>
% endif
% if object.company_id.street:
Endereço: ${object.company_id.street} &nbsp; ${object.company_id.number or ' '}, ${object.company_id.district}<br/>
% endif
% if object.company_id.street2:
${object.company_id.street2}<br/>
% endif
% if object.company_id.city or object.company_id.zip:
CEP: ${object.company_id.zip} ${object.company_id.l10n_br_city_id.name}<br/>
% endif
% if object.company_id.country_id:
UF: ${object.company_id.state_id.code and ('%s, ' % object.company_id.state_id.name) or ''} ${object.company_id.country_id.name or ''}<br/>
% endif
</span>
% if object.company_id.phone:
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
Tel:&nbsp; ${object.company_id.phone}
</div>
% endif
% if object.company_id.website:
<div>
Web :&nbsp;<a href="${object.company_id.website}">${object.company_id.website}</a>
</div>
%endif
<hr>
<br>
</div>
% if object.company_id.nfe_email:
<p><i>${object.company_id.nfe_email}</i></p>
%endif
</div> ]]>
</field>
</record>

</odoo>
60 changes: 60 additions & 0 deletions nfe/data/nfe_schedule.xml
@@ -0,0 +1,60 @@
<?xml version="1.0" ?>
<odoo>


<record id="ir_cron_download_nfe_scheduler0" model="ir.cron">
<field eval="&quot;&quot;&quot;schedule_download&quot;&quot;&quot;"
name="function"/>
<field name="interval_number">2</field>
<field name="interval_type">hours</field>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;&quot;&quot;Agendamento NFe Download&quot;&quot;&quot;"
name="name"/>
<field eval="-1" name="numbercall"/>
<field eval="5" name="priority"/>
<field eval="0" name="doall"/>
<field eval="0" name="active"/>
<field eval="&quot;&quot;&quot;nfe.schedule&quot;&quot;&quot;"
name="model"/>
</record>


<record id="form_nfe_schedule_download_nfe" model="ir.ui.view">
<field name="name">nfe.schedule.form</field>
<field name="model">nfe.schedule</field>
<field name="arch" type="xml">
<form string="Verificar downloads pendentes" version="7.0">
<field invisible="1" name="state"/>
<label string="Ao clicar em verificar o Odoo irá buscar as notas fiscais pendentes de processamento no SEFAZ"></label>
<footer states="init">
<button string="Verificar" name="execute_download"
type="object" class="oe_highlight"/>
ou
<button string="Cancel" special="cancel" type="object"
class="oe_link"/>
</footer>
<footer states="done">
<button string="Done" name="done" type="object"/>
</footer>
</form>
</field>
</record>


<record id="action_nfe_schedule_download_nfe"
model="ir.actions.act_window">
<field name="name">Verificar NFe destinada</field>
<field name="res_model">nfe.schedule</field>
<field name="view_mode">form</field>
<field name="view_type">form</field>
<field name="view_id" ref="form_nfe_schedule_download_nfe"/>
<field name="target">new</field>
</record>


<menuitem id="menu_l10n_br_accouunt_periodic_processing_nfe_export"
name="Verificar NFe para download"
parent="nfe.menu_l10n_br_account_processamento_periodico"
action="action_nfe_schedule_download_nfe"/>

</odoo>

0 comments on commit d3c8075

Please sign in to comment.