diff --git a/addons/l10n_pe/__manifest__.py b/addons/l10n_pe/__manifest__.py index 9898a9b3fd8cd88d5e61b2bb9b700f918406265c..ede6dc5f6dff88624542521e76cddaeddef37593 100644 --- a/addons/l10n_pe/__manifest__.py +++ b/addons/l10n_pe/__manifest__.py @@ -1,7 +1,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. { 'name': 'Peru - Accounting', - "version": "2.0", + "version": "3.0", 'summary': "PCGE Simplified", 'category': 'Accounting/Localizations/Account Charts', 'author': 'Vauxoo, Odoo', diff --git a/addons/l10n_pe/data/account_tax_data.xml b/addons/l10n_pe/data/account_tax_data.xml index b5a159812dcb88e60786a5ef370e68e5ef2ee7e1..0de802662db6718c6efbfa2af4bfbec3024e4f93 100644 --- a/addons/l10n_pe/data/account_tax_data.xml +++ b/addons/l10n_pe/data/account_tax_data.xml @@ -223,6 +223,124 @@ }), ]"/> </record> + <record id="sale_tax_igv_18g_ng" model="account.tax.template"> + <field name="chart_template_id" ref="pe_chart_template"/> + <field name="name">18% Gravadas y No Gravadas</field> + <field name="description">IGV</field> + <field name="l10n_pe_edi_tax_code">1000</field> + <field name="l10n_pe_edi_unece_category">S</field> + <field name="amount">18.0</field> + <field name="type_tax_use">purchase</field> + <field name="sequence">1</field> + <field name="include_base_amount">1</field> + <field name="tax_group_id" ref="tax_group_igv_g_ng"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('chart40117'), + }), + (0,0, { + 'factor_percent': 0, + 'repartition_type': 'tax', + 'account_id': ref('chart6411'), + }), + + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('chart40117'), + }), + (0,0, { + 'factor_percent': 0, + 'repartition_type': 'tax', + 'account_id': ref('chart6411'), + }), + ]"/> + </record> + <record id="sale_tax_igv_18_ng" model="account.tax.template"> + <field name="chart_template_id" ref="pe_chart_template"/> + <field name="name">18% No Gravadas</field> + <field name="description">IGV NG</field> + <field name="l10n_pe_edi_tax_code">1000</field> + <field name="l10n_pe_edi_unece_category">S</field> + <field name="amount">18.0</field> + <field name="type_tax_use">purchase</field> + <field name="sequence">1</field> + <field name="include_base_amount">1</field> + <field name="tax_group_id" ref="tax_group_igv_ng"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('chart40116'), + }), + + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('chart40116'), + }), + ]"/> + </record> + <record id="purchase_tax_exp_0" model="account.tax.template"> + <field name="chart_template_id" ref="pe_chart_template"/> + <field name="name">0% EXP</field> + <field name="description">EXP</field> + <field name="l10n_pe_edi_tax_code">9995</field> + <field name="l10n_pe_edi_unece_category">S</field> + <field name="amount">0</field> + <field name="type_tax_use">purchase</field> + <field name="sequence">1</field> + <field name="include_base_amount">1</field> + <field name="tax_group_id" ref="tax_group_exp"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('chart40115'), + }), + + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('chart40115'), + }), + ]"/> + </record> <record id="purchase_tax_exo" model="account.tax.template"> <field name="chart_template_id" ref="pe_chart_template"/> <field name="name">0% Exonerated</field> diff --git a/addons/l10n_pe/data/account_tax_group_data.xml b/addons/l10n_pe/data/account_tax_group_data.xml index 25646feb9f9b731290763f80d76919d112fcd7eb..51893c5bbe1bc44e3e040bd20b97f407420c06c3 100644 --- a/addons/l10n_pe/data/account_tax_group_data.xml +++ b/addons/l10n_pe/data/account_tax_group_data.xml @@ -5,6 +5,16 @@ <field name="sequence">0</field> <field name="country_id" ref="base.pe"/> </record> + <record id="tax_group_igv_g_ng" model="account.tax.group"> + <field name="name">IGV GyNG</field> + <field name="sequence">0</field> + <field name="country_id" ref="base.pe"/> + </record> + <record id="tax_group_igv_ng" model="account.tax.group"> + <field name="name">IGV NG</field> + <field name="sequence">0</field> + <field name="country_id" ref="base.pe"/> + </record> <record id="tax_group_ivap" model="account.tax.group"> <field name="name">IVAP</field> <field name="sequence">0</field> @@ -50,5 +60,9 @@ <field name="sequence">0</field> <field name="country_id" ref="base.pe"/> </record> + <record id="tax_group_ret" model="account.tax.group"> + <field name="name">RET</field> + <field name="sequence">100</field> + </record> </data> </odoo> diff --git a/addons/l10n_pe/data/l10n_latam_document_type_data.xml b/addons/l10n_pe/data/l10n_latam_document_type_data.xml index 97c3821b9bf5ac60c01c99d8587ed4bf3ec07808..589f5ac7d41bb66c4d2fe3c0ed716c96b85152c5 100644 --- a/addons/l10n_pe/data/l10n_latam_document_type_data.xml +++ b/addons/l10n_pe/data/l10n_latam_document_type_data.xml @@ -9,6 +9,15 @@ <field name='doc_code_prefix'>F</field> <field name='internal_type'>invoice</field> </record> + <record model='l10n_latam.document.type' id='document_type03'> + <field name='sequence'>10</field> + <field name='code'>02</field> + <field name='report_name'>Recibo por Honorarios</field> + <field name='name'>Recibo por Honorarios</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>R</field> + <field name='internal_type'>invoice</field> + </record> <record model='l10n_latam.document.type' id='document_type02'> <field name='sequence'>20</field> <field name='code'>03</field> @@ -18,6 +27,33 @@ <field name='doc_code_prefix'>B</field> <field name='internal_type'>invoice</field> </record> + <record model='l10n_latam.document.type' id='document_type04'> + <field name='sequence'>20</field> + <field name='code'>04</field> + <field name='report_name'>Liquidación de compra</field> + <field name='name'>Liquidación de compra</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>L</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type05'> + <field name='sequence'>20</field> + <field name='code'>05</field> + <field name='report_name'>Boletos de Transporte Aéreo que emiten las CompañÃas de Aviación Comercial por el servicio de transporte aéreo regular de pasajeros, emitido de manera manual, mecanizada o por medios electrónicos (BME)</field> + <field name='name'>Boletos de Transporte Aéreo que emiten las CompañÃas de Aviación Comercial por el servicio de transporte aéreo regular de pasajeros, emitido de manera manual, mecanizada o por medios electrónicos (BME)</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type06'> + <field name='sequence'>20</field> + <field name='code'>06</field> + <field name='report_name'>Carta de porte aéreo por el servicio de transporte de carga aérea</field> + <field name='name'>Carta de porte aéreo por el servicio de transporte de carga aérea</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> <record model='l10n_latam.document.type' id='document_type07'> <field name='sequence'>40</field> <field name='code'>07</field> @@ -54,6 +90,96 @@ <field name='doc_code_prefix'>B</field> <field name='internal_type'>debit_note</field> </record> + <record model='l10n_latam.document.type' id='document_type10'> + <field name='sequence'>50</field> + <field name='code'>10</field> + <field name='report_name'>Recibo por Arrendamiento</field> + <field name='name'>Recibo por Arrendamiento</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>R</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type11'> + <field name='sequence'>50</field> + <field name='code'>11</field> + <field name='report_name'>Póliza emitida por las Bolsas de Valores, Bolsas de Productos o Agentes de Intermediación por operaciones realizadas en las Bolsas de Valores o Productos o fuera de las mismas, autorizadas por SMV</field> + <field name='name'>Póliza emitida por las Bolsas de Valores, Bolsas de Productos o Agentes de Intermediación por operaciones realizadas en las Bolsas de Valores o Productos o fuera de las mismas, autorizadas por SMV</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>P</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type12'> + <field name='sequence'>50</field> + <field name='code'>12</field> + <field name='report_name'>Ticket o cinta emitido por máquina registradora</field> + <field name='name'>Ticket o cinta emitido por máquina registradora</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>T</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type13'> + <field name='sequence'>50</field> + <field name='code'>13</field> + <field name='report_name'>Documentos emitidos por las empresas del sistema financiero y de seguros, y por las cooperativas de ahorro y crédito no autorizadas a captar recursos del público, que se encuentren bajo el control de la Superintendencia de Banca, Seguros y AFP.</field> + <field name='name'>Documentos emitidos por las empresas del sistema financiero y de seguros, y por las cooperativas de ahorro y crédito no autorizadas a captar recursos del público, que se encuentren bajo el control de la Superintendencia de Banca, Seguros y AFP.</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type14'> + <field name='sequence'>50</field> + <field name='code'>14</field> + <field name='report_name'>Recibo por servicios públicos de suministro de energÃa eléctrica, agua, teléfono, telex y telegráficos y otros servicios complementarios que se incluyan en el</field> + <field name='name'>Recibo por servicios públicos de suministro de energÃa eléctrica, agua, teléfono, telex y telegráficos y otros servicios complementarios que se incluyan en el</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>R</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type15'> + <field name='sequence'>50</field> + <field name='code'>15</field> + <field name='report_name'>Boletos emitidos por el servicio de transporte terrestre regular urbano de pasajeros y el ferroviario público de pasajeros prestado en vÃa férrea local.</field> + <field name='name'>Boletos emitidos por el servicio de transporte terrestre regular urbano de pasajeros y el ferroviario público de pasajeros prestado en vÃa férrea local.</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type16'> + <field name='sequence'>50</field> + <field name='code'>16</field> + <field name='report_name'>Boletos de viaje emitidos por las empresas de transporte nacional de pasajeros, siempre que cuenten con la autorización de la autoridad competente, en las rutas autorizadas. VÃa terrestre o ferroviario público no emitido por medios electrónicos (BVME)</field> + <field name='name'>Boletos de viaje emitidos por las empresas de transporte nacional de pasajeros, siempre que cuenten con la autorización de la autoridad competente, en las rutas autorizadas. VÃa terrestre o ferroviario público no emitido por medios electrónicos (BVME)</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type17'> + <field name='sequence'>50</field> + <field name='code'>17</field> + <field name='report_name'>Documento emitido por la Iglesia Católica por el arrendamiento de bienes inmuebles</field> + <field name='name'>Documento emitido por la Iglesia Católica por el arrendamiento de bienes inmuebles</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type18'> + <field name='sequence'>50</field> + <field name='code'>18</field> + <field name='report_name'>Documento emitido por las Administradoras Privadas de Fondo de Pensiones que se encuentran bajo la supervisión de la Superintendencia de Banca, Seguros y AFP</field> + <field name='name'>Documento emitido por las Administradoras Privadas de Fondo de Pensiones que se encuentran bajo la supervisión de la Superintendencia de Banca, Seguros y AFP</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type19'> + <field name='sequence'>50</field> + <field name='code'>19</field> + <field name='report_name'>Boleto o entrada por atracciones y espectáculos públicos</field> + <field name='name'>Boleto o entrada por atracciones y espectáculos públicos</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> <record model='l10n_latam.document.type' id='document_type20'> <field name='sequence'>60</field> <field name='code'>20</field> @@ -63,6 +189,150 @@ <field name='doc_code_prefix'>R</field> <field name='internal_type'/> </record> + <record model='l10n_latam.document.type' id='document_type21'> + <field name='sequence'>60</field> + <field name='code'>21</field> + <field name='report_name'>Conocimiento de embarque por el servicio de transporte de carga marÃtima</field> + <field name='name'>Conocimiento de embarque por el servicio de transporte de carga marÃtima</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type22'> + <field name='sequence'>60</field> + <field name='code'>22</field> + <field name='report_name'>Comprobante por Operaciones No Habituales</field> + <field name='name'>Comprobante por Operaciones No Habituales</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type23'> + <field name='sequence'>60</field> + <field name='code'>23</field> + <field name='report_name'>Pólizas de Adjudicación emitidas con ocasión del remate o adjudicación de bienes por venta forzada, por los martilleros o las entidades que rematen o subasten bienes por cuenta de terceros</field> + <field name='name'>Pólizas de Adjudicación emitidas con ocasión del remate o adjudicación de bienes por venta forzada, por los martilleros o las entidades que rematen o subasten bienes por cuenta de terceros</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type24'> + <field name='sequence'>60</field> + <field name='code'>24</field> + <field name='report_name'>Certificado de pago de regalÃas emitidas por PERUPETRO S.A</field> + <field name='name'>Certificado de pago de regalÃas emitidas por PERUPETRO S.A</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type25'> + <field name='sequence'>60</field> + <field name='code'>25</field> + <field name='report_name'>Documento de Atribución (Ley del Impuesto General a las Ventas e Impuesto Selectivo al Consumo, Art. 19º, último párrafo, R.S. N° 022-98-SUNAT).</field> + <field name='name'>Documento de Atribución (Ley del Impuesto General a las Ventas e Impuesto Selectivo al Consumo, Art. 19º, último párrafo, R.S. N° 022-98-SUNAT).</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type26'> + <field name='sequence'>60</field> + <field name='code'>26</field> + <field name='report_name'>Recibo por el Pago de la Tarifa por Uso de Agua Superficial con fines agrarios y por el pago de la Cuota para la ejecución de una determinada obra o actividad acordada por la Asamblea General de la Comisión de Regantes o Resolución expedida por el Jefe de la Unidad de Aguas y de Riego (Decreto Supremo N° 003-90-AG, Arts. 28 y 48)</field> + <field name='name'>Recibo por el Pago de la Tarifa por Uso de Agua Superficial con fines agrarios y por el pago de la Cuota para la ejecución de una determinada obra o actividad acordada por la Asamblea General de la Comisión de Regantes o Resolución expedida por el Jefe de la Unidad de Aguas y de Riego (Decreto Supremo N° 003-90-AG, Arts. 28 y 48)</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>R</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type27'> + <field name='sequence'>60</field> + <field name='code'>27</field> + <field name='report_name'>Seguro Complementario de Trabajo de Riesgo</field> + <field name='name'>Seguro Complementario de Trabajo de Riesgo</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>S</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type28'> + <field name='sequence'>60</field> + <field name='code'>28</field> + <field name='report_name'>Documentos emitidos por los servicios aeroportuarios prestados a favor de los pasajeros, mediante mecanismo de etiquetas autoadhesivas.</field> + <field name='name'>Documentos emitidos por los servicios aeroportuarios prestados a favor de los pasajeros, mediante mecanismo de etiquetas autoadhesivas.</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type29'> + <field name='sequence'>60</field> + <field name='code'>29</field> + <field name='report_name'>Documentos emitidos por la COFOPRI en calidad de oferta de venta de terrenos, los correspondientes a las subastas públicas y a la retribución de los servicios que presta</field> + <field name='name'>Documentos emitidos por la COFOPRI en calidad de oferta de venta de terrenos, los correspondientes a las subastas públicas y a la retribución de los servicios que presta</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type30'> + <field name='sequence'>60</field> + <field name='code'>30</field> + <field name='report_name'>Documentos emitidos por las empresas que desempeñan el rol adquirente en los sistemas de pago mediante tarjetas de crédito y débito, emitidas por bancos e instituciones financieras o crediticias, domiciliados o no en el paÃs.</field> + <field name='name'>Documentos emitidos por las empresas que desempeñan el rol adquirente en los sistemas de pago mediante tarjetas de crédito y débito, emitidas por bancos e instituciones financieras o crediticias, domiciliados o no en el paÃs.</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type32'> + <field name='sequence'>60</field> + <field name='code'>32</field> + <field name='report_name'>Documentos emitidos por las empresas recaudadoras de la denominada GarantÃa de Red Principal a la que hace referencia el numeral 7.6 del artÃculo 7° de la Ley N° 27133 – Ley de Promoción del Desarrollo de la Industria del Gas Natural</field> + <field name='name'>Documentos emitidos por las empresas recaudadoras de la denominada GarantÃa de Red Principal a la que hace referencia el numeral 7.6 del artÃculo 7° de la Ley N° 27133 – Ley de Promoción del Desarrollo de la Industria del Gas Natural</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type33'> + <field name='sequence'>60</field> + <field name='code'>33</field> + <field name='report_name'>Manifiesto de Pasajeros</field> + <field name='name'>Manifiesto de Pasajeros</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>M</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type34'> + <field name='sequence'>60</field> + <field name='code'>34</field> + <field name='report_name'>Documento del Operador</field> + <field name='name'>Documento del Operador</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type35'> + <field name='sequence'>60</field> + <field name='code'>35</field> + <field name='report_name'>Documento del PartÃcipe</field> + <field name='name'>Documento del PartÃcipe</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type36'> + <field name='sequence'>60</field> + <field name='code'>36</field> + <field name='report_name'>Recibo de Distribución de Gas Natural</field> + <field name='name'>Recibo de Distribución de Gas Natural</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>R</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type37'> + <field name='sequence'>60</field> + <field name='code'>37</field> + <field name='report_name'>Documentos que emitan los concesionarios del servicio de revisiones técnicas vehiculares, por la prestación de dicho servicio</field> + <field name='name'>Documentos que emitan los concesionarios del servicio de revisiones técnicas vehiculares, por la prestación de dicho servicio</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> <record model='l10n_latam.document.type' id='document_type40'> <field name='sequence'>60</field> <field name='code'>40</field> @@ -72,4 +342,202 @@ <field name='doc_code_prefix'>P</field> <field name='internal_type'/> </record> + <record model='l10n_latam.document.type' id='document_type41'> + <field name='sequence'>70</field> + <field name='code'>41</field> + <field name='report_name'>Comprobante de Percepción - Venta interna</field> + <field name='name'>Comprobante de Percepción - Venta interna</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type42'> + <field name='sequence'>70</field> + <field name='code'>42</field> + <field name='report_name'>Documentos emitidos por las empresas que desempeñan el rol adquiriente en los sistemas de pago mediante tarjetas de crédito emitidas por ellas mismas</field> + <field name='name'>Documentos emitidos por las empresas que desempeñan el rol adquiriente en los sistemas de pago mediante tarjetas de crédito emitidas por ellas mismas</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type43'> + <field name='sequence'>70</field> + <field name='code'>43</field> + <field name='report_name'>Boletos emitidos por las CompañÃas de Aviación Comercial que prestan servicios de transporte aéreo no regular de pasajeros y transporte aéreo especial de pasajeros.</field> + <field name='name'>Boletos emitidos por las CompañÃas de Aviación Comercial que prestan servicios de transporte aéreo no regular de pasajeros y transporte aéreo especial de pasajeros.</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type44'> + <field name='sequence'>70</field> + <field name='code'>44</field> + <field name='report_name'>Billetes de loterÃa, rifas y apuestas. </field> + <field name='name'>Billetes de loterÃa, rifas y apuestas. </field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type45'> + <field name='sequence'>70</field> + <field name='code'>45</field> + <field name='report_name'>Documentos emitidos por centros educativos y culturales, universidades, asociaciones y fundaciones, en lo referente a actividades no gravadas con tributos administrados por la SUNAT.</field> + <field name='name'>Documentos emitidos por centros educativos y culturales, universidades, asociaciones y fundaciones, en lo referente a actividades no gravadas con tributos administrados por la SUNAT.</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type46'> + <field name='sequence'>70</field> + <field name='code'>46</field> + <field name='report_name'>Formulario de Declaración - pago o Boleta de pago de tributos Internos</field> + <field name='name'>Formulario de Declaración - pago o Boleta de pago de tributos Internos</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>F</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type48'> + <field name='sequence'>70</field> + <field name='code'>48</field> + <field name='report_name'>Comprobante de Operaciones - Ley N° 29972</field> + <field name='name'>Comprobante de Operaciones - Ley N° 29972</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type49'> + <field name='sequence'>70</field> + <field name='code'>49</field> + <field name='report_name'>Constancia de Depósito - IVAP (Ley 28211)</field> + <field name='name'>Constancia de Depósito - IVAP (Ley 28211)</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type50'> + <field name='sequence'>70</field> + <field name='code'>50</field> + <field name='report_name'>Declaración Única de Aduanas - Importación definitiva</field> + <field name='name'>Declaración Única de Aduanas - Importación definitiva</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type51'> + <field name='sequence'>70</field> + <field name='code'>51</field> + <field name='report_name'>Póliza o DUI Fraccionada</field> + <field name='name'>Póliza o DUI Fraccionada</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>P</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type52'> + <field name='sequence'>70</field> + <field name='code'>52</field> + <field name='report_name'>Despacho Simplificado - Importación Simplificada</field> + <field name='name'>Despacho Simplificado - Importación Simplificada</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type53'> + <field name='sequence'>70</field> + <field name='code'>53</field> + <field name='report_name'>Declaración de MensajerÃa o Courier</field> + <field name='name'>Declaración de MensajerÃa o Courier</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>D</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type54'> + <field name='sequence'>70</field> + <field name='code'>54</field> + <field name='report_name'>Liquidación de Cobranza</field> + <field name='name'>Liquidación de Cobranza</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>L</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type55'> + <field name='sequence'>70</field> + <field name='code'>55</field> + <field name='report_name'>BVME para transporte ferroviario de pasajeros</field> + <field name='name'>BVME para transporte ferroviario de pasajeros</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>B</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type56'> + <field name='sequence'>70</field> + <field name='code'>56</field> + <field name='report_name'>Comprobante de pago SEAE</field> + <field name='name'>Comprobante de pago SEAE</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type87'> + <field name='sequence'>70</field> + <field name='code'>87</field> + <field name='report_name'>Nota de Crédito Especial</field> + <field name='name'>Nota de Crédito Especial</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>N</field> + <field name='internal_type'>credit_note</field> + </record> + <record model='l10n_latam.document.type' id='document_type88'> + <field name='sequence'>70</field> + <field name='code'>88</field> + <field name='report_name'>Nota de Débito Especial</field> + <field name='name'>Nota de Débito Especial</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>N</field> + <field name='internal_type'>debit_note</field> + </record> + <record model='l10n_latam.document.type' id='document_type89'> + <field name='sequence'>70</field> + <field name='code'>89</field> + <field name='report_name'>Nota de Ajuste de Operaciones - Ley N° 29972</field> + <field name='name'>Nota de Ajuste de Operaciones - Ley N° 29972</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>N</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type91'> + <field name='sequence'>70</field> + <field name='code'>91</field> + <field name='report_name'>Comprobante de No Domiciliado</field> + <field name='name'>Comprobante de No Domiciliado</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>C</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type96'> + <field name='sequence'>70</field> + <field name='code'>96</field> + <field name='report_name'>Exceso de crédito fiscal por retiro de bienes</field> + <field name='name'>Exceso de crédito fiscal por retiro de bienes</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>E</field> + <field name='internal_type'>invoice</field> + </record> + <record model='l10n_latam.document.type' id='document_type97'> + <field name='sequence'>70</field> + <field name='code'>97</field> + <field name='report_name'>Nota de Crédito - No Domiciliado</field> + <field name='name'>Nota de Crédito - No Domiciliado</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>N</field> + <field name='internal_type'>credit_note</field> + </record> + <record model='l10n_latam.document.type' id='document_type98'> + <field name='sequence'>70</field> + <field name='code'>98</field> + <field name='report_name'>Nota de Débito - No Domiciliado</field> + <field name='name'>Nota de Débito - No Domiciliado</field> + <field name='country_id' ref='base.pe' /> + <field name='doc_code_prefix'>N</field> + <field name='internal_type'>debit_note</field> + </record> </odoo> diff --git a/addons/l10n_pe/demo/account_demo.py b/addons/l10n_pe/demo/account_demo.py index 289e6ce07e08bddd010160a141a8a1f421b8a9c8..bf874296958f438e31ef73aec7c3638e48dd4b16 100644 --- a/addons/l10n_pe/demo/account_demo.py +++ b/addons/l10n_pe/demo/account_demo.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- -from odoo import api, models +from datetime import datetime, timedelta +from odoo import api, Command, models class AccountChartTemplate(models.Model): @@ -9,17 +10,141 @@ class AccountChartTemplate(models.Model): @api.model def _get_demo_data_move(self): cid = self.env.company.id + + def _get_tax_by_code(code, type_tax='sale'): + taxes = self.env['account.tax'].search([ + ('company_id', '=', cid), ('type_tax_use', '=', type_tax), ('l10n_pe_edi_tax_code', '=', code)], limit=1) + return [Command.set(taxes.ids)] + model, data = super()._get_demo_data_move() + ref = self.env.ref + last_month_date = datetime.strptime(data[f'{cid}_demo_invoice_1']['invoice_date'], '%Y-%m-%d') - timedelta(days=1) if self.env.company.account_fiscal_country_id.code == "PE": - document_type = self.env.ref('l10n_pe.document_type01') - data[f'{cid}_demo_invoice_1']['l10n_latam_document_type_id'] = document_type.id - data[f'{cid}_demo_invoice_1']['l10n_latam_document_number'] = 'FFI-000001' - data[f'{cid}_demo_invoice_2']['l10n_latam_document_type_id'] = document_type.id - data[f'{cid}_demo_invoice_2']['l10n_latam_document_number'] = 'FFI-000002' - data[f'{cid}_demo_invoice_3']['l10n_latam_document_type_id'] = document_type.id - data[f'{cid}_demo_invoice_3']['l10n_latam_document_number'] = 'FFI-000003' - data[f'{cid}_demo_invoice_followup']['l10n_latam_document_type_id'] = document_type.id - data[f'{cid}_demo_invoice_followup']['l10n_latam_document_number'] = 'FFI-000004' - data[f'{cid}_demo_invoice_5']['l10n_latam_document_number'] = '1' - data[f'{cid}_demo_invoice_equipment_purchase']['l10n_latam_document_number'] = 'INV-000089' + data[f'{cid}_demo_invoice_1']['invoice_date'] = last_month_date + data[f'{cid}_demo_invoice_1']['l10n_latam_document_number'] = 'FFF-0000001' + data[f'{cid}_demo_invoice_1']['invoice_line_ids'] = [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 25000.0, 'price_unit': 3.0, 'tax_ids': _get_tax_by_code('9997')}), + ] + data[f'{cid}_demo_invoice_2']['invoice_date'] = last_month_date + data[f'{cid}_demo_invoice_2']['l10n_latam_document_number'] = 'FFF-0000002' + data[f'{cid}_demo_invoice_2']['invoice_line_ids'] = [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 12500.0, 'price_unit': 3.0, 'tax_ids': _get_tax_by_code('1000')}), + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 1000.0, 'tax_ids': _get_tax_by_code('9997')}), + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 1500.0, 'tax_ids': _get_tax_by_code('9998')}), + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 12500.0, 'price_unit': 3.0, 'tax_ids': _get_tax_by_code('1000')}), + ] + data[f'{cid}_demo_invoice_3']['invoice_date'] = last_month_date + data[f'{cid}_demo_invoice_3']['l10n_latam_document_type_id'] = ref('l10n_pe.document_type08').id, + data[f'{cid}_demo_invoice_3']['l10n_latam_document_number'] = 'NDI-0000001' + data[f'{cid}_demo_invoice_3']['invoice_line_ids'] = [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 12500.0, 'price_unit': 3.0, 'tax_ids': _get_tax_by_code('1000')}), + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 1000.0, 'tax_ids': _get_tax_by_code('9997')}), + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 1500.0, 'tax_ids': _get_tax_by_code('9998')}), + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 12500.0, 'price_unit': 3.0, 'tax_ids': _get_tax_by_code('1000')}), + ] + data[f'{cid}_demo_invoice_followup']['move_type'] = 'in_invoice' + data[f'{cid}_demo_invoice_followup']['partner_id'] = ref('base.res_partner_2').id + data[f'{cid}_demo_invoice_followup']['invoice_date'] = last_month_date + data[f'{cid}_demo_invoice_followup']['l10n_latam_document_number'] = 'FFF-100001' + data[f'{cid}_demo_invoice_followup']['invoice_line_ids'] = [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 500.0}), + ] + data[f'{cid}_demo_invoice_5']['partner_id'] = ref('base.res_partner_2').id + data[f'{cid}_demo_invoice_5']['invoice_date'] = last_month_date + data[f'{cid}_demo_invoice_5']['l10n_latam_document_number'] = 'FFF-100002' + data[f'{cid}_demo_invoice_5']['invoice_line_ids'] = [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 500.0, 'tax_ids': _get_tax_by_code('1000', 'purchase')}), + ] + igv_gyng_tax = self.env['account.tax'].search([('company_id', '=', cid), ('type_tax_use', '=', 'purchase'), ('tax_group_id.name', '=', 'IGV GyNG')], limit=1) + data[f'{cid}_demo_invoice_equipment_purchase']['partner_id'] = ref('base.res_partner_2').id + data[f'{cid}_demo_invoice_equipment_purchase']['invoice_date'] = last_month_date + data[f'{cid}_demo_invoice_equipment_purchase']['l10n_latam_document_number'] = 'FFF-100003' + data[f'{cid}_demo_invoice_equipment_purchase']['invoice_line_ids'] = [ + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 500.0, 'quantity': 1, 'tax_ids': [Command.set(igv_gyng_tax.ids)]}), + ] + data[f'{cid}_demo_invoice_6'] = { + 'move_type': 'in_invoice', + 'partner_id': ref('base.res_partner_2').id, + 'invoice_user_id': ref('base.user_demo').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': 'FFF-100004', + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 500.0, 'quantity': 1, 'tax_ids': _get_tax_by_code('9997', 'purchase')}), + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 1000.0, 'quantity': 1, 'tax_ids': _get_tax_by_code('1000', 'purchase')}), + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 1500.0, 'quantity': 2, 'tax_ids': _get_tax_by_code('9996', 'purchase')}), + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 2000.0, 'quantity': 1, 'tax_ids': _get_tax_by_code('9998', 'purchase')}), + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 2500.0, 'quantity': 1, 'tax_ids': _get_tax_by_code('1000', 'purchase')}), + ], + } + data[f'{cid}_demo_invoice_7'] = { + 'move_type': 'in_invoice', + 'partner_id': ref('base.res_partner_12').id, + 'invoice_user_id': ref('base.user_demo').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': 'FFF-000005', + 'l10n_latam_document_type_id': ref('l10n_pe.document_type91').id, + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 25000.0, 'quantity': 3, 'tax_ids': _get_tax_by_code('9995', 'purchase')}), + ], + } + data[f'{cid}_demo_invoice_8'] = { + 'move_type': 'in_invoice', + 'partner_id': ref('base.res_partner_12').id, + 'invoice_user_id': ref('base.user_demo').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': '118-145266', + 'l10n_latam_document_type_id': ref('l10n_pe.document_type50').id, + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 3, 'quantity': 25000.0, 'tax_ids': _get_tax_by_code('9995', 'purchase')}), + ], + } + data[f'{cid}_demo_invoice_9'] = { + 'move_type': 'in_invoice', + 'partner_id': ref('base.res_partner_12').id, + 'invoice_user_id': ref('base.user_demo').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': 'FFF-100009', + 'l10n_latam_document_type_id': ref('l10n_pe.document_type91').id, + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.product_delivery_01').id, 'price_unit': 3, 'quantity': 25000.0, 'tax_ids': _get_tax_by_code('9995', 'purchase')}), + ], + } + data[f'{cid}_demo_invoice_10'] = { + 'move_type': 'out_refund', + 'partner_id': ref('base.res_partner_12').id, + 'invoice_user_id': ref('base.user_demo').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': 'CNE-0000001', + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 25000.0, 'price_unit': 3.0, 'tax_ids': _get_tax_by_code('9997')}), + ], + } + data[f'{cid}_demo_invoice_11'] = { + 'move_type': 'in_refund', + 'partner_id': ref('base.res_partner_12').id, + 'invoice_user_id': ref('base.user_demo').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': 'FFF-100005', + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 500.0}), + ], + } + data[f'{cid}_demo_invoice_12'] = { + 'move_type': 'in_invoice', + 'partner_id': ref('base.res_partner_12').id, + 'invoice_user_id': ref('base.user_demo').id, + 'l10n_latam_document_type_id': ref('l10n_pe.document_type08').id, + 'invoice_payment_term_id': ref('account.account_payment_term_end_following_month').id, + 'invoice_date': last_month_date, + 'l10n_latam_document_number': 'FFF-100006', + 'invoice_line_ids': [ + Command.create({'product_id': ref('product.consu_delivery_03').id, 'quantity': 1.0, 'price_unit': 500.0}), + ], + } return model, data diff --git a/addons/l10n_pe/models/account_move.py b/addons/l10n_pe/models/account_move.py index b763cb2875b6934d46326da11fea990c0bb5fb0d..a0a143ed983882158a0338c917277235060efc89 100644 --- a/addons/l10n_pe/models/account_move.py +++ b/addons/l10n_pe/models/account_move.py @@ -1,8 +1,37 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import models, fields +from odoo import api, models, fields from odoo.tools.sql import column_exists, create_column +class AccountMove(models.Model): + _inherit = "account.move" + + def _get_l10n_latam_documents_domain(self): + self.ensure_one() + result = super()._get_l10n_latam_documents_domain() + if self.company_id.country_id.code != "PE" or not self.journal_id.l10n_latam_use_documents: + return result + if self.journal_id.type == "sale": + result.append(("code", "in", ("01", "03", "07", "08", "20", "40"))) + return result + + @api.onchange('l10n_latam_document_type_id', 'l10n_latam_document_number') + def _inverse_l10n_latam_document_number(self): + """Inherit to complete the l10n_latam_document_number with the expected 8 characters after that a '-' + Example: Change FFF-32 by FFF-00000032, to avoid incorrect values on the reports""" + super()._inverse_l10n_latam_document_number() + to_review = self.filtered( + lambda x: x.journal_id.type == "purchase" + and x.l10n_latam_document_type_id.code in ("01", "03", "07", "08") + and x.l10n_latam_document_number + and "-" in x.l10n_latam_document_number + and x.l10n_latam_document_type_id.country_id.code == "PE" + ) + for rec in to_review: + number = rec.l10n_latam_document_number.split("-") + rec.l10n_latam_document_number = "%s-%s" % (number[0], number[1].zfill(8)) + + class AccountMoveLine(models.Model): _inherit = "account.move.line"