Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion l10n_uy_account/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
'author': 'ADHOC SA',
'category': 'Localization',
'license': 'LGPL-3',
'version': "15.0.1.1.0",
'version': "15.0.1.2.0",
'depends': [
'l10n_latam_invoice_document',
'l10n_latam_base',
Expand All @@ -20,6 +20,7 @@
'data/l10n_latam.document.type.csv',
'data/l10n_latam_identification_type_data.xml',
'data/account_tax_group_data.xml',
'data/account.tax.group.csv',
'data/account_chart_template_data.xml',
'data/account.account.template.csv',
'data/account.group.template.csv',
Expand All @@ -32,6 +33,7 @@
'views/account_journal_view.xml',
'views/res_company_view.xml',
'views/l10n_uy_adenda_views.xml',
'views/account_tax_group_views.xml',
'data/account_chart_template_data2.xml',
'data/res.country.state.csv',
'data/res_currency_data.xml',
Expand Down
409 changes: 409 additions & 0 deletions l10n_uy_account/data/account.tax.group.csv

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions l10n_uy_account/data/account_tax_template_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<field name="sequence">2</field>
<field name="amount_type">fixed</field>
<field eval="0.0" name="amount"/>
<field name="tax_group_id" ref="l10n_uy_account.tax_group_vat_exempt"/>
<field name="tax_group_id" ref="l10n_uy_account.tax_group_2181_504"/>
<field name="type_tax_use">purchase</field>
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
(0,0, {
Expand Down Expand Up @@ -183,7 +183,7 @@
<field name="sequence">1</field>
<field eval="22" name="amount"/>
<field name="amount_type">percent</field>
<field name="tax_group_id" ref="l10n_uy_account.tax_group_vat_22"/>
<field name="tax_group_id" ref="l10n_uy_account.tax_group_2181_505"/>
<field name="type_tax_use">purchase</field>
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
(0,0, {
Expand Down
26 changes: 26 additions & 0 deletions l10n_uy_account/migrations/15.0.1.2.0/mig_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<odoo noupdate="1">

<record id="tax_group_vat_22" model="account.tax.group">
<field name="name">IVA Ventas 22%</field>
<field name="l10n_uy_form">2181</field>
<field name="l10n_uy_code">502</field>
<field name="l10n_uy_imprubro">3</field>
<field name="l10n_uy_description">IVA Ventas Tasa Básica a Contribuyentes</field>
<field name="country_id" ref="base.uy"/>
</record>

<record id="tax_group_vat_10" model="account.tax.group">
<field name="name">IVA Ventas 10%</field>
<field name="l10n_uy_form">2181</field>
<field name="l10n_uy_code">503</field>
<field name="l10n_uy_imprubro">3</field>
<field name="l10n_uy_description">IVA Ventas Tasa Mínima a Contribuyentes</field>
<field name="country_id" ref="base.uy"/>
</record>

<record id="tax_group_vat_exempt" model="account.tax.group">
<field name="name">IVA Ventas Exento</field>
<field name="country_id" ref="base.uy"/>
</record>

</odoo>
27 changes: 27 additions & 0 deletions l10n_uy_account/migrations/15.0.1.2.0/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from openupgradelib import openupgrade
import logging

logger = logging.getLogger(__name__)


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(
env.cr, 'l10n_uy_account',
'migrations/15.0.1.2.0/mig_data.xml')

logger.info('Corregir impuestos compras UY: Ahora que los impuestos de iva y ventas deben ser diferenciados por'
' codigo DGI segun grupo de impuesto')
taxes = env['account.tax'].search([('type_tax_use', '=', 'purchase')])

# IVA Compras 22%
taxes.filtered(lambda x: x.tax_group_id == env.ref('l10n_uy_account.tax_group_vat_22')).tax_group_id = env.ref(
"l10n_uy_account.tax_group_2181_505")

# IVA Compras Exento
taxes.filtered(lambda x: x.tax_group_id == env.ref('l10n_uy_account.tax_group_vat_exempt')).tax_group_id = env.ref(
"l10n_uy_account.tax_group_2181_504")

# IVA Compras 10%
taxes.filtered(lambda x: x.tax_group_id == env.ref('l10n_uy_account.tax_group_vat_10')).tax_group_id = env.ref(
"l10n_uy_account.tax_group_2181_506")
1 change: 1 addition & 0 deletions l10n_uy_account/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
from . import res_partner
from . import l10n_uy_adenda
from . import l10n_latam_document_type
from . import account_tax_group
7 changes: 5 additions & 2 deletions l10n_uy_account/models/account_move.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,17 @@ def _l10n_uy_check_moves_use_documents(self):
"The selected Journal can't be used in this transaction, please select one that doesn't use documents"
" as these are just for Invoices."))

def get_uy_sales_vat_tax_groups(self):
return self.env.ref('l10n_uy_account.tax_group_vat_22') + self.env.ref('l10n_uy_account.tax_group_vat_10') \
+ self.env.ref('l10n_uy_account.tax_group_vat_exempt')

def _check_uruguayan_invoices(self):
uy_invs = self.filtered(lambda x: (x.company_id.country_id.code == 'UY' and x.l10n_latam_use_documents))
if not uy_invs:
return True
uy_invs.mapped('partner_id').check_vat()

uruguayan_vat_taxes = self.env.ref('l10n_uy_account.tax_group_vat_22') + self.env.ref('l10n_uy_account.tax_group_vat_10') \
+ self.env.ref('l10n_uy_account.tax_group_vat_exempt')
uruguayan_vat_taxes = self.get_uy_sales_vat_tax_groups()

# Check that we do not send any tax in exportation invoices
expo_cfes = uy_invs.filtered(
Expand Down
12 changes: 12 additions & 0 deletions l10n_uy_account/models/account_tax_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from odoo import api, fields, models


class AccountTaxGroup(models.Model):

_inherit = 'account.tax.group'

l10n_uy_form = fields.Char("(UY) Form")
l10n_uy_code = fields.Char("(UY) Code")
l10n_uy_imprubro = fields.Char("(UY) Rubro")
l10n_uy_description = fields.Char("(UY) Description")
l10n_uy_retention = fields.Boolean("(UY) Is Retention")
33 changes: 33 additions & 0 deletions l10n_uy_account/views/account_tax_group_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<record id="view_tax_group_tree" model="ir.ui.view">
<field name="name">account.tax.group.tree</field>
<field name="model">account.tax.group</field>
<field name="inherit_id" ref="account.view_tax_group_tree"/>
<field name="arch" type="xml">
<field name="country_id" position="after">
<field name="l10n_uy_form"/>
<field name="l10n_uy_code"/>
<field name="l10n_uy_description"/>
<field name="l10n_uy_retention"/>
</field>
</field>
</record>

<record id="account_tax_group_view_search" model="ir.ui.view">
<field name="name">account.tax.group.search.filters</field>
<field name="model">account.tax.group</field>
<field name="inherit_id" ref="account.account_tax_group_view_search"/>
<field name="arch" type="xml">
<search>
<field name="l10n_uy_code"/>
<field name="l10n_uy_form"/>
<field name="l10n_uy_description"/>
</search>
<group position="inside">
<filter name="group_form" string="Form (UY)" context="{'group_by': 'l10n_uy_form'}"/>
</group>
</field>
</record>

</odoo>
2 changes: 1 addition & 1 deletion l10n_uy_edi/models/account_tax.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class AccountTax(models.Model):

@api.model
def _l10n_uy_get_taxes(self, company):
""" return the related taxes recordset for basica, minima y exento """
""" return the related sales vat taxes recordset for basica, minima y exento """
taxes = self.search([('company_id', '=', company.id)])
tax_vat_22 = taxes.filtered(lambda x: x.tax_group_id == self.env.ref("l10n_uy_account.tax_group_vat_22"))
tax_vat_10 = taxes.filtered(lambda x: x.tax_group_id == self.env.ref("l10n_uy_account.tax_group_vat_10"))
Expand Down
25 changes: 7 additions & 18 deletions l10n_uy_reports/wizards/form_report_wiz.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,32 +79,21 @@ def _get_form_2181_data(self):

return the string with the lines of the file to write """
lines = []

# TODO KZ Importante. por lo que vimos en el archivo generado esta mezclando iva compras e iva ventas.
line_code = {
self._search_tax('vat_22', 'sale'): '502', # 502 IVA Ventas Tasa Básica a Contribuyentes
self._search_tax('vat_10', 'sale'): '503', # 503 IVA Ventas Tasa Mínima a Contribuyentes
self._search_tax('vat_exempt', 'purchase'): '504', # Compras Plaza Exentas de IVA
self._search_tax('vat_22', 'purchase'): '505', # 505 IVA Compras Plaza Tasa Básica
self._search_tax('vat_10', 'purchase'): '506', # 506 IVA Compras Plaza Tasa Mínima
}
# Estos dos parece que tambien van pero no tenemos un impuestos para colocarlo
# ("507", "507 - IVA Ventas tasa 10% a Contribuyentes"),
# ("508", "508 - IVA Compras Plaza Tasa 10%"),

taxes_raw = list(line_code.keys())
taxes = self.env['account.tax']
for item in taxes_raw:
taxes |= item
invoices = self._get_invoices()
UYU_currency = self.env.ref('base.UYU')

line_code = {}
taxes = invoices.mapped('line_ids.tax_ids').filtered(lambda x: x.tax_group_id.form == "2181")
for tax in taxes:
line_code.update({tax: tax.tax_group_id.l10n_uy_code})

tax_code = {}
taxes_group_ids = taxes.mapped('tax_group_id').ids
for tax in taxes:
tax_code[(tax.tax_group_id.id, tax.type_tax_use)] = line_code.get(tax)

invoices = self._get_invoices()
UYU_currency = self.env.ref('base.UYU')

# Revisando que todos los impuestos esten bien configurados
error = ""
for line in invoices.line_ids:
Expand Down