Commit 724c1d19 authored by agb80's avatar agb80

chore(version): set version 2.0.4

<a name="2.0.4"></a>
## 2.0.4 (2018-06-16)
#### Bug Fixes
* **cfdi:** utiliza el archivo de utilerias descargado localmente para generar el XML ([5c6a66ec](5c6a66ec))
* **demo:** update demo/testing params pac ([5ae9218e](5ae9218e))
<a name="2.0.3"></a>
## 2.0.3 (2018-03-10)
#### Bug Fixes
* **ir.attachment.facturae.mx:** do not create a new XML when validating a record with a given file_x ([5df7ecff](5df7ecff))
* **xmlsec1:** version de xmlsec1 ([bd2e0d4c](bd2e0d4c))
<a name="2.0.2"></a>
## 2.0.2 (2018-02-21)
#### Bug Fixes
* **finkok:** corrected error 202 from finkok ([e072acee](e072acee))
* **ir.attachment.facturae.mx:**
* get back detallista.xslt file for cadenaoriginal_3_3 ([cdf31353](cdf31353))
* remove unnecesary sql constrain for cfdi state ([fdb52df4](fdb52df4))
<a name="2.0.1"></a>
## 2.0.1 (2017-12-20)
#### Bug Fixes
* **expide_tu_factura:** send uuid on XML file to cancel CFDIs ([a6eec079](a6eec079))
* **ir.attachment:** improve domain on ir.attachment unlink function ([7ed1d6c2](7ed1d6c2))
* **ir.attachment.facturae.mx:**
* try hard to parse broken XML files ([1a998981](1a998981))
* search for XML total only as attribute from cfdi:Comprobante element ([44ee916d](44ee916d))
* allow _parse_xml function read any given XML file ([fe4a5a33](fe4a5a33))
* show error message when company has no certificate ([8d8c721a](8d8c721a))
* **migration:**
* rename account_tax_category only when exists ([db9f5452](db9f5452))
* allow support for migrate from module version 1.0.0 to version 2.0.0 ([6eae1f81](6eae1f81))
* Moisés López <moylop260@vauxoo.com>
* Isaac Lopez <isaac@vauxoo.com>
* Nhomar Hernandez <nhomar@vauxoo.com>
* Juan Carlos Funes <juan@vauxoo.com>
* Federico Cruz <federico.cruz@openpyme.mx>
* Agustín Cruz <agustin.cruz@openpyme.mx>
# l10n_mx_ir_attachment_facture modulo
Este modulo esta destinado a ser el principal manejador cuando se trate de timbrar
un documento en el SAT. El modulo maneja todo el proceso necesario; desde la creacion del
archivo XML, pasando por la creacion el sello digital, timbrado del XML en el SAT, hasta la creacion del archivo PDF
## Uso del modulo
El archivo python principal de este modulo es **ir_attachment_facture.py**.
Los otros archivos python solo se encargan de proporcionar una relacion entre el archivo ir_attachment_facture.py
con el resto del ERP.
Por ejemplo analizemos **account_journal.py**::
sign_sat = fields.Boolean(
'Sign SAT', copy=False,
help='If this field is enabled, then sign through the'
' webservice of the Mexican SAT'
)
param_pacs = fields.One2many(
'params.pac', 'pararm_pac_id'
)
`sign_sat` es usado para indicarle al ERP si los documentos creados en el diario
deben ser timbrados en el SAT o no
`param_pacs` nos permite seleccionar los proveedores PACs que queremos esten disponibles
en ese diario, pueden ser tantos como el ERP tenga disponibles
![Configuracion de diario](diario_configuracion.png)
### ir_attachment_facture.py
Este archivo de python tienen dos funciones principales:
1. Una de ellas es `sign_cfdi_sat`, la cual es usada para timbrar uno o muchos CFDIs ante el SAT.
2. La segunda funcion es `cancel_cfdi_sat`, la cual es usada para cancelar CFDIs
Hablando de timbrar un CFDI podemos revisemos los siguientes datos importantes:
1. Cuando se emite un CFDI, los pasos para timbrarlo ante el SAT son siempre los mismos, no importa de que tipo de CFDI se trate.
2. Los unicos cambios en el proceso de timbrar un CFDI de un tipo o uno de otro, son la estructura de los arhivos XML y PDF, todo lo demas se mantiene igual.
Entonces este archivo realiza todo el funcionamiento en general y deja para **ir_attachment_facturae_config.py** el resto
En resumen:
1. Ningun otro modulo nececista agregar funcionalidad alguna para tener su CFDI timbrado ante el SAT, **este modulo lo hace todo**
2. Cualquier modulo que quiera hacer uso de este modulo debe añadir un registro en la tabla **ir_attachment_facture_config**
### ir_attachment_facturae_config.py
Que es esto??
Como comentamos anteriormente, la unica diferencia al momento de timbar una factura y una nomia, por dar un ejemmplo,
es la estructura de sus archivos XML y PDF.
Entoces lo que la tabla **ir_attachment_facture_config** contiene es
**La tabla ir_attachment_facturae_config debe contener la refencia a las plantillas a usar para la generacion del XML y PDF (tanto de timbrado como de cancelacion)**
Un ejemplo tomado del modulo l10n_mx_facturae:
> **Note:**
El modulo l10n_mx_facturae se conectara al modulo l10n_mx_ir_attachment para que juntos puedan timbrar una factura
>
Solo dos cosas requiere hacer el modulo l10n_mx_facturae
1. Crear una entrada en ir_attachment_facture_config::
<record model="ir.attachment.facturae.mx.config" id="ir_attachment_facturae_mx_config_invoice">
<field name="model">account.invoice</field>
<field name="template_xml_sign">invoice.report.aaero.xml</field>
<field name="template_pdf_sign">invoice.report.aaero</field>
</record>
2. Llamar a la funcion `sign_cfdi_sat`::
def sign_invoice_sat(self, cr, uid, ids, context=None):
context = dict(context or {})
ir_attach_obj = self.pool.get('ir.attachment.facturae.mx')
for account_invoice in self.browse(cr, uid, ids, context):
if account_invoice.journal_id.sign_sat:
ir_attach_obj.sign_cfdi_sat(
cr, uid, ids, object_id=account_invoice.id,
object_model='account.invoice',**
name=account_invoice.fname_invoice)
### Como funciona `sign_cfdi_sat`::
Busca en la tabla ir_attachment_facture_config que tenga modelo
igual al parametro object_model
if Existe alguna entrada:
if no existe un objeto ir_attachment_facture previo relacionado con el documento a timbrar en el SAT:
1.- Recrear objecto a timbrar usado los paramentros pasados a la funcion
(_object_model_ y _object_id_),
2.- Crear objecto ir_attachment_facturae
3.- Crear archivo XML
4.- Firmar archivo XML usando los certificados cargados en el ERP
5.- Mandar a timbrar el archivo timbrado, pasando como paremetro todos
los PACs posibles que se seleccionaron a usar en el diario.
El diario se lee del objecto recreado en el paso 1
6.- Guardar XML timbrado en ir_attachment, pero haciendo referencia al
objecto recreado en paso 1
7.- Crear archivo PDF
8.- Guardar archivo PDF creado en ir_attachment, pero haciendo referencia al
objecto recreado en paso 1
else:
Mandar mensaje de Error al usuario
### Descripcion de los parametros de `sign_cfdi_sat`
A continuacion se describe los paramentros que recibe la funcion y su uso
1. `object_id`: Id del objecto a timbrar. Ejemplo: 150
2. `object_model`: Nombre del modelo a timbrar. Ejemplo: account.invoice
3. `name`: Nombre que tendran los archivos adjuntos. Ejemplo: F-150
<a name="2.0.3"></a>
## 2.0.3 (2018-03-10)
#### Bug Fixes
* **ir.attachment.facturae.mx:** do not create a new XML when validating a record with a given file_x ([5df7ecff](5df7ecff))
* **xmlsec1:** version de xmlsec1 ([bd2e0d4c](bd2e0d4c))
<a name="2.0.2"></a>
## 2.0.2 (2018-02-21)
#### Bug Fixes
* **finkok:** corrected error 202 from finkok ([e072acee](e072acee))
* **ir.attachment.facturae.mx:**
* get back detallista.xslt file for cadenaoriginal_3_3 ([cdf31353](cdf31353))
* remove unnecesary sql constrain for cfdi state ([fdb52df4](fdb52df4))
<a name="2.0.1"></a>
## 2.0.1 (2017-12-20)
#### Bug Fixes
* **expide_tu_factura:** send uuid on XML file to cancel CFDIs ([a6eec079](a6eec079))
* **ir.attachment:** improve domain on ir.attachment unlink function ([7ed1d6c2](7ed1d6c2))
* **ir.attachment.facturae.mx:**
* try hard to parse broken XML files ([1a998981](1a998981))
* search for XML total only as attribute from cfdi:Comprobante element ([44ee916d](44ee916d))
* allow _parse_xml function read any given XML file ([fe4a5a33](fe4a5a33))
* show error message when company has no certificate ([8d8c721a](8d8c721a))
* **migration:**
* rename account_tax_category only when exists ([db9f5452](db9f5452))
* allow support for migrate from module version 1.0.0 to version 2.0.0 ([6eae1f81](6eae1f81))
../CHANGES.md
\ No newline at end of file
* Moisés López <moylop260@vauxoo.com>
* Isaac Lopez <isaac@vauxoo.com>
* Nhomar Hernandez <nhomar@vauxoo.com>
* Juan Carlos Funes <juan@vauxoo.com>
* Federico Cruz <federico.cruz@openpyme.mx>
* Agustín Cruz <agustin.cruz@openpyme.mx>
../CONTRIBUTORS.rst
\ No newline at end of file
# l10n_mx_ir_attachment_facture modulo
Este modulo esta destinado a ser el principal manejador cuando se trate de timbrar
un documento en el SAT. El modulo maneja todo el proceso necesario; desde la creacion del
archivo XML, pasando por la creacion el sello digital, timbrado del XML en el SAT, hasta la creacion del archivo PDF
## Uso del modulo
El archivo python principal de este modulo es **ir_attachment_facture.py**.
Los otros archivos python solo se encargan de proporcionar una relacion entre el archivo ir_attachment_facture.py
con el resto del ERP.
Por ejemplo analizemos **account_journal.py**::
sign_sat = fields.Boolean(
'Sign SAT', copy=False,
help='If this field is enabled, then sign through the'
' webservice of the Mexican SAT'
)
param_pacs = fields.One2many(
'params.pac', 'pararm_pac_id'
)
`sign_sat` es usado para indicarle al ERP si los documentos creados en el diario
deben ser timbrados en el SAT o no
`param_pacs` nos permite seleccionar los proveedores PACs que queremos esten disponibles
en ese diario, pueden ser tantos como el ERP tenga disponibles
![Configuracion de diario](diario_configuracion.png)
### ir_attachment_facture.py
Este archivo de python tienen dos funciones principales:
1. Una de ellas es `sign_cfdi_sat`, la cual es usada para timbrar uno o muchos CFDIs ante el SAT.
2. La segunda funcion es `cancel_cfdi_sat`, la cual es usada para cancelar CFDIs
Hablando de timbrar un CFDI podemos revisemos los siguientes datos importantes:
1. Cuando se emite un CFDI, los pasos para timbrarlo ante el SAT son siempre los mismos, no importa de que tipo de CFDI se trate.
2. Los unicos cambios en el proceso de timbrar un CFDI de un tipo o uno de otro, son la estructura de los arhivos XML y PDF, todo lo demas se mantiene igual.
Entonces este archivo realiza todo el funcionamiento en general y deja para **ir_attachment_facturae_config.py** el resto
En resumen:
1. Ningun otro modulo nececista agregar funcionalidad alguna para tener su CFDI timbrado ante el SAT, **este modulo lo hace todo**
2. Cualquier modulo que quiera hacer uso de este modulo debe añadir un registro en la tabla **ir_attachment_facture_config**
### ir_attachment_facturae_config.py
Que es esto??
Como comentamos anteriormente, la unica diferencia al momento de timbar una factura y una nomia, por dar un ejemmplo,
es la estructura de sus archivos XML y PDF.
Entoces lo que la tabla **ir_attachment_facture_config** contiene es
**La tabla ir_attachment_facturae_config debe contener la refencia a las plantillas a usar para la generacion del XML y PDF (tanto de timbrado como de cancelacion)**
Un ejemplo tomado del modulo l10n_mx_facturae:
> **Note:**
El modulo l10n_mx_facturae se conectara al modulo l10n_mx_ir_attachment para que juntos puedan timbrar una factura
>
Solo dos cosas requiere hacer el modulo l10n_mx_facturae
1. Crear una entrada en ir_attachment_facture_config::
<record model="ir.attachment.facturae.mx.config" id="ir_attachment_facturae_mx_config_invoice">
<field name="model">account.invoice</field>
<field name="template_xml_sign">invoice.report.aaero.xml</field>
<field name="template_pdf_sign">invoice.report.aaero</field>
</record>
2. Llamar a la funcion `sign_cfdi_sat`::
def sign_invoice_sat(self, cr, uid, ids, context=None):
context = dict(context or {})
ir_attach_obj = self.pool.get('ir.attachment.facturae.mx')
for account_invoice in self.browse(cr, uid, ids, context):
if account_invoice.journal_id.sign_sat:
ir_attach_obj.sign_cfdi_sat(
cr, uid, ids, object_id=account_invoice.id,
object_model='account.invoice',**
name=account_invoice.fname_invoice)
### Como funciona `sign_cfdi_sat`::
Busca en la tabla ir_attachment_facture_config que tenga modelo
igual al parametro object_model
if Existe alguna entrada:
if no existe un objeto ir_attachment_facture previo relacionado con el documento a timbrar en el SAT:
1.- Recrear objecto a timbrar usado los paramentros pasados a la funcion
(_object_model_ y _object_id_),
2.- Crear objecto ir_attachment_facturae
3.- Crear archivo XML
4.- Firmar archivo XML usando los certificados cargados en el ERP
5.- Mandar a timbrar el archivo timbrado, pasando como paremetro todos
los PACs posibles que se seleccionaron a usar en el diario.
El diario se lee del objecto recreado en el paso 1
6.- Guardar XML timbrado en ir_attachment, pero haciendo referencia al
objecto recreado en paso 1
7.- Crear archivo PDF
8.- Guardar archivo PDF creado en ir_attachment, pero haciendo referencia al
objecto recreado en paso 1
else:
Mandar mensaje de Error al usuario
### Descripcion de los parametros de `sign_cfdi_sat`
A continuacion se describe los paramentros que recibe la funcion y su uso
1. `object_id`: Id del objecto a timbrar. Ejemplo: 150
2. `object_model`: Nombre del modelo a timbrar. Ejemplo: account.invoice
3. `name`: Nombre que tendran los archivos adjuntos. Ejemplo: F-150
../README.rst
\ No newline at end of file
......@@ -2,7 +2,7 @@
{
'name': 'CFDI',
'version': '2.0.3',
'version': '2.0.4',
'author': 'OpenPyme',
'category': 'Localization/Mexico',
'website': 'http://www.openpyme.mx/',
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment