mirror of
https://github.com/bringout/oca-ocb-l10n_americas.git
synced 2026-04-18 04:12:06 +02:00
Initial commit: L10N_Americas packages
This commit is contained in:
commit
12b27ce151
714 changed files with 79328 additions and 0 deletions
25
README.md
Normal file
25
README.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# L10N Americas
|
||||||
|
|
||||||
|
This repository contains OCA OCB packages for l10n americas.
|
||||||
|
|
||||||
|
## Packages Included
|
||||||
|
|
||||||
|
- odoo-bringout-oca-ocb-l10n_ar
|
||||||
|
- odoo-bringout-oca-ocb-l10n_bo
|
||||||
|
- odoo-bringout-oca-ocb-l10n_br
|
||||||
|
- odoo-bringout-oca-ocb-l10n_ca
|
||||||
|
- odoo-bringout-oca-ocb-l10n_cl
|
||||||
|
- odoo-bringout-oca-ocb-l10n_co
|
||||||
|
- odoo-bringout-oca-ocb-l10n_co_pos
|
||||||
|
- odoo-bringout-oca-ocb-l10n_ec
|
||||||
|
- odoo-bringout-oca-ocb-l10n_ec_stock
|
||||||
|
- odoo-bringout-oca-ocb-l10n_gcc_invoice_stock_account
|
||||||
|
- odoo-bringout-oca-ocb-l10n_generic_coa
|
||||||
|
- odoo-bringout-oca-ocb-l10n_id_efaktur_coretax
|
||||||
|
- odoo-bringout-oca-ocb-l10n_lu_peppol_id
|
||||||
|
- odoo-bringout-oca-ocb-l10n_mx
|
||||||
|
- odoo-bringout-oca-ocb-l10n_pe
|
||||||
|
- odoo-bringout-oca-ocb-l10n_syscohada
|
||||||
|
- odoo-bringout-oca-ocb-l10n_us
|
||||||
|
- odoo-bringout-oca-ocb-l10n_uy
|
||||||
|
- odoo-bringout-oca-ocb-l10n_ve
|
||||||
106
odoo-bringout-oca-ocb-l10n_ar/README.md
Normal file
106
odoo-bringout-oca-ocb-l10n_ar/README.md
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
# Argentina - Accounting
|
||||||
|
|
||||||
|
|
||||||
|
Functional
|
||||||
|
----------
|
||||||
|
|
||||||
|
This module add accounting features for the Argentinean localization, which represent the minimal configuration needed for a company to operate in Argentina and under the AFIP (Administración Federal de Ingresos Públicos) regulations and guidelines.
|
||||||
|
|
||||||
|
Follow the next configuration steps for Production:
|
||||||
|
|
||||||
|
1. Go to your company and configure your VAT number and AFIP Responsibility Type
|
||||||
|
2. Go to Accounting / Settings and set the Chart of Account that you will like to use.
|
||||||
|
3. Create your Sale journals taking into account AFIP POS info.
|
||||||
|
|
||||||
|
Demo data for testing:
|
||||||
|
|
||||||
|
* 3 companies were created, one for each AFIP responsibility type with the respective Chart of Account installed. Choose the company that fix you in order to make tests:
|
||||||
|
|
||||||
|
* (AR) Responsable Inscripto
|
||||||
|
* (AR) Exento
|
||||||
|
* (AR) Monotributo
|
||||||
|
|
||||||
|
* Journal sales configured to Pre printed and Expo invoices in all companies
|
||||||
|
* Invoices and other documents examples already validated in “(AR) Responsable Inscripto” company
|
||||||
|
* Partners example for the different responsibility types:
|
||||||
|
|
||||||
|
* ADHOC (IVA Responsable Inscripto)
|
||||||
|
* Servicios Globales (IVA Sujeto Exento)
|
||||||
|
* Gritti (Monotributo)
|
||||||
|
* Montana Sur. IVA Liberado in Zona Franca
|
||||||
|
* Barcelona food (Cliente del Exterior)
|
||||||
|
* Odoo (Proveedor del Exterior)
|
||||||
|
|
||||||
|
Highlights:
|
||||||
|
|
||||||
|
* Chart of account will not be automatically installed, each CoA Template depends on the AFIP Responsibility of the company, you will need to install the CoA for your needs.
|
||||||
|
* No sales journals will be generated when installing a CoA, you will need to configure your journals manually.
|
||||||
|
* The Document type will be properly pre selected when creating an invoice depending on the fiscal responsibility of the issuer and receiver of the document and the related journal.
|
||||||
|
* A CBU account type has been added and also CBU Validation
|
||||||
|
|
||||||
|
|
||||||
|
Technical
|
||||||
|
---------
|
||||||
|
|
||||||
|
This module adds both models and fields that will be eventually used for the electronic invoice module. Here is a summary of the main features:
|
||||||
|
|
||||||
|
Master Data:
|
||||||
|
|
||||||
|
* Chart of Account: one for each AFIP responsibility that is related to a legal entity:
|
||||||
|
|
||||||
|
* Responsable Inscripto (RI)
|
||||||
|
* Exento (EX)
|
||||||
|
* Monotributo (Mono)
|
||||||
|
|
||||||
|
* Argentinean Taxes and Account Tax Groups (VAT taxes with the existing aliquots and other types)
|
||||||
|
* AFIP Responsibility Types
|
||||||
|
* Fiscal Positions (in order to map taxes)
|
||||||
|
* Legal Documents Types in Argentina
|
||||||
|
* Identification Types valid in Argentina.
|
||||||
|
* Country AFIP codes and Country VAT codes for legal entities, natural persons and others
|
||||||
|
* Currency AFIP codes
|
||||||
|
* Unit of measures AFIP codes
|
||||||
|
* Partners: Consumidor Final and AFIP
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-ocb-l10n_ar
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
- l10n_latam_invoice_document
|
||||||
|
- l10n_latam_base
|
||||||
|
|
||||||
|
## Manifest Information
|
||||||
|
|
||||||
|
- **Name**: Argentina - Accounting
|
||||||
|
- **Version**: 3.7
|
||||||
|
- **Category**: Accounting/Localizations/Account Charts
|
||||||
|
- **License**: LGPL-3
|
||||||
|
- **Installable**: True
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `l10n_ar`.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This package maintains the original LGPL-3 license from the upstream Odoo project.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- Overview: doc/OVERVIEW.md
|
||||||
|
- Architecture: doc/ARCHITECTURE.md
|
||||||
|
- Models: doc/MODELS.md
|
||||||
|
- Controllers: doc/CONTROLLERS.md
|
||||||
|
- Wizards: doc/WIZARDS.md
|
||||||
|
- Install: doc/INSTALL.md
|
||||||
|
- Usage: doc/USAGE.md
|
||||||
|
- Configuration: doc/CONFIGURATION.md
|
||||||
|
- Dependencies: doc/DEPENDENCIES.md
|
||||||
|
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||||
|
- FAQ: doc/FAQ.md
|
||||||
32
odoo-bringout-oca-ocb-l10n_ar/doc/ARCHITECTURE.md
Normal file
32
odoo-bringout-oca-ocb-l10n_ar/doc/ARCHITECTURE.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Architecture
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||||
|
V --> C[Controllers]
|
||||||
|
V --> W[Wizards – Transient Models]
|
||||||
|
C --> M[Models and ORM]
|
||||||
|
W --> M
|
||||||
|
M --> R[Reports]
|
||||||
|
DX[Data XML] --> M
|
||||||
|
S[Security – ACLs and Groups] -. enforces .-> M
|
||||||
|
|
||||||
|
subgraph L10n_ar Module - l10n_ar
|
||||||
|
direction LR
|
||||||
|
M:::layer
|
||||||
|
W:::layer
|
||||||
|
C:::layer
|
||||||
|
V:::layer
|
||||||
|
R:::layer
|
||||||
|
S:::layer
|
||||||
|
DX:::layer
|
||||||
|
end
|
||||||
|
|
||||||
|
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes
|
||||||
|
- Views include tree/form/kanban templates and report templates.
|
||||||
|
- Controllers provide website/portal routes when present.
|
||||||
|
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||||
|
- Data XML loads data/demo records; Security defines groups and access.
|
||||||
3
odoo-bringout-oca-ocb-l10n_ar/doc/CONFIGURATION.md
Normal file
3
odoo-bringout-oca-ocb-l10n_ar/doc/CONFIGURATION.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
Refer to Odoo settings for l10n_ar. Configure related models, access rights, and options as needed.
|
||||||
3
odoo-bringout-oca-ocb-l10n_ar/doc/CONTROLLERS.md
Normal file
3
odoo-bringout-oca-ocb-l10n_ar/doc/CONTROLLERS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Controllers
|
||||||
|
|
||||||
|
This module does not define custom HTTP controllers.
|
||||||
6
odoo-bringout-oca-ocb-l10n_ar/doc/DEPENDENCIES.md
Normal file
6
odoo-bringout-oca-ocb-l10n_ar/doc/DEPENDENCIES.md
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
|
||||||
|
- [l10n_latam_invoice_document](../../odoo-bringout-oca-ocb-l10n_latam_invoice_document)
|
||||||
|
- [l10n_latam_base](../../odoo-bringout-oca-ocb-l10n_latam_base)
|
||||||
4
odoo-bringout-oca-ocb-l10n_ar/doc/FAQ.md
Normal file
4
odoo-bringout-oca-ocb-l10n_ar/doc/FAQ.md
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
# FAQ
|
||||||
|
|
||||||
|
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||||
|
- Q: How to enable? A: Start server with --addon l10n_ar or install in UI.
|
||||||
7
odoo-bringout-oca-ocb-l10n_ar/doc/INSTALL.md
Normal file
7
odoo-bringout-oca-ocb-l10n_ar/doc/INSTALL.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-ocb-l10n_ar"
|
||||||
|
# or
|
||||||
|
uv pip install odoo-bringout-oca-ocb-l10n_ar"
|
||||||
|
```
|
||||||
27
odoo-bringout-oca-ocb-l10n_ar/doc/MODELS.md
Normal file
27
odoo-bringout-oca-ocb-l10n_ar/doc/MODELS.md
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Models
|
||||||
|
|
||||||
|
Detected core models and extensions in l10n_ar.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class l10n_ar_afip_responsibility_type
|
||||||
|
class account_chart_template
|
||||||
|
class account_fiscal_position
|
||||||
|
class account_fiscal_position_template
|
||||||
|
class account_journal
|
||||||
|
class account_move
|
||||||
|
class account_move_line
|
||||||
|
class account_tax_group
|
||||||
|
class l10n_latam_document_type
|
||||||
|
class l10n_latam_identification_type
|
||||||
|
class res_company
|
||||||
|
class res_country
|
||||||
|
class res_currency
|
||||||
|
class res_partner
|
||||||
|
class res_partner_bank
|
||||||
|
class uom_uom
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes
|
||||||
|
- Classes show model technical names; fields omitted for brevity.
|
||||||
|
- Items listed under _inherit are extensions of existing models.
|
||||||
6
odoo-bringout-oca-ocb-l10n_ar/doc/OVERVIEW.md
Normal file
6
odoo-bringout-oca-ocb-l10n_ar/doc/OVERVIEW.md
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Overview
|
||||||
|
|
||||||
|
Packaged Odoo addon: l10n_ar. Provides features documented in upstream Odoo 16 under this addon.
|
||||||
|
|
||||||
|
- Source: OCA/OCB 16.0, addon l10n_ar
|
||||||
|
- License: LGPL-3
|
||||||
28
odoo-bringout-oca-ocb-l10n_ar/doc/REPORTS.md
Normal file
28
odoo-bringout-oca-ocb-l10n_ar/doc/REPORTS.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Reports
|
||||||
|
|
||||||
|
Report definitions and templates in l10n_ar.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class AccountInvoiceReport
|
||||||
|
Model <|-- AccountInvoiceReport
|
||||||
|
```
|
||||||
|
|
||||||
|
## Available Reports
|
||||||
|
|
||||||
|
### Analytical/Dashboard Reports
|
||||||
|
- **IIBB - Purchases by jurisdiction** (Analysis/Dashboard)
|
||||||
|
- **IIBB - Sales by jurisdiction** (Analysis/Dashboard)
|
||||||
|
|
||||||
|
|
||||||
|
## Report Files
|
||||||
|
|
||||||
|
- **__init__.py** (Python logic)
|
||||||
|
- **invoice_report.py** (Python logic)
|
||||||
|
- **invoice_report_view.xml** (XML template/definition)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
- Named reports above are accessible through Odoo's reporting menu
|
||||||
|
- Python files define report logic and data processing
|
||||||
|
- XML files contain report templates, definitions, and formatting
|
||||||
|
- Reports are integrated with Odoo's printing and email systems
|
||||||
34
odoo-bringout-oca-ocb-l10n_ar/doc/SECURITY.md
Normal file
34
odoo-bringout-oca-ocb-l10n_ar/doc/SECURITY.md
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Security
|
||||||
|
|
||||||
|
Access control and security definitions in l10n_ar.
|
||||||
|
|
||||||
|
## Access Control Lists (ACLs)
|
||||||
|
|
||||||
|
Model access permissions defined in:
|
||||||
|
- **[ir.model.access.csv](../l10n_ar/security/ir.model.access.csv)**
|
||||||
|
- 1 model access rules
|
||||||
|
|
||||||
|
## Record Rules
|
||||||
|
|
||||||
|
Row-level security rules defined in:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TB
|
||||||
|
subgraph "Security Layers"
|
||||||
|
A[Users] --> B[Groups]
|
||||||
|
B --> C[Access Control Lists]
|
||||||
|
C --> D[Models]
|
||||||
|
B --> E[Record Rules]
|
||||||
|
E --> F[Individual Records]
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Security files overview:
|
||||||
|
- **[ir.model.access.csv](../l10n_ar/security/ir.model.access.csv)**
|
||||||
|
- Model access permissions (CRUD rights)
|
||||||
|
|
||||||
|
Notes
|
||||||
|
- Access Control Lists define which groups can access which models
|
||||||
|
- Record Rules provide row-level security (filter records by user/group)
|
||||||
|
- Security groups organize users and define permission sets
|
||||||
|
- All security is enforced at the ORM level by Odoo
|
||||||
5
odoo-bringout-oca-ocb-l10n_ar/doc/TROUBLESHOOTING.md
Normal file
5
odoo-bringout-oca-ocb-l10n_ar/doc/TROUBLESHOOTING.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Troubleshooting
|
||||||
|
|
||||||
|
- Ensure Python and Odoo environment matches repo guidance.
|
||||||
|
- Check database connectivity and logs if startup fails.
|
||||||
|
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||||
7
odoo-bringout-oca-ocb-l10n_ar/doc/USAGE.md
Normal file
7
odoo-bringout-oca-ocb-l10n_ar/doc/USAGE.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
Start Odoo including this addon (from repo root):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon l10n_ar
|
||||||
|
```
|
||||||
3
odoo-bringout-oca-ocb-l10n_ar/doc/WIZARDS.md
Normal file
3
odoo-bringout-oca-ocb-l10n_ar/doc/WIZARDS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Wizards
|
||||||
|
|
||||||
|
This module does not include UI wizards.
|
||||||
5
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/__init__.py
Normal file
5
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/__init__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
from . import report
|
||||||
|
from . import demo
|
||||||
128
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/__manifest__.py
Normal file
128
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/__manifest__.py
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
{
|
||||||
|
'name': 'Argentina - Accounting',
|
||||||
|
'icon': '/base/static/img/country_flags/ar.png',
|
||||||
|
'version': "3.7",
|
||||||
|
'description': """
|
||||||
|
Functional
|
||||||
|
----------
|
||||||
|
|
||||||
|
This module add accounting features for the Argentinean localization, which represent the minimal configuration needed for a company to operate in Argentina and under the AFIP (Administración Federal de Ingresos Públicos) regulations and guidelines.
|
||||||
|
|
||||||
|
Follow the next configuration steps for Production:
|
||||||
|
|
||||||
|
1. Go to your company and configure your VAT number and AFIP Responsibility Type
|
||||||
|
2. Go to Accounting / Settings and set the Chart of Account that you will like to use.
|
||||||
|
3. Create your Sale journals taking into account AFIP POS info.
|
||||||
|
|
||||||
|
Demo data for testing:
|
||||||
|
|
||||||
|
* 3 companies were created, one for each AFIP responsibility type with the respective Chart of Account installed. Choose the company that fix you in order to make tests:
|
||||||
|
|
||||||
|
* (AR) Responsable Inscripto
|
||||||
|
* (AR) Exento
|
||||||
|
* (AR) Monotributo
|
||||||
|
|
||||||
|
* Journal sales configured to Pre printed and Expo invoices in all companies
|
||||||
|
* Invoices and other documents examples already validated in “(AR) Responsable Inscripto” company
|
||||||
|
* Partners example for the different responsibility types:
|
||||||
|
|
||||||
|
* ADHOC (IVA Responsable Inscripto)
|
||||||
|
* Servicios Globales (IVA Sujeto Exento)
|
||||||
|
* Gritti (Monotributo)
|
||||||
|
* Montana Sur. IVA Liberado in Zona Franca
|
||||||
|
* Barcelona food (Cliente del Exterior)
|
||||||
|
* Odoo (Proveedor del Exterior)
|
||||||
|
|
||||||
|
Highlights:
|
||||||
|
|
||||||
|
* Chart of account will not be automatically installed, each CoA Template depends on the AFIP Responsibility of the company, you will need to install the CoA for your needs.
|
||||||
|
* No sales journals will be generated when installing a CoA, you will need to configure your journals manually.
|
||||||
|
* The Document type will be properly pre selected when creating an invoice depending on the fiscal responsibility of the issuer and receiver of the document and the related journal.
|
||||||
|
* A CBU account type has been added and also CBU Validation
|
||||||
|
|
||||||
|
|
||||||
|
Technical
|
||||||
|
---------
|
||||||
|
|
||||||
|
This module adds both models and fields that will be eventually used for the electronic invoice module. Here is a summary of the main features:
|
||||||
|
|
||||||
|
Master Data:
|
||||||
|
|
||||||
|
* Chart of Account: one for each AFIP responsibility that is related to a legal entity:
|
||||||
|
|
||||||
|
* Responsable Inscripto (RI)
|
||||||
|
* Exento (EX)
|
||||||
|
* Monotributo (Mono)
|
||||||
|
|
||||||
|
* Argentinean Taxes and Account Tax Groups (VAT taxes with the existing aliquots and other types)
|
||||||
|
* AFIP Responsibility Types
|
||||||
|
* Fiscal Positions (in order to map taxes)
|
||||||
|
* Legal Documents Types in Argentina
|
||||||
|
* Identification Types valid in Argentina.
|
||||||
|
* Country AFIP codes and Country VAT codes for legal entities, natural persons and others
|
||||||
|
* Currency AFIP codes
|
||||||
|
* Unit of measures AFIP codes
|
||||||
|
* Partners: Consumidor Final and AFIP
|
||||||
|
""",
|
||||||
|
'author': 'ADHOC SA',
|
||||||
|
'category': 'Accounting/Localizations/Account Charts',
|
||||||
|
'depends': [
|
||||||
|
'l10n_latam_invoice_document',
|
||||||
|
'l10n_latam_base',
|
||||||
|
],
|
||||||
|
'data': [
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
'data/l10n_latam_identification_type_data.xml',
|
||||||
|
'data/l10n_ar_afip_responsibility_type_data.xml',
|
||||||
|
'data/account_chart_template_data.xml',
|
||||||
|
'data/account.group.template.csv',
|
||||||
|
'data/account.account.template.csv',
|
||||||
|
'data/account_chart_template_data2.xml',
|
||||||
|
'data/account_tax_group_data.xml',
|
||||||
|
'data/account_tax_template_data.xml',
|
||||||
|
'data/account_fiscal_template.xml',
|
||||||
|
'data/uom_uom_data.xml',
|
||||||
|
'data/l10n_latam.document.type.csv',
|
||||||
|
'data/l10n_latam.document.type.xml',
|
||||||
|
'data/res_partner_data.xml',
|
||||||
|
'data/res.currency.csv',
|
||||||
|
'data/res.country.csv',
|
||||||
|
'views/account_move_view.xml',
|
||||||
|
'views/res_partner_view.xml',
|
||||||
|
'views/res_company_view.xml',
|
||||||
|
'views/res_country_view.xml',
|
||||||
|
'views/afip_menuitem.xml',
|
||||||
|
'views/l10n_ar_afip_responsibility_type_view.xml',
|
||||||
|
'views/res_currency_view.xml',
|
||||||
|
'views/account_fiscal_position_view.xml',
|
||||||
|
'views/uom_uom_view.xml',
|
||||||
|
'views/account_journal_view.xml',
|
||||||
|
'views/l10n_latam_document_type_view.xml',
|
||||||
|
'views/report_invoice.xml',
|
||||||
|
'views/res_config_settings_view.xml',
|
||||||
|
'report/invoice_report_view.xml',
|
||||||
|
'data/account_chart_template_configure_data.xml',
|
||||||
|
],
|
||||||
|
'demo': [
|
||||||
|
# we create demo data on different companies (not main_company) to
|
||||||
|
# allow different setups and also to allow multi-localization demo data
|
||||||
|
'demo/exento_demo.xml',
|
||||||
|
'demo/mono_demo.xml',
|
||||||
|
'demo/respinsc_demo.xml',
|
||||||
|
'demo/res_partner_demo.xml',
|
||||||
|
'demo/product_product_demo.xml',
|
||||||
|
'demo/account_customer_invoice_demo.xml',
|
||||||
|
'demo/account_customer_refund_demo.xml',
|
||||||
|
'demo/account_supplier_invoice_demo.xml',
|
||||||
|
'demo/account_supplier_refund_demo.xml',
|
||||||
|
],
|
||||||
|
'installable': True,
|
||||||
|
'assets': {
|
||||||
|
'web.assets_backend': [
|
||||||
|
'l10n_ar/static/src/**/*',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,297 @@
|
||||||
|
id,chart_template_id/id,code,account_type,name,reconcile
|
||||||
|
l10n_ar.base_cheques_de_terceros,l10n_ar.l10nar_base_chart_template,1.1.1.02.010,asset_cash,Cheques de Terceros ,False
|
||||||
|
l10n_ar.base_cheques_de_terceros_rechazados,l10n_ar.l10nar_base_chart_template,1.1.1.02.020,asset_current,Cheques de Terceros Rechazados,False
|
||||||
|
l10n_ar.base_fondo_comun_de_inversion,l10n_ar.l10nar_base_chart_template,1.1.2.01.010,asset_current,Fondo común de inversión,False
|
||||||
|
l10n_ar.base_plazo_fijo,l10n_ar.l10nar_base_chart_template,1.1.2.01.020,asset_current,Plazo fijo,False
|
||||||
|
l10n_ar.base_deudores_por_ventas,l10n_ar.l10nar_base_chart_template,1.1.3.01.010,asset_receivable,Deudores por ventas,True
|
||||||
|
l10n_ar.base_deudores_por_ventas_pos,l10n_ar.l10nar_base_chart_template,1.1.3.01.020,asset_receivable,Deudores por ventas (PoS),True
|
||||||
|
l10n_ar.base_ret_percepcion_tasa_municipal,l10n_ar.l10nar_base_chart_template,1.1.4.01.010,asset_current,Ret/Percepción Tasa Municipal,False
|
||||||
|
l10n_ar.base_saldo_a_favor_tasa_municipal,l10n_ar.l10nar_base_chart_template,1.1.4.01.020,asset_current,Saldo a favor Tasa Municipal,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_caba,l10n_ar.l10nar_base_chart_template,1.1.4.02.010,asset_current,Saldo a favor IIBB CABA,False
|
||||||
|
l10n_ar.base_retencion_iibb_caba_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.020,asset_current,Retención IIBB CABA sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_caba_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.030,asset_current,Percepción IIBB CABA sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_ba,l10n_ar.l10nar_base_chart_template,1.1.4.02.040,asset_current,Saldo a favor IIBB Buenos Aires,False
|
||||||
|
l10n_ar.base_retencion_iibb_ba_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.050,asset_current,Retención IIBB Buenos Aires sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_ba_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.060,asset_current,Percepción IIBB Buenos Aires sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_ca,l10n_ar.l10nar_base_chart_template,1.1.4.02.070,asset_current,Saldo a favor IIBB Catamarca,False
|
||||||
|
l10n_ar.base_retencion_iibb_ca_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.080,asset_current,Retención IIBB Catamarca sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_ca_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.090,asset_current,Percepción IIBB Catamarca sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_co,l10n_ar.l10nar_base_chart_template,1.1.4.02.100,asset_current,Saldo a favor IIBB Córdoba,False
|
||||||
|
l10n_ar.base_retencion_iibb_co_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.110,asset_current,Retención IIBB Córdoba sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_co_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.120,asset_current,Percepción IIBB Córdoba sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_rr,l10n_ar.l10nar_base_chart_template,1.1.4.02.130,asset_current,Saldo a favor IIBB Corrientes,False
|
||||||
|
l10n_ar.base_retencion_iibb_rr_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.140,asset_current,Retención IIBB Corrientes sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_rr_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.150,asset_current,Percepción IIBB Corrientes sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_er,l10n_ar.l10nar_base_chart_template,1.1.4.02.160,asset_current,Saldo a favor IIBB Entre Ríos,False
|
||||||
|
l10n_ar.base_retencion_iibb_er_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.170,asset_current,Retención IIBB Entre Ríos sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_er_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.180,asset_current,Percepción IIBB Entre Ríos sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_ju,l10n_ar.l10nar_base_chart_template,1.1.4.02.190,asset_current,Saldo a favor IIBB Jujuy,False
|
||||||
|
l10n_ar.base_retencion_iibb_ju_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.200,asset_current,Retención IIBB Jujuy sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_ju_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.210,asset_current,Percepción IIBB Jujuy sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_za,l10n_ar.l10nar_base_chart_template,1.1.4.02.220,asset_current,Saldo a favor IIBB Mendoza,False
|
||||||
|
l10n_ar.base_retencion_iibb_za_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.230,asset_current,Retención IIBB Mendoza sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_za_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.240,asset_current,Percepción IIBB Mendoza sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_lr,l10n_ar.l10nar_base_chart_template,1.1.4.02.250,asset_current,Saldo a favor IIBB La Rioja,False
|
||||||
|
l10n_ar.base_retencion_iibb_lr_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.260,asset_current,Retención IIBB La Rioja sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_lr_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.270,asset_current,Percepción IIBB La Rioja sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_sa,l10n_ar.l10nar_base_chart_template,1.1.4.02.280,asset_current,Saldo a favor IIBB Salta,False
|
||||||
|
l10n_ar.base_retencion_iibb_sa_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.290,asset_current,Retención IIBB Salta sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_sa_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.300,asset_current,Percepción IIBB Salta sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_nn,l10n_ar.l10nar_base_chart_template,1.1.4.02.310,asset_current,Saldo a favor IIBB San Juan,False
|
||||||
|
l10n_ar.base_retencion_iibb_nn_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.320,asset_current,Retención IIBB San Juan sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_nn_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.330,asset_current,Percepción IIBB San Juan sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_sl,l10n_ar.l10nar_base_chart_template,1.1.4.02.340,asset_current,Saldo a favor IIBB San Luis,False
|
||||||
|
l10n_ar.base_retencion_iibb_sl_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.350,asset_current,Retención IIBB San Luis sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_sl_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.360,asset_current,Percepción IIBB San Luis sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_sf,l10n_ar.l10nar_base_chart_template,1.1.4.02.370,asset_current,Saldo a favor IIBB Santa Fe,False
|
||||||
|
l10n_ar.base_retencion_iibb_sf_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.380,asset_current,Retención IIBB Santa Fe sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_sf_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.390,asset_current,Percepción IIBB Santa Fe sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_se,l10n_ar.l10nar_base_chart_template,1.1.4.02.400,asset_current,Saldo a favor IIBB Santiago del Estero,False
|
||||||
|
l10n_ar.base_retencion_iibb_se_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.410,asset_current,Retención IIBB Santiago del Estero sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_se_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.420,asset_current,Percepción IIBB Santiago del Estero sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_tn,l10n_ar.l10nar_base_chart_template,1.1.4.02.430,asset_current,Saldo a favor IIBB Tucumán,False
|
||||||
|
l10n_ar.base_retencion_iibb_tn_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.440,asset_current,Retención IIBB Tucumán sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_tn_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.450,asset_current,Percepción IIBB Tucumán sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_ha,l10n_ar.l10nar_base_chart_template,1.1.4.02.460,asset_current,Saldo a favor IIBB Chaco,False
|
||||||
|
l10n_ar.base_retencion_iibb_ha_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.470,asset_current,Retención IIBB Chaco sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_ha_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.480,asset_current,Percepción IIBB Chaco sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_ct,l10n_ar.l10nar_base_chart_template,1.1.4.02.490,asset_current,Saldo a favor IIBB Chubut,False
|
||||||
|
l10n_ar.base_retencion_iibb_ct_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.500,asset_current,Retención IIBB Chubut sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_ct_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.510,asset_current,Percepción IIBB Chubut sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_fo,l10n_ar.l10nar_base_chart_template,1.1.4.02.520,asset_current,Saldo a favor IIBB Formosa,False
|
||||||
|
l10n_ar.base_retencion_iibb_fo_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.530,asset_current,Retención IIBB Formosa sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_fo_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.540,asset_current,Percepción IIBB Formosa sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_mi,l10n_ar.l10nar_base_chart_template,1.1.4.02.550,asset_current,Saldo a favor IIBB Misiones,False
|
||||||
|
l10n_ar.base_retencion_iibb_mi_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.560,asset_current,Retención IIBB Misiones sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_mi_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.570,asset_current,Percepción IIBB Misiones sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_ne,l10n_ar.l10nar_base_chart_template,1.1.4.02.580,asset_current,Saldo a favor IIBB Neuquén,False
|
||||||
|
l10n_ar.base_retencion_iibb_ne_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.590,asset_current,Retención IIBB Neuquén sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_ne_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.600,asset_current,Percepción IIBB Neuquén sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_lp,l10n_ar.l10nar_base_chart_template,1.1.4.02.610,asset_current,Saldo a favor IIBB La Pampa,False
|
||||||
|
l10n_ar.base_retencion_iibb_lp_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.620,asset_current,Retención IIBB La Pampa sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_lp_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.630,asset_current,Percepción IIBB La Pampa sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_rn,l10n_ar.l10nar_base_chart_template,1.1.4.02.640,asset_current,Saldo a favor IIBB Río Negro,False
|
||||||
|
l10n_ar.base_retencion_iibb_rn_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.650,asset_current,Retención IIBB Río Negro sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_rn_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.660,asset_current,Percepción IIBB Río Negro sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_az,l10n_ar.l10nar_base_chart_template,1.1.4.02.670,asset_current,Saldo a favor IIBB Santa Cruz,False
|
||||||
|
l10n_ar.base_retencion_iibb_az_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.680,asset_current,Retención IIBB Santa Cruz sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_az_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.690,asset_current,Percepción IIBB Santa Cruz sufrida,False
|
||||||
|
l10n_ar.base_saldo_favor_iibb_tf,l10n_ar.l10nar_base_chart_template,1.1.4.02.700,asset_current,Saldo a favor IIBB Tierra del Fuego,False
|
||||||
|
l10n_ar.base_retencion_iibb_tf_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.710,asset_current,Retención IIBB Tierra del Fuego sufrida,False
|
||||||
|
l10n_ar.base_percepcion_iibb_tf_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.02.720,asset_current,Percepción IIBB Tierra del Fuego sufrida,False
|
||||||
|
l10n_ar.base_sircreb,l10n_ar.l10nar_base_chart_template,1.1.4.02.730,asset_current,SIRCREB,False
|
||||||
|
l10n_ar.base_saldo_a_favor_suss,l10n_ar.l10nar_base_chart_template,1.1.4.03.010,asset_current,Saldo a favor SUSS,False
|
||||||
|
l10n_ar.base_retencion_suss_sufrida,l10n_ar.l10nar_base_chart_template,1.1.4.03.020,asset_current,Retención SUSS Sufrida,False
|
||||||
|
l10n_ar.ri_iva_credito_fiscal,l10n_ar.l10nar_ri_chart_template,1.1.4.04.010,asset_current,IVA crédito fiscal,False
|
||||||
|
l10n_ar.ri_percepcion_iva_sufrida,l10n_ar.l10nar_ri_chart_template,1.1.4.04.020,asset_current,Percepción IVA Sufrida,False
|
||||||
|
l10n_ar.ri_retencion_iva_sufrida,l10n_ar.l10nar_ri_chart_template,1.1.4.04.030,asset_current,Retención IVA Sufrida,False
|
||||||
|
l10n_ar.ri_iva_saldo_tecnico_favor,l10n_ar.l10nar_ri_chart_template,1.1.4.04.040,asset_current,IVA Saldo técnico,False
|
||||||
|
l10n_ar.ri_iva_saldo_libre_disponibilidad,l10n_ar.l10nar_ri_chart_template,1.1.4.04.050,asset_current,IVA Saldo Libre Disponibilidad,False
|
||||||
|
l10n_ar.base_anticipo_ganancias,l10n_ar.l10nar_ex_chart_template,1.1.4.05.010,asset_current,Anticipo ganancias,False
|
||||||
|
l10n_ar.base_percepcion_ganancias_sufrida,l10n_ar.l10nar_ex_chart_template,1.1.4.05.020,asset_current,Percepciones de Ganancias Sufridas,False
|
||||||
|
l10n_ar.base_retencion_ganancias_sufrida,l10n_ar.l10nar_ex_chart_template,1.1.4.05.030,asset_current,Retenciones de Ganancias Sufridas,False
|
||||||
|
l10n_ar.base_saldo_favor_ganancias,l10n_ar.l10nar_ex_chart_template,1.1.4.05.040,asset_current,Saldo a favor Ganancias,False
|
||||||
|
l10n_ar.base_imp_debitos_computables,l10n_ar.l10nar_base_chart_template,1.1.4.05.050,asset_current,Impuesto a los Débitos Computables,False
|
||||||
|
l10n_ar.base_otros_creditos,l10n_ar.l10nar_base_chart_template,1.1.5.01.010,asset_receivable,Deudores Varios,True
|
||||||
|
l10n_ar.base_materia_prima,l10n_ar.l10nar_base_chart_template,1.1.6.01.010,asset_current,Materia Prima,False
|
||||||
|
l10n_ar.base_productos_en_proceso,l10n_ar.l10nar_base_chart_template,1.1.6.01.020,asset_current,Productos en proceso,False
|
||||||
|
l10n_ar.base_productos_terminados,l10n_ar.l10nar_base_chart_template,1.1.6.01.030,asset_current,Productos terminados,False
|
||||||
|
l10n_ar.base_mercaderia_reventa,l10n_ar.l10nar_base_chart_template,1.1.6.01.040,asset_current,Mercaderia de reventa,False
|
||||||
|
l10n_ar.base_anticipo_proveedores,l10n_ar.l10nar_base_chart_template,1.1.6.01.050,asset_current,Anticipo a Proveedores,False
|
||||||
|
l10n_ar.base_instalaciones,l10n_ar.l10nar_base_chart_template,1.2.1.01.010,asset_fixed,Instalaciones,False
|
||||||
|
l10n_ar.base_amortizacion_acumulada_instalaciones,l10n_ar.l10nar_base_chart_template,1.2.1.01.020,asset_fixed,Amortización acumulada instalaciones,False
|
||||||
|
l10n_ar.base_maq_y_equipos,l10n_ar.l10nar_base_chart_template,1.2.1.02.010,asset_fixed,Maquinarias y equipos,False
|
||||||
|
l10n_ar.base_amortizacion_acumulada_maq_y_equipos,l10n_ar.l10nar_base_chart_template,1.2.1.02.020,asset_fixed,Amortización acumulada maquinarias y equipos,False
|
||||||
|
l10n_ar.base_muebles_y_utiles,l10n_ar.l10nar_base_chart_template,1.2.1.03.010,asset_fixed,Muebles y útiles,False
|
||||||
|
l10n_ar.base_amortizacion_acumulada_muebles_utiles,l10n_ar.l10nar_base_chart_template,1.2.1.03.020,asset_fixed,Amortización acumulada muebles y útiles,False
|
||||||
|
l10n_ar.base_rodados,l10n_ar.l10nar_base_chart_template,1.2.1.04.010,asset_fixed,Rodados,False
|
||||||
|
l10n_ar.base_amortizacion_acumulada_rodados,l10n_ar.l10nar_base_chart_template,1.2.1.04.020,asset_fixed,Amortización acumulada rodados,False
|
||||||
|
l10n_ar.base_derechos_de_marca,l10n_ar.l10nar_base_chart_template,1.2.2.01.010,asset_fixed,Derechos de marca,False
|
||||||
|
l10n_ar.base_amortizacion_acumulada_derechos_de_marca,l10n_ar.l10nar_base_chart_template,1.2.2.01.020,asset_fixed,Amortización acumulada Derechos de marca,False
|
||||||
|
l10n_ar.base_proveedores,l10n_ar.l10nar_base_chart_template,2.1.1.01.010,liability_payable,Proveedores,True
|
||||||
|
l10n_ar.base_cheques_diferidos,l10n_ar.l10nar_base_chart_template,2.1.1.01.020,liability_current,Cheques diferidos a pagar,True
|
||||||
|
l10n_ar.base_cheques_rechazados,l10n_ar.l10nar_base_chart_template,2.1.1.01.030,liability_current,Cheques Rechazados,False
|
||||||
|
l10n_ar.base_anticipos_de_clientes,l10n_ar.l10nar_base_chart_template,2.1.1.01.040,liability_current,Anticipos de clientes,False
|
||||||
|
l10n_ar.base_alquileres_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.1.01.050,liability_payable,Alquileres a pagar,True
|
||||||
|
l10n_ar.base_intereses_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.2.01.010,liability_current,Intereses a pagar,False
|
||||||
|
l10n_ar.base_giro_en_descubierto,l10n_ar.l10nar_base_chart_template,2.1.2.01.020,liability_current,Giro en descubierto Banco xxxxx,False
|
||||||
|
l10n_ar.base_otras_deudas_documentadas,l10n_ar.l10nar_base_chart_template,2.1.2.01.030,liability_current,Otras deudas documentadas,False
|
||||||
|
l10n_ar.base_prestamo_banco_x,l10n_ar.l10nar_base_chart_template,2.1.2.01.040,liability_non_current,Prestamo Banco xxxxx,False
|
||||||
|
l10n_ar.base_acreedores_varios,l10n_ar.l10nar_base_chart_template,2.1.2.01.050,liability_payable,Acreedores varios,True
|
||||||
|
l10n_ar.base_tasa_municipal_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.3.01.010,liability_payable,Tasa Municipal a pagar,True
|
||||||
|
l10n_ar.base_plan_tasa_municipal_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.3.01.020,liability_payable,Plan Tasa Municipal a pagar,True
|
||||||
|
l10n_ar.base_iibb_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.3.02.010,liability_payable,IIBB a pagar,True
|
||||||
|
l10n_ar.ri_retencion_sicore_a_pagar,l10n_ar.l10nar_ex_chart_template,2.1.3.02.020,liability_payable,SICORE a pagar,True
|
||||||
|
l10n_ar.ri_retencion_iibb_caba_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.030,liability_current,Retención IIBB CABA aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_caba_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.040,liability_current,Percepción IIBB CABA aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_ba_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.050,liability_current,Retención IIBB ARBA aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_ba_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.060,liability_current,Percepción IIBB ARBA aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_ca_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.070,liability_current,Retención IIBB Catamarca aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_ca_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.080,liability_current,Percepción IIBB Catamarca aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_co_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.090,liability_current,Retención IIBB Córdoba aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_co_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.100,liability_current,Percepción IIBB Córdoba aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_rr_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.110,liability_current,Retención IIBB Corrientes aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_rr_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.120,liability_current,Percepción IIBB Corrientes aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_er_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.130,liability_current,Retención IIBB Entre Río aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_er_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.140,liability_current,Percepción IIBB Entre Río aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_ju_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.150,liability_current,Retención IIBB Jujuy aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_ju_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.160,liability_current,Percepción IIBB Jujuy aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_za_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.170,liability_current,Retención IIBB Mendoza aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_za_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.180,liability_current,Percepción IIBB Mendoza aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_lr_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.190,liability_current,Retención IIBB La Rioja aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_lr_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.200,liability_current,Percepción IIBB La Rioja aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_sa_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.210,liability_current,Retención IIBB Salta aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_sa_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.220,liability_current,Percepción IIBB Salta aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_nn_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.230,liability_current,Retención IIBB San Juan aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_nn_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.240,liability_current,Percepción IIBB San Juan aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_sl_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.250,liability_current,Retención IIBB San Luis aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_sl_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.260,liability_current,Percepción IIBB San Luis aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_sf_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.270,liability_current,Retención IIBB Santa Fe aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_sf_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.280,liability_current,Percepción IIBB Santa Fe aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_se_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.290,liability_current,Retención IIBB Santiago del Estero aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_se_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.300,liability_current,Percepción IIBB Santiago del Estero aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_tn_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.310,liability_current,Retención IIBB Tucumán aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_tn_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.320,liability_current,Percepción IIBB Tucumán aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_ha_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.330,liability_current,Retención IIBB Chaco aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_ha_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.340,liability_current,Percepción IIBB Chaco aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_ct_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.350,liability_current,Retención IIBB Chubut aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_ct_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.360,liability_current,Percepción IIBB Chubut aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_fo_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.370,liability_current,Retención IIBB Formosa aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_fo_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.380,liability_current,Percepción IIBB Formosa aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_mi_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.390,liability_current,Retención IIBB Misiones aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_mi_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.400,liability_current,Percepción IIBB Misiones aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_ne_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.410,liability_current,Retención IIBB Neuquén aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_ne_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.420,liability_current,Percepción IIBB Neuquén aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_lp_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.430,liability_current,Retención IIBB La Pampa aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_lp_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.440,liability_current,Percepción IIBB La Pampa aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_rn_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.450,liability_current,Retención IIBB Río Negro aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_rn_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.460,liability_current,Percepción IIBB Río Negro aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_az_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.470,liability_current,Retención IIBB Santa Cruz aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_az_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.480,liability_current,Percepción IIBB Santa Cruz aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_tf_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.490,liability_current,Retención IIBB Tierra del Fuego aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iibb_tf_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.02.500,liability_current,Percepción IIBB Tierra del Fuego aplicada,False
|
||||||
|
l10n_ar.ri_retencion_iibb_a_pagar,l10n_ar.l10nar_ex_chart_template,2.1.3.02.510,liability_payable,Retención/Percepción IIBB a pagar,True
|
||||||
|
l10n_ar.base_plan_de_iibb_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.3.02.520,liability_payable,Plan de IIBB a pagar,True
|
||||||
|
l10n_ar.ri_iva_debito_fiscal,l10n_ar.l10nar_ri_chart_template,2.1.3.03.010,liability_current,IVA débito fiscal,False
|
||||||
|
l10n_ar.ri_iva_saldo_a_pagar,l10n_ar.l10nar_ri_chart_template,2.1.3.03.020,liability_payable,IVA saldo a pagar,True
|
||||||
|
l10n_ar.ri_retencion_iva_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.03.030,liability_current,Retención IVA aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_iva_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.03.040,liability_current,Percepción IVA aplicada,False
|
||||||
|
l10n_ar.base_plan_iva_a_pagar,l10n_ar.l10nar_ri_chart_template,2.1.3.03.050,liability_current,Plan IVA a pagar,False
|
||||||
|
l10n_ar.base_impuesto_ganancias_a_pagar,l10n_ar.l10nar_ex_chart_template,2.1.3.04.010,liability_payable,Impuesto a las ganancias a pagar,True
|
||||||
|
l10n_ar.ri_retencion_ganancias_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.04.020,liability_current,Retención ganancias aplicada,False
|
||||||
|
l10n_ar.ri_percepcion_ganancias_aplicada,l10n_ar.l10nar_ex_chart_template,2.1.3.04.030,liability_current,Percepción ganancias aplicada,False
|
||||||
|
l10n_ar.base_provision_imp_a_las_ganancias,l10n_ar.l10nar_ex_chart_template,2.1.3.04.040,liability_current,Provisión Imp a las Ganancias,True
|
||||||
|
l10n_ar.base_anticipos_imp_a_las_ganancias_a_pagar,l10n_ar.l10nar_ex_chart_template,2.1.3.04.050,liability_current,Anticipos Imp a las Ganancias a Pagar,True
|
||||||
|
l10n_ar.base_planes_a_pagar_afip,l10n_ar.l10nar_ex_chart_template,2.1.3.04.060,liability_non_current,Plan Ganancias a pagar,False
|
||||||
|
l10n_ar.base_sueldos_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.4.01.010,liability_payable,Sueldos a pagar,True
|
||||||
|
l10n_ar.base_suss_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.4.01.020,liability_payable,Leyes Sociales a pagar,True
|
||||||
|
l10n_ar.base_seguro_de_vida_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.4.01.030,liability_payable,Seguro de Vida a Pagar,True
|
||||||
|
l10n_ar.base_art_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.4.01.040,liability_payable,ART a Pagar,True
|
||||||
|
l10n_ar.base_aportes_sindicales_a_pagar,l10n_ar.l10nar_base_chart_template,2.1.4.01.050,liability_payable,Sindicato a pagar,True
|
||||||
|
l10n_ar.base_embargos_a_depositar,l10n_ar.l10nar_base_chart_template,2.1.4.01.060,liability_payable,Embargos a depositar,True
|
||||||
|
l10n_ar.base_cta_particular_socio_x,l10n_ar.l10nar_base_chart_template,2.1.5.01.010,liability_non_current,Cta particular socio x,False
|
||||||
|
l10n_ar.base_proveedores_largo_plazo,l10n_ar.l10nar_base_chart_template,2.2.1.01.010,liability_non_current,Deudas Proveedores a largo plazo,False
|
||||||
|
l10n_ar.base_prevision_sac_a_pagar,l10n_ar.l10nar_base_chart_template,2.2.2.01.010,liability_current,Previsión SAC a Pagar,False
|
||||||
|
l10n_ar.base_prevision_para_despidos,l10n_ar.l10nar_base_chart_template,2.2.2.01.020,liability_current,Previsión para Despidos,False
|
||||||
|
l10n_ar.base_prevision_gastos,l10n_ar.l10nar_base_chart_template,2.2.2.01.030,liability_current,Prevision gastos,False
|
||||||
|
l10n_ar.base_capital,l10n_ar.l10nar_base_chart_template,3.1.1.01.010,equity,Capital suscripto,False
|
||||||
|
l10n_ar.base_ajustes_de_capital,l10n_ar.l10nar_base_chart_template,3.1.1.01.020,equity,Ajustes de capital,False
|
||||||
|
l10n_ar.base_aportes_no_capitalizados,l10n_ar.l10nar_base_chart_template,3.1.1.01.030,equity,Aportes no capitalizados,False
|
||||||
|
l10n_ar.base_reserva_legal,l10n_ar.l10nar_base_chart_template,3.2.1.01.010,equity,Reserva legal,False
|
||||||
|
l10n_ar.base_reserva_estatuitaria,l10n_ar.l10nar_base_chart_template,3.2.1.01.020,equity,Reserva estatuitaria,False
|
||||||
|
l10n_ar.base_futuras_inversiones,l10n_ar.l10nar_base_chart_template,3.2.1.01.030,equity,Reservas futuras inversiones,False
|
||||||
|
l10n_ar.base_reservas_facultativas,l10n_ar.l10nar_base_chart_template,3.2.1.01.040,equity,Reservas facultativas,False
|
||||||
|
l10n_ar.base_resultado_del_ejercicio,l10n_ar.l10nar_base_chart_template,3.3.1.01.010,equity_unaffected,Resultado del ejercicio,False
|
||||||
|
l10n_ar.base_resultado_acumulados,l10n_ar.l10nar_base_chart_template,3.3.1.01.020,equity,Resultados de ejercicios anteriores,False
|
||||||
|
l10n_ar.base_ajuste_resultados,l10n_ar.l10nar_base_chart_template,3.3.1.01.030,equity,Ajuste resultados ejercicios anteriores,False
|
||||||
|
l10n_ar.base_venta_de_mercaderia,l10n_ar.l10nar_base_chart_template,4.1.1.01.010,income,Venta de mercadería,False
|
||||||
|
l10n_ar.base_venta_de_servicios,l10n_ar.l10nar_base_chart_template,4.1.1.01.020,income,Venta de servicios,False
|
||||||
|
l10n_ar.base_resultado_intereses_ganados,l10n_ar.l10nar_base_chart_template,4.2.1.01.010,income_other,Intereses ganados,False
|
||||||
|
l10n_ar.base_diferencias_de_cambio,l10n_ar.l10nar_base_chart_template,4.2.1.01.020,income_other,Diferencias de cambio,False
|
||||||
|
l10n_ar.base_ajuste_por_redondeo,l10n_ar.l10nar_base_chart_template,4.2.1.01.030,income_other,Ajuste por redondeo,False
|
||||||
|
l10n_ar.base_resultado_venta_bienes_de_uso,l10n_ar.l10nar_base_chart_template,4.3.1.01.010,income_other,Resultado venta bienes de uso,False
|
||||||
|
l10n_ar.base_recupero_de_gastos,l10n_ar.l10nar_base_chart_template,4.3.1.01.020,income_other,Recupero de gastos,False
|
||||||
|
l10n_ar.base_aportes_no_reembolsables,l10n_ar.l10nar_base_chart_template,4.3.1.01.030,income_other,Aportes no reeombolsables (subsidios),False
|
||||||
|
l10n_ar.base_cmv,l10n_ar.l10nar_base_chart_template,5.1.1.01.010,expense,Costo de Mercadería Vendida,False
|
||||||
|
l10n_ar.base_descuentos_obtenidos,l10n_ar.l10nar_base_chart_template,5.1.1.01.020,expense,Descuentos Obtenidos,False
|
||||||
|
l10n_ar.base_compra_mercaderia,l10n_ar.l10nar_base_chart_template,5.1.1.01.030,expense,Compra de mercadería,False
|
||||||
|
l10n_ar.base_haberes_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.010,expense,Sueldos y SAC Producción,False
|
||||||
|
l10n_ar.base_cargas_sociales_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.020,expense,Cargas Sociales Producción,False
|
||||||
|
l10n_ar.base_gastos_varios_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.030,expense,Gastos Varios Producción,False
|
||||||
|
l10n_ar.base_alquileres_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.040,expense,Alquileres Producción,False
|
||||||
|
l10n_ar.base_servicio_de_luz_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.050,expense,Servicio Eléctrico Producción,False
|
||||||
|
l10n_ar.base_servicio_de_agua_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.060,expense,Servicio de Agua Producción,False
|
||||||
|
l10n_ar.base_servicio_de_gas_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.070,expense,Servicio de Gas Producción,False
|
||||||
|
l10n_ar.base_impuesto_inmobiliario_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.080,expense,Impuesto Inmobiliario Producción,False
|
||||||
|
l10n_ar.base_mantenimiento_y_reparaciones_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.090,expense,Mantenimiento y Reparaciones Producción,False
|
||||||
|
l10n_ar.base_higiene_y_seguridad,l10n_ar.l10nar_base_chart_template,5.1.2.01.100,expense,Higiene y Seguridad,False
|
||||||
|
l10n_ar.base_honorarios_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.110,expense,Honorarios Producción,False
|
||||||
|
l10n_ar.base_mantenimiento_y_limpieza,l10n_ar.l10nar_base_chart_template,5.1.2.01.120,expense,Mantenimiento y limpieza ,False
|
||||||
|
l10n_ar.base_seguros_produccion,l10n_ar.l10nar_base_chart_template,5.1.2.01.130,expense,Seguros Producción,False
|
||||||
|
l10n_ar.base_haberes_comerciales,l10n_ar.l10nar_base_chart_template,5.2.1.01.010,expense,Sueldos y SAC Comercial,False
|
||||||
|
l10n_ar.base_cargas_sociales_comerciales,l10n_ar.l10nar_base_chart_template,5.2.1.01.020,expense,Cargas Sociales Comercial,False
|
||||||
|
l10n_ar.base_gastos_varios_comerciales,l10n_ar.l10nar_base_chart_template,5.2.1.01.030,expense,Gastos Varios Comercial,False
|
||||||
|
l10n_ar.base_alquileres_comerciales,l10n_ar.l10nar_base_chart_template,5.2.1.01.040,expense,Alquileres Comercial,False
|
||||||
|
l10n_ar.base_movilidad_y_viaticos,l10n_ar.l10nar_base_chart_template,5.2.1.01.050,expense,Movilidad y viáticos ,False
|
||||||
|
l10n_ar.base_publicidad,l10n_ar.l10nar_base_chart_template,5.2.1.01.060,expense,Publicidad,False
|
||||||
|
l10n_ar.base_comisiones,l10n_ar.l10nar_base_chart_template,5.2.1.01.070,expense,Comisiones Pagadas,False
|
||||||
|
l10n_ar.base_servicios_de_luz_ecomercial,l10n_ar.l10nar_base_chart_template,5.2.1.01.080,expense,Servicio Eléctrico Comercial,False
|
||||||
|
l10n_ar.base_servicio_de_agua_comercial,l10n_ar.l10nar_base_chart_template,5.2.1.01.090,expense,Servicio de Agua Comercial,False
|
||||||
|
l10n_ar.base_servicio_de_gas_comercial,l10n_ar.l10nar_base_chart_template,5.2.1.01.100,expense,Servicio de Gas Comercial,False
|
||||||
|
l10n_ar.base_honorarios_comercial,l10n_ar.l10nar_base_chart_template,5.2.1.01.110,expense,Honorarios Comercial,False
|
||||||
|
l10n_ar.base_patentes_comercial,l10n_ar.l10nar_base_chart_template,5.2.1.01.120,expense,Patentes Comercial,False
|
||||||
|
l10n_ar.base_seguros_comercial,l10n_ar.l10nar_base_chart_template,5.2.1.01.130,expense,Seguros Comercial,False
|
||||||
|
l10n_ar.base_haberes_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.010,expense,Sueldos y SAC Administrativos,False
|
||||||
|
l10n_ar.base_cargas_sociales_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.020,expense,Cargas Sociales Administrativos,False
|
||||||
|
l10n_ar.base_gastos_varios_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.030,expense,Gastos varios Administrativos,False
|
||||||
|
l10n_ar.base_alquileres_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.040,expense,Alquileres Administrativos,False
|
||||||
|
l10n_ar.base_servicio_de_luz_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.050,expense,Servicio Eléctrico Administrativos,False
|
||||||
|
l10n_ar.base_servicio_de_agua_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.060,expense,Servicio de Agua Administrativos,False
|
||||||
|
l10n_ar.base_servicio_de_gas_administrativos,l10n_ar.l10nar_base_chart_template,5.3.1.01.070,expense,Servicio de Gas Administrativos,False
|
||||||
|
l10n_ar.base_servicio_de_internet,l10n_ar.l10nar_base_chart_template,5.3.1.01.080,expense,Servicio de Internet,False
|
||||||
|
l10n_ar.base_sistema_y_software,l10n_ar.l10nar_base_chart_template,5.3.1.01.090,expense,Sistema y Software,False
|
||||||
|
l10n_ar.base_cadeteria_y_franqueo,l10n_ar.l10nar_base_chart_template,5.3.1.01.100,expense,Cadeteria y franqueo,False
|
||||||
|
l10n_ar.base_honorarios_administracion,l10n_ar.l10nar_base_chart_template,5.3.1.01.110,expense,Honorarios Administración,False
|
||||||
|
l10n_ar.base_articulos_de_libreria,l10n_ar.l10nar_base_chart_template,5.3.1.01.120,expense,Artículos de librería,False
|
||||||
|
l10n_ar.base_seguros_administracion,l10n_ar.l10nar_base_chart_template,5.3.1.01.130,expense,Seguros Administración,False
|
||||||
|
l10n_ar.base_sellados_y_certificaciones,l10n_ar.l10nar_base_chart_template,5.3.1.01.140,expense,Sellados y Certificaciones,False
|
||||||
|
l10n_ar.base_tasa_municipal,l10n_ar.l10nar_base_chart_template,5.4.1.01.010,expense,Tasa Municipal,False
|
||||||
|
l10n_ar.base_impuestos_iibb_caba,l10n_ar.l10nar_base_chart_template,5.4.2.01.010,expense,IIBB CABA,False
|
||||||
|
l10n_ar.base_impuestos_iibb_ba,l10n_ar.l10nar_base_chart_template,5.4.2.01.020,expense,IIBB ARBA,False
|
||||||
|
l10n_ar.base_impuestos_iibb_ca,l10n_ar.l10nar_base_chart_template,5.4.2.01.030,expense,IIBB Catamarca,False
|
||||||
|
l10n_ar.base_impuestos_iibb_co,l10n_ar.l10nar_base_chart_template,5.4.2.01.040,expense,IIBB Córdoba,False
|
||||||
|
l10n_ar.base_impuestos_iibb_rr,l10n_ar.l10nar_base_chart_template,5.4.2.01.050,expense,IIBB Corrientes,False
|
||||||
|
l10n_ar.base_impuestos_iibb_er,l10n_ar.l10nar_base_chart_template,5.4.2.01.060,expense,IIBB Entre Ríos,False
|
||||||
|
l10n_ar.base_impuestos_iibb_ju,l10n_ar.l10nar_base_chart_template,5.4.2.01.070,expense,IIBB Jujuy,False
|
||||||
|
l10n_ar.base_impuestos_iibb_za,l10n_ar.l10nar_base_chart_template,5.4.2.01.080,expense,IIBB Mendoza,False
|
||||||
|
l10n_ar.base_impuestos_iibb_lr,l10n_ar.l10nar_base_chart_template,5.4.2.01.090,expense,IIBB La Rioja,False
|
||||||
|
l10n_ar.base_impuestos_iibb_sa,l10n_ar.l10nar_base_chart_template,5.4.2.01.100,expense,IIBB Salta,False
|
||||||
|
l10n_ar.base_impuestos_iibb_nn,l10n_ar.l10nar_base_chart_template,5.4.2.01.110,expense,IIBB San Juan,False
|
||||||
|
l10n_ar.base_impuestos_iibb_sl,l10n_ar.l10nar_base_chart_template,5.4.2.01.120,expense,IIBB San Luis,False
|
||||||
|
l10n_ar.base_impuestos_iibb_sf,l10n_ar.l10nar_base_chart_template,5.4.2.01.130,expense,IIBB Santa Fe,False
|
||||||
|
l10n_ar.base_impuestos_iibb_se,l10n_ar.l10nar_base_chart_template,5.4.2.01.140,expense,IIBB Santiago del Estero,False
|
||||||
|
l10n_ar.base_impuestos_iibb_tn,l10n_ar.l10nar_base_chart_template,5.4.2.01.150,expense,IIBB Tucumán,False
|
||||||
|
l10n_ar.base_impuestos_iibb_ha,l10n_ar.l10nar_base_chart_template,5.4.2.01.160,expense,IIBB Chaco,False
|
||||||
|
l10n_ar.base_impuestos_iibb_ct,l10n_ar.l10nar_base_chart_template,5.4.2.01.170,expense,IIBB Chubut,False
|
||||||
|
l10n_ar.base_impuestos_iibb_fo,l10n_ar.l10nar_base_chart_template,5.4.2.01.180,expense,IIBB Formosa,False
|
||||||
|
l10n_ar.base_impuestos_iibb_mi,l10n_ar.l10nar_base_chart_template,5.4.2.01.190,expense,IIBB Misiones,False
|
||||||
|
l10n_ar.base_impuestos_iibb_ne,l10n_ar.l10nar_base_chart_template,5.4.2.01.200,expense,IIBB Neuquén,False
|
||||||
|
l10n_ar.base_impuestos_iibb_lp,l10n_ar.l10nar_base_chart_template,5.4.2.01.210,expense,IIBB La Pampa,False
|
||||||
|
l10n_ar.base_impuestos_iibb_rn,l10n_ar.l10nar_base_chart_template,5.4.2.01.220,expense,IIBB Río Negro,False
|
||||||
|
l10n_ar.base_impuestos_iibb_az,l10n_ar.l10nar_base_chart_template,5.4.2.01.230,expense,IIBB Santa Cruz,False
|
||||||
|
l10n_ar.base_impuestos_iibb_tf,l10n_ar.l10nar_base_chart_template,5.4.2.01.240,expense,IIBB Tierra del Fuego,False
|
||||||
|
l10n_ar.base_impuestos_debitos_y_creditos,l10n_ar.l10nar_base_chart_template,5.4.3.01.010,expense,Impuestos a los débitos y créditos bancarios,False
|
||||||
|
l10n_ar.base_impuestos_a_las_ganancias,l10n_ar.l10nar_ex_chart_template,5.5.1.01.010,expense,Impuestos a las ganancias,False
|
||||||
|
l10n_ar.base_resultado_intereses_y_recargos,l10n_ar.l10nar_base_chart_template,5.6.1.01.020,expense,Intereses por préstamos,False
|
||||||
|
l10n_ar.base_intereses_por_descubierto,l10n_ar.l10nar_base_chart_template,5.6.1.01.030,expense,Intereses por descubierto,False
|
||||||
|
l10n_ar.base_intereses_por_venta_de_valores,l10n_ar.l10nar_base_chart_template,5.6.1.01.040,expense,Intereses por venta de valores,False
|
||||||
|
l10n_ar.base_intereses_fiscales,l10n_ar.l10nar_base_chart_template,5.6.1.01.050,expense,Intereses fiscales,False
|
||||||
|
l10n_ar.base_gastos_bancarios,l10n_ar.l10nar_base_chart_template,5.6.1.01.060,expense,Gastos Bancarios,False
|
||||||
|
l10n_ar.base_r_e_c_p_a_m,l10n_ar.l10nar_base_chart_template,5.6.1.01.070,expense,R.E.C.P.A.M.,False
|
||||||
|
l10n_ar.base_amortizacion_instalaciones,l10n_ar.l10nar_base_chart_template,5.7.1.01.010,expense_depreciation,Amortización instalaciones,False
|
||||||
|
l10n_ar.base_amortizacion_maq_y_equipos,l10n_ar.l10nar_base_chart_template,5.7.1.01.020,expense_depreciation,Amortización maquinarias y equipos,False
|
||||||
|
l10n_ar.base_amortizacion_muebles_utiles,l10n_ar.l10nar_base_chart_template,5.7.1.01.030,expense_depreciation,Amortización muebles y útiles,False
|
||||||
|
l10n_ar.base_amortizacion_rodados,l10n_ar.l10nar_base_chart_template,5.7.1.01.040,expense_depreciation,Amortización rodados,False
|
||||||
|
l10n_ar.base_amortizacion_derechos_de_marca,l10n_ar.l10nar_base_chart_template,5.7.1.01.050,expense_depreciation,Amortización Derechos de marca,False
|
||||||
|
l10n_ar.base_contrapartida_auxiliar,l10n_ar.l10nar_base_chart_template,6.0.0.00.010,asset_current,Contrapartida Auxiliar,False
|
||||||
|
l10n_ar.base_default_vat,l10n_ar.l10nar_base_chart_template,9.9.9.99.999,liability_current,Default VAT Payable/Receivable Account,False
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
id,code_prefix_start,code_prefix_end,name,chart_template_id/id
|
||||||
|
account_group_activo,1,,Activo,l10nar_base_chart_template
|
||||||
|
account_group_activo_corriente,1.1,,Activo Corriente,l10nar_base_chart_template
|
||||||
|
account_group_cajas_y_bancos,1.1.1,,Cajas y Bancos,l10nar_base_chart_template
|
||||||
|
account_group_caja,1.1.1.01,,Caja,l10nar_base_chart_template
|
||||||
|
account_group_bancos,1.1.1.02,,Bancos,l10nar_base_chart_template
|
||||||
|
account_group_inversiones,1.1.2,,Inversiones,l10nar_base_chart_template
|
||||||
|
account_group_creditos_por_ventas,1.1.3,,Créditos por ventas,l10nar_base_chart_template
|
||||||
|
account_group_creditos_fiscales,1.1.4,,Créditos fiscales,l10nar_base_chart_template
|
||||||
|
account_group_creditos_fiscales_municipales,1.1.4.01,,Créditos Fiscales Municipales,l10nar_base_chart_template
|
||||||
|
account_group_creditos_fiscales_iibb,1.1.4.02,,Créditos Fiscales IIBB,l10nar_base_chart_template
|
||||||
|
account_group_creditos_fiscales_suss,1.1.4.03,,Créditos Fiscales SUSS,l10nar_base_chart_template
|
||||||
|
account_group_creditos_fiscales_iva,1.1.4.04,,Créditos Fiscales IVA,l10nar_base_chart_template
|
||||||
|
account_group_creditos_fiscales_ganancias,1.1.4.05,,Créditos Fiscales Ganancias,l10nar_base_chart_template
|
||||||
|
account_group_otros_creditos,1.1.5,,Otros créditos,l10nar_base_chart_template
|
||||||
|
account_group_bienes_de_cambio,1.1.6,,Bienes de Cambio,l10nar_base_chart_template
|
||||||
|
account_group_activo_no_corriente,1.2,,Activo no corriente,l10nar_base_chart_template
|
||||||
|
account_group_activos_fijos,1.2.1,,Activos Fijos,l10nar_base_chart_template
|
||||||
|
account_group_instalaciones,1.2.1.01,,Instalaciones,l10nar_base_chart_template
|
||||||
|
account_group_maquinarias_y_equipos,1.2.1.02,,Maquinarias y Equipos,l10nar_base_chart_template
|
||||||
|
account_group_muebles_y_útiles,1.2.1.03,,Muebles y Útiles,l10nar_base_chart_template
|
||||||
|
account_group_rodados,1.2.1.04,,Rodados,l10nar_base_chart_template
|
||||||
|
account_group_activos_intangibles,1.2.2,,Activos Intangibles,l10nar_base_chart_template
|
||||||
|
account_group_derechos_de_marcas,1.2.2.01,,Derechos de Marcas,l10nar_base_chart_template
|
||||||
|
account_group_pasivo,2,,Pasivo,l10nar_base_chart_template
|
||||||
|
account_group_pasivo_corriente,2.1,,Pasivo Corriente,l10nar_base_chart_template
|
||||||
|
account_group_deudas_comerciales,2.1.1,,Deudas Comerciales,l10nar_base_chart_template
|
||||||
|
account_group_deudas_financieras,2.1.2,,Deudas Financieras,l10nar_base_chart_template
|
||||||
|
account_group_deudas_fiscales,2.1.3,,Deudas Fiscales,l10nar_base_chart_template
|
||||||
|
account_group_deudas_tasas_municipales,2.1.3.01,,Deudas Tasas Municipales,l10nar_base_chart_template
|
||||||
|
account_group_deudas_iibb,2.1.3.02,,Deudas IIBB,l10nar_base_chart_template
|
||||||
|
account_group_deudas_iva,2.1.3.03,,Deudas IVA,l10nar_base_chart_template
|
||||||
|
account_group_deudas_imp_ganancias,2.1.3.04,,Deudas Imp. Ganancias,l10nar_base_chart_template
|
||||||
|
account_group_remueraciones_y_cargas_sociales,2.1.4,,Remuneraciones y Cargas Sociales,l10nar_base_chart_template
|
||||||
|
account_group_cuentas_particulares,2.1.5,,Cuentas Particulares,l10nar_base_chart_template
|
||||||
|
account_group_pasivo_no_corriente,2.2,,Pasivo no Corriente,l10nar_base_chart_template
|
||||||
|
account_group_deudas_comerciales_a_largo_plazo,2.2.1,,Deudas Comerciales a Largo Plazo,l10nar_base_chart_template
|
||||||
|
account_group_previsiones,2.2.2,,Previsiones,l10nar_base_chart_template
|
||||||
|
account_group_patrimonio_neto,3,,Patrimonio Neto,l10nar_base_chart_template
|
||||||
|
account_group_capital_social,3.1,,Capital Social,l10nar_base_chart_template
|
||||||
|
account_group_reservas,3.2,,Reservas,l10nar_base_chart_template
|
||||||
|
account_group_resultados,3.3,,Resultados,l10nar_base_chart_template
|
||||||
|
account_group_ingresos,4,,Ingresos,l10nar_base_chart_template
|
||||||
|
account_group_ingresos_por_ventas,4.1,,Ingresos por ventas,l10nar_base_chart_template
|
||||||
|
account_group_ingresos_por_resultados_financieros,4.2,,Ingresos por resultados financieros,l10nar_base_chart_template
|
||||||
|
account_group_ingresos_extraordinarios,4.3,,Ingresos Extraordinarios,l10nar_base_chart_template
|
||||||
|
account_group_egresos,5,,Egresos,l10nar_base_chart_template
|
||||||
|
account_group_gastos_operativos,5.1,,Gastos Operativos,l10nar_base_chart_template
|
||||||
|
account_group_costo_de_mercadería_vendida,5.1.1,,Costo de Mercadería Vendida,l10nar_base_chart_template
|
||||||
|
account_group_gastos_de_producción,5.1.2,,Gastos de Producción,l10nar_base_chart_template
|
||||||
|
account_group_gastos_comerciales,5.2,,Gastos Comerciales,l10nar_base_chart_template
|
||||||
|
account_group_gastos_administrativos,5.3,,Gastos Administrativos,l10nar_base_chart_template
|
||||||
|
account_group_impuestos,5.4,,Impuestos,l10nar_base_chart_template
|
||||||
|
account_group_tasas_municipales,5.4.1,,Tasas Municipales,l10nar_base_chart_template
|
||||||
|
account_group_iibb,5.4.2,,IIBB,l10nar_base_chart_template
|
||||||
|
account_group_otros_impuestos,5.4.3,,Otros Impuestos,l10nar_base_chart_template
|
||||||
|
account_group_imp_a_las_ganancias,5.5,,Imp a las Ganancias,l10nar_base_chart_template
|
||||||
|
account_group_gastos_financieros,5.6,,Gastos Financieros,l10nar_base_chart_template
|
||||||
|
account_group_cuentas_puentes,6,,CUENTAS PUENTES,l10nar_base_chart_template
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="1">
|
||||||
|
<function model="account.chart.template" name="try_loading">
|
||||||
|
<value eval="[ref('l10n_ar.l10nar_ri_chart_template')]"/>
|
||||||
|
</function>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="l10nar_base_chart_template" model="account.chart.template">
|
||||||
|
<field name="name">Plan Contable Genérico Argentina Monotributista / Base</field>
|
||||||
|
<field name="currency_id" ref="base.ARS"/>
|
||||||
|
<field name="bank_account_code_prefix">1.1.1.02.</field>
|
||||||
|
<field name="cash_account_code_prefix">1.1.1.01.</field>
|
||||||
|
<field name="code_digits">12</field>
|
||||||
|
<field name="transfer_account_code_prefix">6.0.00.00.</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="l10nar_ex_chart_template" model="account.chart.template">
|
||||||
|
<field name="name">Plan Contable Genérico Argentina para Exentos</field>
|
||||||
|
<field name="parent_id" ref="l10nar_base_chart_template"/>
|
||||||
|
<field name="currency_id" ref="base.ARS"/>
|
||||||
|
<field name="bank_account_code_prefix">1.1.1.02.</field>
|
||||||
|
<field name="cash_account_code_prefix">1.1.1.01.</field>
|
||||||
|
<field name="code_digits">12</field>
|
||||||
|
<field name="transfer_account_code_prefix">6.0.00.00.</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="l10nar_ri_chart_template" model="account.chart.template">
|
||||||
|
<field name="name">Plan Contable Genérico Argentina para Responsables Inscriptos</field>
|
||||||
|
<field name="parent_id" ref="l10nar_ex_chart_template"/>
|
||||||
|
<field name="currency_id" ref="base.ARS"/>
|
||||||
|
<field name="bank_account_code_prefix">1.1.1.02.</field>
|
||||||
|
<field name="cash_account_code_prefix">1.1.1.01.</field>
|
||||||
|
<field name="code_digits">12</field>
|
||||||
|
<field name="transfer_account_code_prefix">6.0.00.00.</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<menuitem id="account_reports_ar_statements_menu" name="Argentinean Statements" parent="account.menu_finance_reports" sequence="5" groups="account.group_account_readonly"/>
|
||||||
|
|
||||||
|
<record id="l10nar_base_chart_template" model="account.chart.template">
|
||||||
|
<field name="property_account_receivable_id" ref="base_deudores_por_ventas"/>
|
||||||
|
<field name="property_account_payable_id" ref="base_proveedores"/>
|
||||||
|
<field name="property_account_expense_categ_id" ref="base_compra_mercaderia"/>
|
||||||
|
<field name="property_account_income_categ_id" ref="base_venta_de_mercaderia"/>
|
||||||
|
<field name="expense_currency_exchange_account_id" ref="base_diferencias_de_cambio"/>
|
||||||
|
<field name="income_currency_exchange_account_id" ref="base_diferencias_de_cambio"/>
|
||||||
|
<field name="default_pos_receivable_account_id" ref="base_deudores_por_ventas_pos"/>
|
||||||
|
<field name="property_tax_payable_account_id" ref="base_default_vat"/>
|
||||||
|
<field name="property_tax_receivable_account_id" ref="base_default_vat"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="l10nar_ex_chart_template" model="account.chart.template">
|
||||||
|
<field name="default_pos_receivable_account_id" ref="base_deudores_por_ventas_pos"/>
|
||||||
|
<field name="expense_currency_exchange_account_id" ref="base_diferencias_de_cambio"/>
|
||||||
|
<field name="income_currency_exchange_account_id" ref="base_diferencias_de_cambio"/>
|
||||||
|
<field name="property_tax_payable_account_id" ref="base_default_vat"/>
|
||||||
|
<field name="property_tax_receivable_account_id" ref="base_default_vat"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="l10nar_ri_chart_template" model="account.chart.template">
|
||||||
|
<field name="default_pos_receivable_account_id" ref="base_deudores_por_ventas_pos"/>
|
||||||
|
<field name="expense_currency_exchange_account_id" ref="base_diferencias_de_cambio"/>
|
||||||
|
<field name="income_currency_exchange_account_id" ref="base_diferencias_de_cambio"/>
|
||||||
|
<field name="property_tax_payable_account_id" ref="ri_iva_saldo_a_pagar"/>
|
||||||
|
<field name="property_tax_receivable_account_id" ref="ri_iva_saldo_tecnico_favor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,148 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<!-- Exempt Operations -->
|
||||||
|
<record model='account.fiscal.position.template' id='fiscal_position_template_exempt_operations'>
|
||||||
|
<field name='name'>Compras / Ventas al exterior</field>
|
||||||
|
<field name="auto_apply" eval="True"/>
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_ids" eval="[(6, False, [ref('l10n_ar.res_EXT')])]"/>
|
||||||
|
<field name="chart_template_id" ref="l10nar_ri_chart_template"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_ventas_0" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_0_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_ventas_10" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_10_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_ventas_21" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_21_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_ventas_27" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_27_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_compras_0" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_0_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_compras_10" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_10_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_compras_21" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_21_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_tax_compras_27" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_27_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_exento" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_exento_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_exempt_operations_no_gravado" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_exempt_operations"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_no_gravado_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Free Zone -->
|
||||||
|
<record model='account.fiscal.position.template' id='fiscal_position_template_free_zone'>
|
||||||
|
<field name='name'>Compras / Ventas Zona Franca</field>
|
||||||
|
<field name="auto_apply" eval="True"/>
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_ids" eval="[(6, False, [ref('l10n_ar.res_IVA_LIB')])]"/>
|
||||||
|
<field name="chart_template_id" ref="l10nar_ri_chart_template"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_ventas_0" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_0_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_ventas_10" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_10_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_ventas_21" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_21_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_ventas_27" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_27_ventas"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_ventas"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_compras_0" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_0_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_compras_10" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_10_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_compras_21" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_21_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_free_zone_tax_compras_27" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_free_zone"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_27_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_exento_compras"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- VAT dont correspond -->
|
||||||
|
<record model='account.fiscal.position.template' id='fiscal_position_template_iva_no_corresponde'>
|
||||||
|
<field name='name'>Compras IVA no corresponde</field>
|
||||||
|
<field name="auto_apply" eval="True"/>
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_ids" eval="[(6, False, [ref('l10n_ar.res_IVAE'), ref('l10n_ar.res_RM')])]"/>
|
||||||
|
<field name="chart_template_id" ref="l10nar_ri_chart_template"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_iva_no_corresponde_tax_0" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_iva_no_corresponde"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_0_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_iva_no_corresponde_tax_10" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_iva_no_corresponde"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_10_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_iva_no_corresponde_tax_21" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_iva_no_corresponde"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_21_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_iva_no_corresponde_tax_27" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_iva_no_corresponde"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_27_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_iva_no_corresponde_exento" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_iva_no_corresponde"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_exento_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
<record id="fiscal_position_template_iva_no_corresponde_no_gravado" model="account.fiscal.position.tax.template">
|
||||||
|
<field name="position_id" ref="fiscal_position_template_iva_no_corresponde"/>
|
||||||
|
<field name="tax_src_id" ref="ri_tax_vat_no_gravado_compras"/>
|
||||||
|
<field name="tax_dest_id" ref="ri_tax_vat_no_corresponde_compras"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,260 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="1">
|
||||||
|
|
||||||
|
<!-- VAT Taxes -->
|
||||||
|
|
||||||
|
<record id="tax_group_iva_21" model="account.tax.group">
|
||||||
|
<field name="name">VAT 21%</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">5</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="tax_group_iva_27" model="account.tax.group">
|
||||||
|
<field name="name">VAT 27%</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">6</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="tax_group_iva_105" model="account.tax.group">
|
||||||
|
<field name="name">VAT 10.5%</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">4</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="tax_group_iva_025" model="account.tax.group">
|
||||||
|
<field name="name">VAT 2,5%</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">9</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_iva_no_corresponde">
|
||||||
|
<field name="name">VAT Not Applicable</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">0</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_iva_no_gravado">
|
||||||
|
<field name="name">VAT Untaxed</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">1</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_iva_exento">
|
||||||
|
<field name="name">VAT Exempt</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">2</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_iva_0">
|
||||||
|
<field name="name">VAT 0%</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">3</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_iva_5">
|
||||||
|
<field name="name">VAT 5%</field>
|
||||||
|
<field name="l10n_ar_vat_afip_code">8</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Others Taxes -->
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_otros_impuestos">
|
||||||
|
<field name="name">Otros Impuestos</field>
|
||||||
|
<field name="sequence">20</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">99</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_impuestos_internos">
|
||||||
|
<field name="name">Internal Taxes</field>
|
||||||
|
<field name="sequence">15</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">04</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_national_taxes">
|
||||||
|
<field name="name">National Taxes</field>
|
||||||
|
<field name="sequence">30</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">01</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Perceptions and Withholding -->
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iva">
|
||||||
|
<field name="name">VAT Perception</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">06</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_caba">
|
||||||
|
<field name="name">Perc IIBB CABA</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_ba">
|
||||||
|
<field name="name">Perc IIBB ARBA</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_ca">
|
||||||
|
<field name="name">Perc IIBB Catamarca</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_co">
|
||||||
|
<field name="name">Perc IIBB Córdoba</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_rr">
|
||||||
|
<field name="name">Perc IIBB Corrientes</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_er">
|
||||||
|
<field name="name">Perc IIBB Entre Ríos</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_ju">
|
||||||
|
<field name="name">Perc IIBB Jujuy</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_za">
|
||||||
|
<field name="name">Perc IIBB Mendoza</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_lr">
|
||||||
|
<field name="name">Perc IIBB La Rioja</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_sa">
|
||||||
|
<field name="name">Perc IIBB Salta</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_nn">
|
||||||
|
<field name="name">Perc IIBB San Juan</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_sl">
|
||||||
|
<field name="name">Perc IIBB San Luis</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_sf">
|
||||||
|
<field name="name">Perc IIBB Santa Fe</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_se">
|
||||||
|
<field name="name">Perc IIBB Santiago del Estero</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_tn">
|
||||||
|
<field name="name">Perc IIBB Tucumán</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_ha">
|
||||||
|
<field name="name">Perc IIBB Chaco</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_ct">
|
||||||
|
<field name="name">Perc IIBB Chubut</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_fo">
|
||||||
|
<field name="name">Perc IIBB Formosa</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_mi">
|
||||||
|
<field name="name">Perc IIBB Misiones</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_ne">
|
||||||
|
<field name="name">Perc IIBB Neuquén</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_lp">
|
||||||
|
<field name="name">Perc IIBB La Pampa</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_rn">
|
||||||
|
<field name="name">Perc IIBB Río Negro</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_az">
|
||||||
|
<field name="name">Perc IIBB Santa Cruz</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb_tf">
|
||||||
|
<field name="name">Perc IIBB Tierra del Fuego</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_iibb">
|
||||||
|
<field name="name">IIBB Perceptions</field>
|
||||||
|
<field name="sequence">25</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">07</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_municipal">
|
||||||
|
<field name="name">Municipal Taxes Perceptions</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">08</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_percepcion_ganancias">
|
||||||
|
<field name="name">Profit Perceptions</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">09</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="account.tax.group" id="tax_group_otras_percepciones">
|
||||||
|
<field name="name">Other Perceptions</field>
|
||||||
|
<field name="l10n_ar_tribute_afip_code">09</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVARI'>
|
||||||
|
<field name='code'>1</field>
|
||||||
|
<field name='name'>IVA Responsable Inscripto</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVARNI'>
|
||||||
|
<field name='code'>2</field>
|
||||||
|
<field name='name'>(Depreciado) IVA Responsable no Inscripto</field>
|
||||||
|
<field name='active' eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVANR'>
|
||||||
|
<field name='code'>3</field>
|
||||||
|
<field name='name'>(Depreciado) IVA no Responsable</field>
|
||||||
|
<field name='active' eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVAE'>
|
||||||
|
<field name='code'>4</field>
|
||||||
|
<field name='name'>IVA Sujeto Exento</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_CF'>
|
||||||
|
<field name='code'>5</field>
|
||||||
|
<field name='name'>Consumidor Final</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_RM'>
|
||||||
|
<field name='code'>6</field>
|
||||||
|
<field name='name'>Responsable Monotributo</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_NOCATEG'>
|
||||||
|
<field name='code'>7</field>
|
||||||
|
<field name='name'>Sujeto no Categorizado</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_EXT_Prov'>
|
||||||
|
<field name='code'>8</field>
|
||||||
|
<field name='name'>Proveedor del Exterior</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_EXT'>
|
||||||
|
<field name='code'>9</field>
|
||||||
|
<field name='name'>Cliente del Exterior</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVA_LIB'>
|
||||||
|
<field name='code'>10</field>
|
||||||
|
<field name='name'>IVA Liberado – Ley Nº 19.640</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVARI_AP'>
|
||||||
|
<field name='code'>11</field>
|
||||||
|
<field name='name'>(Depreciado) IVA Responsable Inscripto – Agente de Percepción</field>
|
||||||
|
<field name='active' eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_EVENTUAL'>
|
||||||
|
<field name='code'>12</field>
|
||||||
|
<field name='name'>(Depreciado) Pequeño Contribuyente Eventual</field>
|
||||||
|
<field name='active' eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_MON_SOCIAL'>
|
||||||
|
<field name='code'>13</field>
|
||||||
|
<field name='name'>Monotributista Social</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_EVENTUAL_SOCIAL'>
|
||||||
|
<field name='code'>14</field>
|
||||||
|
<field name='name'>(Depreciado) Pequeño Contribuyente Eventual Social</field>
|
||||||
|
<field name='active' eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_IVA_NO_ALC'>
|
||||||
|
<field name='code'>15</field>
|
||||||
|
<field name='name'>IVA No Alcanzado</field>
|
||||||
|
<field name='active' eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_ar.afip.responsibility.type' id='res_MON_Ind'>
|
||||||
|
<field name='code'>16</field>
|
||||||
|
<field name='name'>Monotributo Trabajador / Independiente Promovido</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,147 @@
|
||||||
|
id,sequence,code,name,l10n_ar_letter,report_name,internal_type,doc_code_prefix,country_id/id,purchase_aliquots
|
||||||
|
dc_a_f,10,1,FACTURAS A,A,FACTURA,invoice,FA-A,base.ar,not_zero
|
||||||
|
dc_a_nd,20,2,NOTAS DE DEBITO A,A,NOTA DE DEBITO,debit_note,ND-A,base.ar,not_zero
|
||||||
|
dc_a_nc,30,3,NOTAS DE CREDITO A,A,NOTA DE CREDITO,credit_note,NC-A,base.ar,not_zero
|
||||||
|
dc_a_r,40,4,RECIBOS A,A,RECIBO,invoice,RE-A,base.ar,not_zero
|
||||||
|
dc_a_nvc,50,5,NOTAS DE VENTA AL CONTADO A,A,,invoice,NVC-A,base.ar,not_zero
|
||||||
|
dc_b_f,60,6,FACTURAS B,B,FACTURA,invoice,FA-B,base.ar,zero
|
||||||
|
dc_b_nd,70,7,NOTAS DE DEBITO B,B,NOTA DE DEBITO,debit_note,ND-B,base.ar,zero
|
||||||
|
dc_b_nc,80,8,NOTAS DE CREDITO B,B,NOTA DE CREDITO,credit_note,NC-B,base.ar,zero
|
||||||
|
dc_b_r,90,9,RECIBOS B,B,RECIBO,invoice,RE-B,base.ar,zero
|
||||||
|
dc_b_nvc,100,10,NOTAS DE VENTA AL CONTADO B,B,,invoice,NVC-B,base.ar,zero
|
||||||
|
dc_c_f,110,11,FACTURAS C,C,FACTURA,invoice,FA-C,base.ar,zero
|
||||||
|
dc_c_nd,120,12,NOTAS DE DEBITO C,C,NOTA DE DEBITO,debit_note,ND-C,base.ar,zero
|
||||||
|
dc_c_nc,130,13,NOTAS DE CREDITO C,C,NOTA DE CREDITO,credit_note,NC-C,base.ar,zero
|
||||||
|
dc_aduana,140,14,DOCUMENTO ADUANERO,,,,,base.ar,
|
||||||
|
dc_c_r,150,15,RECIBOS C,C,RECIBO,invoice,RE-C,base.ar,zero
|
||||||
|
dc_c_nvc,160,16,NOTAS DE VENTA AL CONTADO C,C,,invoice,NVC-C,base.ar,zero
|
||||||
|
dc_e_f,170,19,FACTURAS DE EXPORTACION,E,FACTURA,invoice,FA-E,base.ar,not_zero
|
||||||
|
dc_e_nd,180,20,NOTAS DE DEBITO POR OPERACIONES CON EL EXTERIOR,E,NOTA DE DEBITO,debit_note,ND-E,base.ar,not_zero
|
||||||
|
dc_e_nc,190,21,NOTAS DE CREDITO POR OPERACIONES CON EL EXTERIOR,E,NOTA DE CREDITO,credit_note,NC-E,base.ar,not_zero
|
||||||
|
dc_e_fs,200,22,FACTURAS - PERMISO EXPORTACION SIMPLIFICADO - DTO. 855/97,E,,,,base.ar,not_zero
|
||||||
|
dc_usados,210,30,COMPROBANTES DE COMPRA DE BIENES USADOS,,,invoice,CBU,base.ar,not_zero
|
||||||
|
dc_mandato,220,31,MANDATO - CONSIGNACION,,,,,base.ar,
|
||||||
|
dc_reciclado,230,32,COMPROBANTES PARA RECICLAR MATERIALES,,,invoice,CRM,base.ar,not_zero
|
||||||
|
dc_a_rg1415,240,34,"COMPROBANTES A DEL APARTADO A, INC. F), R.G. Nº 1415",A,,invoice,CA-A,base.ar,not_zero
|
||||||
|
dc_b_rg1415,250,35,"COMPROBANTES B DEL ANEXO I, APARTADO A, INC. F), R.G. Nº 1415",B,,invoice,CA-B,base.ar,zero
|
||||||
|
dc_c_rg1415,260,36,"COMPROBANTES C DEL ANEXO I, APARTADO A, INC. F), R.G. Nº 1415",C,,invoice,CA-C,base.ar,zero
|
||||||
|
dc_nd_rg1415,270,37,NOTAS DE DEBITO O DOCUMENTO EQUIVALENTE QUE CUMPLAN CON LA R.G. Nº 1415,,,debit_note,ND1415,base.ar,not_zero
|
||||||
|
dc_nc_rg1415,280,38,NOTAS DE CREDITO O DOCUMENTO EQUIVALENTE QUE CUMPLAN CON LA R.G. Nº 1415,,,credit_note,NC1415,base.ar,not_zero
|
||||||
|
dc_a_o_rg1415,290,39,OTROS COMPROBANTES A QUE CUMPLEN CON LA R.G. Nº 1415,A,,invoice,OC-A,base.ar,not_zero
|
||||||
|
dc_b_o_rg1415,300,40,OTROS COMPROBANTES B QUE CUMPLAN CON LA R.G. Nº 1415,B,,invoice,OC-B,base.ar,zero
|
||||||
|
dc_c_o_rg1415,310,41,OTROS COMPROBANTES C QUE CUMPLAN CON LA R.G. Nº 1415,C,,invoice,OC-C,base.ar,zero
|
||||||
|
dc_a_rf,320,50,RECIBO FACTURA A REGIMEN DE FACTURA DE CREDITO,A,,,,base.ar,not_zero
|
||||||
|
dc_m_f,330,51,FACTURAS M,M,FACTURA,invoice,FA-M,base.ar,not_zero
|
||||||
|
dc_m_nd,340,52,NOTAS DE DEBITO M,M,NOTA DE DEBITO,debit_note,ND-M,base.ar,not_zero
|
||||||
|
dc_m_nc,350,53,NOTAS DE CREDITO M,M,NOTA DE CREDITO,credit_note,NC-M,base.ar,not_zero
|
||||||
|
dc_m_r,360,54,RECIBOS M,M,RECIBO,invoice,RE-M,base.ar,not_zero
|
||||||
|
dc_m_nvc,370,55,NOTAS DE VENTA AL CONTADO M,M,,invoice,NVC-M,base.ar,not_zero
|
||||||
|
dc_m_rg1415,380,56,"COMPROBANTES M DEL ANEXO I, APARTADO A, INC. F), R.G. Nº 1415",M,,invoice,CA-M,base.ar,not_zero
|
||||||
|
dc_m_o_rg1415,390,57,OTROS COMPROBANTES M QUE CUMPLAN CON LA R.G. Nº 1415,M,,invoice,OC-M,base.ar,not_zero
|
||||||
|
dc_m_cvl,400,58,CUENTAS DE VENTA Y LIQUIDO PRODUCTO M,M,,invoice,LP-M,base.ar,not_zero
|
||||||
|
dc_m_l,410,59,LIQUIDACIONES M,M,LIQUIDACION,invoice,LI-M,base.ar,not_zero
|
||||||
|
dc_a_cvl,420,60,CUENTAS DE VENTA Y LIQUIDO PRODUCTO A,A,CTA VTA LIQUIDO PRODUCTO,invoice,LP-A,base.ar,not_zero
|
||||||
|
dc_b_cvl,430,61,CUENTAS DE VENTA Y LIQUIDO PRODUCTO B,B,CTA VTA LIQUIDO PRODUCTO,invoice,LP-B,base.ar,zero
|
||||||
|
dc_a_l,440,63,LIQUIDACIONES A,A,LIQUIDACION,invoice,LI-A,base.ar,not_zero
|
||||||
|
dc_b_l,450,64,LIQUIDACIONES B,B,LIQUIDACION,invoice,LI-B,base.ar,zero
|
||||||
|
dc_nc,460,65,"NOTAS DE CREDITO DE COMPROBANTES CON COD. 34, 39, 58, 59, 60, 63, 96, 97,",,,,,base.ar,
|
||||||
|
dc_desp_imp,470,66,DESPACHO DE IMPORTACION,,,invoice,DI,base.ar,not_zero
|
||||||
|
dc_imp_serv,480,67,IMPORTACION DE SERVICIOS,,,,,base.ar,
|
||||||
|
dc_c_l,490,68,LIQUIDACION C,C,LIQUIDACION,invoice,LI-C,base.ar,not_zero
|
||||||
|
dc_rfc,500,70,RECIBOS FACTURA DE CREDITO,,,,,base.ar,not_zero
|
||||||
|
dc_cfcp,510,71,CREDITO FISCAL POR CONTRIBUCIONES PATRONALES,,,,,base.ar,
|
||||||
|
dc_f1116,520,73,FORMULARIO 1116 RT,,,,,base.ar,
|
||||||
|
dc_cptag,530,74,CARTA DE PORTE PARA EL TRANSPORTE AUTOMOTOR PARA GRANOS,,,,,base.ar,
|
||||||
|
dc_cptfg,540,75,CARTA DE PORTE PARA EL TRANSPORTE FERROVIARIO PARA GRANOS,,,,,base.ar,
|
||||||
|
dc_zeta,550,80,INFORME DIARIO DE CIERRE (ZETA) - CONTROLADORES FISCALES,,ZETA,invoice,CI-Z,base.ar,zero
|
||||||
|
dc_a_t,560,81,TIQUE FACTURA A,A,TIQUE FACTURA,invoice,TF-A,base.ar,not_zero
|
||||||
|
dc_b_t,570,82,TIQUE - FACTURA B,B,TIQUE FACTURA,invoice,TF-B,base.ar,zero
|
||||||
|
dc_t,580,83,TIQUE,,TIQUE,invoice,TI-X,base.ar,zero
|
||||||
|
dc_sp_c,590,84,COMPROBANTE FACTURA DE SERVICIOS PUBLICOS INTERESES FINANCIEROS,,,,,base.ar,
|
||||||
|
dc_sp_nc,600,85,NOTA DE CREDITO SERVICIOS PUBLICOS NOTA DE CREDITO CONTROLADORES FISCALES,,,,,base.ar,
|
||||||
|
dc_sp_nd,610,86,NOTA DE DEBITO SERVICIOS PUBLICOS,,,,,base.ar,
|
||||||
|
dc_oc_se,620,87,OTROS COMPROBANTES - SERVICIOS DEL EXTERIOR,,,,,base.ar,
|
||||||
|
dc_oc_c,630,88,REMITO ELECTRONICO,,,,,base.ar,
|
||||||
|
dc_oc_nd,640,89,RESUMEN DE DATOS,,,,,base.ar,
|
||||||
|
dc_oc_nc,650,90,OTROS COMPROBANTES - DOCUMENTOS EXCEPTUADOS - NOTAS DE CREDITO,,,credit_note,OC,base.ar,not_zero
|
||||||
|
dc_r_r,660,91,REMITOS R,R,,,,base.ar,
|
||||||
|
dc_ac_inc_df,670,92,AJUSTES CONTABLES QUE INCREMENTAN EL DEBITO FISCAL,,,,,base.ar,
|
||||||
|
dc_ac_dis_df,680,93,AJUSTES CONTABLES QUE DISMINUYEN EL DEBITO FISCAL,,,,,base.ar,
|
||||||
|
dc_ac_inc_cf,690,94,AJUSTES CONTABLES QUE INCREMENTAN EL CREDITO FISCAL,,,,,base.ar,
|
||||||
|
dc_ac_dis_cf,700,95,AJUSTES CONTABLES QUE DISMINUYEN EL CREDITO FISCAL,,,,,base.ar,
|
||||||
|
dc_f1116b,710,96,FORMULARIO 1116 B,,,,,base.ar,
|
||||||
|
dc_f1116c,720,97,FORMULARIO 1116 C,,,,,base.ar,
|
||||||
|
dc_oc_ncrg3419,730,99,OTROS COMPROBANTES QUE NO CUMPLEN O ESTAN EXCEPTUADOS DE LA R.G. Nº 1415 Y SUS MODIF,,,invoice,OC-X,base.ar,not_zero
|
||||||
|
dc_aa_dj_pos,740,101,AJUSTE ANUAL PROVENIENTE DE LA D J DEL IVA POSITIVO,,,,,base.ar,
|
||||||
|
dc_aa_dj_neg,750,102,AJUSTE ANUAL PROVENIENTE DE LA D J DEL IVA NEGATIVO,,,,,base.ar,
|
||||||
|
dc_na,760,103,NOTA DE ASIGNACION,,,,,base.ar,
|
||||||
|
dc_nca,770,104,NOTA DE CREDITO DE ASIGNACION,,,,,base.ar,
|
||||||
|
dc_remito_x,790,94,REMITOS X,X,REMITO,,RM-X,base.ar,
|
||||||
|
dc_liq_s_a,800,17,LIQUIDACION DE SERVICIOS PUBLICOS CLASE A,A,,invoice,LS-A,base.ar,not_zero
|
||||||
|
dc_liq_s_b,810,18,LIQUIDACION DE SERVICIOS PUBLICOS CLASE B,B,,invoice,LS-B,base.ar,zero
|
||||||
|
dc_com_a_m,820,23,"COMPROBANTES ""A"" DE COMPRA PRIMARIA PARA EL SECTOR PESQUERO MARITIMO",,,,,base.ar,
|
||||||
|
dc_con_a_m,830,24,"COMPROBANTES ""A"" DE CONSIGNACION PRIMARIA PARA EL SECTOR PESQUERO MARITIMO",,,,,base.ar,
|
||||||
|
dc_com_b_m,840,25,"COMPROBANTES ""B"" DE COMPRA PRIMARIA PARA EL SECTOR PESQUERO MARITIMO",,,,,base.ar,
|
||||||
|
dc_con_b_m,850,26,"COMPROBANTES ""B"" DE CONSIGNACION PRIMARIA PARA EL SECTOR PESQUERO MARITIMO",,,,,base.ar,
|
||||||
|
dc_liq_uci_a,860,27,LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE A,A,,invoice,LU-A,base.ar,not_zero
|
||||||
|
dc_liq_uci_b,870,28,LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE B,B,,invoice,LU-B,base.ar,zero
|
||||||
|
dc_liq_uci_c,880,29,LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE C,C,,invoice,LU-C,base.ar,zero
|
||||||
|
dc_liq_prim_gr,890,33,LIQUIDACION PRIMARIA DE GRANOS,,,invoice,LPG,base.ar,not_zero
|
||||||
|
dc_nc_liq_uci_a,900,43,NOTA DE CREDITO LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE B,B,,credit_note,NCLU-B,base.ar,zero
|
||||||
|
dc_nc_liq_uci_b,910,44,NOTA DE CREDITO LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE C,C,,credit_note,NCLU-C,base.ar,zero
|
||||||
|
dc_nd_liq_uci_a,920,45,NOTA DE DEBITO LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE A,A,,debit_note,NDLU-A,base.ar,not_zero
|
||||||
|
dc_nd_liq_uci_b,930,46,NOTA DE DEBITO LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE B,B,,debit_note,NDLU-B,base.ar,zero
|
||||||
|
dc_nd_liq_uci_c,940,47,NOTA DE DEBITO LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE C,C,,debit_note,NDLU-C,base.ar,zero
|
||||||
|
dc_nc_liq_uci_c,950,48,NOTA DE CREDITO LIQUIDACION UNICA COMERCIAL IMPOSITIVA CLASE A,A,,credit_note,NCLU-A,base.ar,not_zero
|
||||||
|
dc_bs_no_reg,960,49,COMPROBANTES DE COMPRA DE BIENES NO REGISTRABLES A CONSUMIDORES FINALES,,,invoice,BNR,base.ar,not_zero
|
||||||
|
dc_t_nc,970,110,TIQUE NOTA DE CREDITO,,TIQUE NOTA DE CREDITO,credit_note,TC-X,base.ar,not_zero
|
||||||
|
dc_t_c,980,111,TIQUE FACTURA C,C,TIQUE FACTURA,invoice,TF-C,base.ar,zero
|
||||||
|
dc_t_nc_a,990,112,TIQUE NOTA DE CREDITO A,A,TIQUE NOTA DE CREDITO,credit_note,TN-A,base.ar,not_zero
|
||||||
|
dc_t_nc_b,1000,113,TIQUE NOTA DE CREDITO B,B,TIQUE NOTA DE CREDITO,credit_note,TN-B,base.ar,zero
|
||||||
|
dc_t_nc_c,1010,114,TIQUE NOTA DE CREDITO C,C,TIQUE NOTA DE CREDITO,credit_note,TN-C,base.ar,zero
|
||||||
|
dc_t_nd_a,1020,115,TIQUE NOTA DE DEBITO A,A,TIQUE NOTA DE DEBITO,debit_note,TD-A,base.ar,not_zero
|
||||||
|
dc_t_nd_b,1030,116,TIQUE NOTA DE DEBITO B,B,TIQUE NOTA DE DEBITO,debit_note,TD-B,base.ar,zero
|
||||||
|
dc_t_nd_c,1040,117,TIQUE NOTA DE DEBITO C,C,TIQUE NOTA DE DEBITO,debit_note,TD-C,base.ar,zero
|
||||||
|
dc_t_m,1050,118,TIQUE FACTURA M,M,FACTURA,invoice,TF-M,base.ar,not_zero
|
||||||
|
dc_t_nc_m,1060,119,TIQUE NOTA DE CREDITO M,M,NOTA DE CREDITO,credit_note,TC-M,base.ar,not_zero
|
||||||
|
dc_t_nd_m,1070,120,TIQUE NOTA DE DEBITO M,M,NOTA DE DEBITO,debit_note,TD-M,base.ar,not_zero
|
||||||
|
dc_liq_sec_gr,1080,331,LIQUIDACION SECUNDARIA DE GRANOS,,,invoice,LSG,base.ar,not_zero
|
||||||
|
dc_cert_ele_gr,1090,332,CERTIFICACION ELECTRONICA (GRANOS),,,,,base.ar,
|
||||||
|
dc_fce_a_f,1100,201,FACTURA DE CREDITO ELECTRONICA MiPyMEs (FCE) A,A,FACTURA DE CREDITO ELECTRONICA,invoice,FCE-A,base.ar,not_zero
|
||||||
|
dc_fce_a_nd,1110,202,NOTA DE DEBITO ELECTRONICA MiPyMEs (FCE) A,A,NOTA DE DEBITO ELECTRONICA,debit_note,NDE-A,base.ar,not_zero
|
||||||
|
dc_fce_a_nc,1120,203,NOTA DE CREDITO ELECTRONICA MiPyMEs (FCE) A,A,NOTA DE CREDITO ELECTRONICA,credit_note,NCE-A,base.ar,not_zero
|
||||||
|
dc_fce_b_f,1130,206,FACTURA DE CREDITO ELECTRONICA MiPyMEs (FCE) B,B,FACTURA DE CREDITO ELECTRONICA,invoice,FCE-B,base.ar,zero
|
||||||
|
dc_fce_b_nd,1140,207,NOTA DE DEBITO ELECTRONICA MiPyMEs (FCE) B,B,NOTA DE DEBITO ELECTRONICA,debit_note,NDE-B,base.ar,zero
|
||||||
|
dc_fce_b_nc,1150,208,NOTA DE CREDITO ELECTRONICA MiPyMEs (FCE) B,B,NOTA DE CREDITO ELECTRONICA,credit_note,NCE-B,base.ar,zero
|
||||||
|
dc_fce_c_f,1160,211,FACTURA DE CREDITO ELECTRONICA MiPyMEs (FCE) C,C,FACTURA DE CREDITO ELECTRONICA,invoice,FCE-C,base.ar,zero
|
||||||
|
dc_fce_c_nd,1170,212,NOTA DE DEBITO ELECTRONICA MiPyMEs (FCE) C,C,NOTA DE DEBITO ELECTRONICA,debit_note,NDE-C,base.ar,zero
|
||||||
|
dc_fce_c_nc,1180,213,NOTA DE CREDITO ELECTRONICA MiPyMEs (FCE) C,C,NOTA DE CREDITO ELECTRONICA,credit_note,NCE-D,base.ar,zero
|
||||||
|
fa_exterior,195,,FACTURAS Y COMPROBANTES DEL EXTERIOR,I,,invoice,FA-I,base.ar,zero
|
||||||
|
nc_exterior,196,,NOTAS DE CREDITO Y REEMBOLSOS DEL EXTERIOR,I,,credit_note,NC-I,base.ar,zero
|
||||||
|
dc_liq_cpst_a,1190,150,LIQUIDACIÓN DE COMPRA PRIMARIA PARA EL SECTOR TABACALERO A,A,,invoice,LCT-A,base.ar,not_zero
|
||||||
|
dc_liq_cpst_b,1200,151,LIQUIDACIÓN DE COMPRA PRIMARIA PARA EL SECTOR TABACALERO B,B,,invoice,LCT-B,base.ar,zero
|
||||||
|
dc_cvl_sa_a,1210,157,CUENTA DE VENTA Y LÍQUIDO PRODUCTO A – SECTOR AVÍCOLA,A,,invoice,CVA-A,base.ar,not_zero
|
||||||
|
dc_cvl_sa_b,1220,158,CUENTA DE VENTA Y LÍQUIDO PRODUCTO B – SECTOR AVÍCOLA,B,,invoice,CVA-B,base.ar,zero
|
||||||
|
dc_liq_c_sa_a,1230,159,LIQUIDACIÓN DE COMPRA A – SECTOR AVÍCOLA,A,,invoice,LCA-A,base.ar,not_zero
|
||||||
|
dc_liq_c_sa_b,1240,160,LIQUIDACIÓN DE COMPRA B – SECTOR AVÍCOLA,B,,invoice,LCA-B,base.ar,zero
|
||||||
|
dc_liq_cd_sa_a,1250,161,LIQUIDACIÓN DE COMPRA DIRECTA A - SECTOR AVÍCOLA,A,,invoice,LCDA-A,base.ar,not_zero
|
||||||
|
dc_liq_cd_sa_b,1260,162,LIQUIDACIÓN DE COMPRA DIRECTA B - SECTOR AVÍCOLA,B,,invoice,LCDA-B,base.ar,zero
|
||||||
|
dc_liq_cd_sa_c,1270,163,LIQUIDACIÓN DE COMPRA DIRECTA C - SECTOR AVÍCOLA,C,,invoice,LCDA-C,base.ar,zero
|
||||||
|
dc_liq_vd_sa_a,1280,164,LIQUIDACIÓN DE VENTA DIRECTA A - SECTOR AVÍCOLA,A,,invoice,LVDA-A,base.ar,not_zero
|
||||||
|
dc_liq_vd_sa_b,1290,165,LIQUIDACIÓN DE VENTA DIRECTA B - SECTOR AVÍCOLA,B,,invoice,LVDA-B,base.ar,zero
|
||||||
|
dc_liq_ccpc_a,1300,166,LIQUIDACIÓN DE CONTRATACIÓN DE CRIANZA POLLOS PARRILLEROS A,A,,invoice,LCCP-A,base.ar,not_zero
|
||||||
|
dc_liq_ccpc_b,1310,167,LIQUIDACIÓN DE CONTRATACIÓN DE CRIANZA POLLOS PARRILLEROS B,B,,invoice,LCCP-B,base.ar,zero
|
||||||
|
dc_liq_ccpc_c,1320,168,LIQUIDACIÓN DE CONTRATACIÓN DE CRIANZA POLLOS PARRILLEROS C,C,,invoice,LCCP-C,base.ar,zero
|
||||||
|
dc_liq_cpc_a,1330,169,LIQUIDACIÓN DE CRIANZA POLLOS PARRILLEROS A,A,,invoice,LCPP-A,base.ar,not_zero
|
||||||
|
dc_liq_cpc_b,1340,170,LIQUIDACIÓN DE CRIANZA POLLOS PARRILLEROS B,B,,invoice,LCPP-B,base.ar,zero
|
||||||
|
dc_liq_cca_a,1350,171,LIQUIDACIÓN DE COMPRA DE CAÑA DE AZÚCAR A,A,,invoice,LCCA-A,base.ar,not_zero
|
||||||
|
dc_liq_cca_b,1360,172,LIQUIDACIÓN DE COMPRA DE CAÑA DE AZÚCAR B,B,,invoice,LCCA-B,base.ar,zero
|
||||||
|
dc_cvl_sp_a,1370,180,CUENTA DE VENTA Y LÍQUIDO PRODUCTO A - SECTOR PECUARIO,A,,invoice,CVP-A,base.ar,not_zero
|
||||||
|
dc_cvl_sp_b,1380,182,CUENTA DE VENTA Y LÍQUIDO PRODUCTO B - SECTOR PECUARIO,B,,invoice,CVP-B,base.ar,zero
|
||||||
|
dc_liq_c_sp_a,1390,183,LIQUIDACIÓN DE COMPRA A - SECTOR PECUARIO,A,,invoice,LCP-A,base.ar,not_zero
|
||||||
|
dc_liq_c_sp_b,1400,185,LIQUIDACIÓN DE COMPRA B - SECTOR PECUARIO,B,,invoice,LCP-B,base.ar,zero
|
||||||
|
dc_liq_cd_sp_a,1410,186,LIQUIDACIÓN DE COMPRA DIRECTA A - SECTOR PECUARIO,A,,invoice,LCDP-A,base.ar,not_zero
|
||||||
|
dc_liq_cd_sp_b,1420,188,LIQUIDACIÓN DE COMPRA DIRECTA B - SECTOR PECUARIO,B,,invoice,LCDP-B,base.ar,zero
|
||||||
|
dc_liq_cd_sp_c,1430,189,LIQUIDACIÓN DE COMPRA DIRECTA C - SECTOR PECUARIO,C,,invoice,LCDP-C,base.ar,zero
|
||||||
|
dc_liq_vd_sp_a,1440,190,LIQUIDACIÓN DE VENTA DIRECTA A - SECTOR PECUARIO,A,,invoice,LVDP-A,base.ar,not_zero
|
||||||
|
dc_liq_vd_sp_b,1450,191,LIQUIDACIÓN DE VENTA DIRECTA B - SECTOR PECUARIO,B,,invoice,LVDP-B,base.ar,zero
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="1">
|
||||||
|
<function model="l10n_latam.document.type" name="write">
|
||||||
|
<value model="l10n_latam.document.type" eval="obj().search([('country_id.code', '=', 'AR'), ('code', 'in', ['5','10','14','16','22','30','31','32','34','35','36','37','38','50','55','56','57','58','59','60','61','65','67','68','70','71','73','74','75','80','84','85','86','87','88','89','90','91','92','93','94','95','96','97','101','102','103','104','94','23','24','25','26','33','331','332','150','151','157','158','159','160','161','162','163','164','165','166','167','168','169','170','171','172','180','182','183','185','186','188','189','190','191'])]).ids"/>
|
||||||
|
<value eval="{'active': False}"/>
|
||||||
|
</function>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,333 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<record model='l10n_latam.identification.type' id='l10n_latam_base.it_fid'>
|
||||||
|
<field name='l10n_ar_afip_code'>91</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='l10n_latam_base.it_pass'>
|
||||||
|
<field name='l10n_ar_afip_code'>94</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_cuit'>
|
||||||
|
<field name='name'>CUIT</field>
|
||||||
|
<field name='description'>Código Único de Identificación Tributaria</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='is_vat' eval='True'/>
|
||||||
|
<field name='l10n_ar_afip_code'>80</field>
|
||||||
|
<field name='sequence'>10</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_dni'>
|
||||||
|
<field name='name'>DNI</field>
|
||||||
|
<field name='description'>Documento Nacional de Identidad</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>96</field>
|
||||||
|
<field name='sequence'>20</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CUIL'>
|
||||||
|
<field name='name'>CUIL</field>
|
||||||
|
<field name='description'>Código Único de Identificación Laboral</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>86</field>
|
||||||
|
<field name='sequence'>30</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_Sigd'>
|
||||||
|
<field name='name'>Sigd</field>
|
||||||
|
<field name='description'>Sin identificar/venta global diaria</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>99</field>
|
||||||
|
<field name='sequence'>110</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CPF'>
|
||||||
|
<field name='name'>CPF</field>
|
||||||
|
<field name='description'>CI Policía Federal</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>0</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CBA'>
|
||||||
|
<field name='name'>CBA</field>
|
||||||
|
<field name='description'>CI Buenos Aires</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>1</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CCat'>
|
||||||
|
<field name='name'>CCat</field>
|
||||||
|
<field name='description'>CI Catamarca</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>2</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CCor'>
|
||||||
|
<field name='name'>CCor</field>
|
||||||
|
<field name='description'>CI Córdoba</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>3</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CCorr'>
|
||||||
|
<field name='name'>CCorr</field>
|
||||||
|
<field name='description'>CI Corrientes</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>4</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIER'>
|
||||||
|
<field name='name'>CIER</field>
|
||||||
|
<field name='description'>CI Entre Ríos</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>5</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIJ'>
|
||||||
|
<field name='name'>CIJ</field>
|
||||||
|
<field name='description'>CI Jujuy</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>6</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIMen'>
|
||||||
|
<field name='name'>CIMen</field>
|
||||||
|
<field name='description'>CI Mendoza</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>7</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CILR'>
|
||||||
|
<field name='name'>CILR</field>
|
||||||
|
<field name='description'>CI La Rioja</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>8</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIS'>
|
||||||
|
<field name='name'>CIS</field>
|
||||||
|
<field name='description'>CI Salta</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>9</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISJ'>
|
||||||
|
<field name='name'>CISJ</field>
|
||||||
|
<field name='description'>CI San Juan</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>10</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISL'>
|
||||||
|
<field name='name'>CISL</field>
|
||||||
|
<field name='description'>CI San Luis</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>11</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISF'>
|
||||||
|
<field name='name'>CISF</field>
|
||||||
|
<field name='description'>CI Santa Fe</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>12</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISdE'>
|
||||||
|
<field name='name'>CISdE</field>
|
||||||
|
<field name='description'>CI Santiago del Estero</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>13</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIT'>
|
||||||
|
<field name='name'>CIT</field>
|
||||||
|
<field name='description'>CI Tucumán</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>14</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CICha'>
|
||||||
|
<field name='name'>CICha</field>
|
||||||
|
<field name='description'>CI Chaco</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>16</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIChu'>
|
||||||
|
<field name='name'>CIChu</field>
|
||||||
|
<field name='description'>CI Chubut</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>17</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIF'>
|
||||||
|
<field name='name'>CIF</field>
|
||||||
|
<field name='description'>CI Formosa</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>18</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIMis'>
|
||||||
|
<field name='name'>CIMis</field>
|
||||||
|
<field name='description'>CI Misiones</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>19</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIN'>
|
||||||
|
<field name='name'>CIN</field>
|
||||||
|
<field name='description'>CI Neuquén</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>20</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CILP'>
|
||||||
|
<field name='name'>CILP</field>
|
||||||
|
<field name='description'>CI La Pampa</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>21</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIRN'>
|
||||||
|
<field name='name'>CIRN</field>
|
||||||
|
<field name='description'>CI Río Negro</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>22</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISC'>
|
||||||
|
<field name='name'>CISC</field>
|
||||||
|
<field name='description'>CI Santa Cruz</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>23</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CITdF'>
|
||||||
|
<field name='name'>CITdF</field>
|
||||||
|
<field name='description'>CI Tierra del Fuego</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>24</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CDI'>
|
||||||
|
<field name='name'>CDI</field>
|
||||||
|
<field name='description'>CDI</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>87</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_LE'>
|
||||||
|
<field name='name'>LE</field>
|
||||||
|
<field name='description'>LE</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>89</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_LC'>
|
||||||
|
<field name='name'>LC</field>
|
||||||
|
<field name='description'>LC</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>90</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_ET'>
|
||||||
|
<field name='name'>ET</field>
|
||||||
|
<field name='description'>en trámite</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>92</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_AN'>
|
||||||
|
<field name='name'>AN</field>
|
||||||
|
<field name='description'>Acta nacimiento</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>93</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIBAR'>
|
||||||
|
<field name='name'>CIBAR</field>
|
||||||
|
<field name='description'>CI Bs. As. RNP</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>95</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CdM'>
|
||||||
|
<field name='name'>CdM</field>
|
||||||
|
<field name='description'>Certificado de Migración</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>30</field>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_UpApP'>
|
||||||
|
<field name='name'>UpApP</field>
|
||||||
|
<field name='description'>Usado por Anses para Padrón</field>
|
||||||
|
<field name='country_id' ref='base.ar'/>
|
||||||
|
<field name='l10n_ar_afip_code'>88</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<data noupdate="True">
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CBA'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CCat'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CCor'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CCorr'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIER'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIJ'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIMen'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CILR'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIS'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISJ'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISL'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISF'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISdE'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIT'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CICha'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIChu'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIF'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIMis'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIN'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CILP'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIRN'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CISC'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CITdF'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CDI'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_LE'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_LC'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_ET'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_AN'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CIBAR'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CdM'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_UpApP'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_Sigd'>
|
||||||
|
<field name='active' eval='True'/>
|
||||||
|
</record>
|
||||||
|
<record model='l10n_latam.identification.type' id='it_CPF'>
|
||||||
|
<field name='active' eval='False'/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
229
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/data/res.country.csv
Normal file
229
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/data/res.country.csv
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
id,l10n_ar_afip_code,l10n_ar_natural_vat,l10n_ar_legal_entity_vat,l10n_ar_other_vat
|
||||||
|
base.af,301,50000003015,55000003017,51600003015
|
||||||
|
base.al,401,50000004011,55000004013,51600004011
|
||||||
|
base.dz,102,50000001020,55000001022,51600001020
|
||||||
|
base.as,695,50000006952,55000006954,51600006952
|
||||||
|
base.de,438,50000004380,55000004382,51600004380
|
||||||
|
base.ad,404,50000004046,55000004048,51600004046
|
||||||
|
base.ao,149,50000001497,55000001499,51600001497
|
||||||
|
base.ai,652,50000006529,55000006520,51600006529
|
||||||
|
base.aq,265,,,
|
||||||
|
base.ag,237,50000002256,55000002258,51600002256
|
||||||
|
base.sa,302,50000003023,55000003025,51600003023
|
||||||
|
base.ar,200,,,
|
||||||
|
base.am,349,50000006022,55000006024,51600006022
|
||||||
|
base.aw,653,50000006537,55000006539,51600006537
|
||||||
|
base.au,501,50000004992,55000004994,51600004992
|
||||||
|
base.at,405,50000004054,55000004056,51600004054
|
||||||
|
base.az,350,50000003902,55000003904,51600003902
|
||||||
|
base.bs,239,50000002906,55000002908,51600002906
|
||||||
|
base.bh,303,50000003031,55000003033,51600003031
|
||||||
|
base.bd,345,50000003457,55000003459,51600003457
|
||||||
|
base.bb,201,50000002019,55000002010,51600002019
|
||||||
|
base.by,439,50000004399,55000004390,51600004399
|
||||||
|
base.be,406,50000004062,55000004064,51600004062
|
||||||
|
base.bz,236,50000002361,55000002363,51600002361
|
||||||
|
base.bj,112,50000001624,55000001626,51600001624
|
||||||
|
base.bm,663,50000006634,55000006636,51600006634
|
||||||
|
base.bt,305,50000002825,55000002827,51600002825
|
||||||
|
base.mm,304,50000002841,55000002843,51600002841
|
||||||
|
base.bo,202,50000000040,55000000042,51600000040
|
||||||
|
base.bq,241,50000006596,55000006598,51600006596
|
||||||
|
base.ba,446,50000004461,55000004463,51600004461
|
||||||
|
base.bw,103,50000001039,55000001030,51600001039
|
||||||
|
base.br,203,50000000059,55000000050,51600000059
|
||||||
|
base.bn,346,50000003910,55000003912,51600003910
|
||||||
|
base.bg,407,50000004070,55000004072,51600004070
|
||||||
|
base.bf,101,50000001012,55000001014,51600001012
|
||||||
|
base.bi,104,50000001047,55000001049,51600001047
|
||||||
|
base.kh,306,50000003066,55000003068,51600003066
|
||||||
|
base.cm,105,50000001055,55000001057,51600001055
|
||||||
|
base.ca,204,50000002043,55000002045,51600002043
|
||||||
|
base.cv,150,50000001500,55000001502,51600001500
|
||||||
|
base.ky,671,50000006715,55000006717,51600006715
|
||||||
|
base.cf,107,50000001071,55000001073,51600001071
|
||||||
|
base.td,111,50000001535,55000001537,51600001535
|
||||||
|
base.cl,208,50000000032,55000000034,51600000032
|
||||||
|
base.cn,310,50000003104,55000003106,51600003104
|
||||||
|
base.cy,311,50000003112,55000003114,51600003112
|
||||||
|
base.co,205,50000002051,55000002053,51600002051
|
||||||
|
base.km,155,50000001896,55000001898,51600001896
|
||||||
|
base.cg,108,,,
|
||||||
|
base.kp,308,50000003082,55000003084,51600003082
|
||||||
|
base.kr,309,50000003090,55000003092,51600003090
|
||||||
|
base.ci,110,50000001101,55000001103,51600001101
|
||||||
|
base.cr,206,50000001586,55000001588,51600001586
|
||||||
|
base.hr,447,50000006030,55000006032,51600006030
|
||||||
|
base.cu,207,50000002396,55000002398,51600002396
|
||||||
|
base.dk,409,50000004097,55000004099,51600004097
|
||||||
|
base.dm,233,50000002337,55000002339,51600002337
|
||||||
|
base.ec,210,50000002426,55000002428,51600002426
|
||||||
|
base.eg,113,50000001136,55000001138,51600001136
|
||||||
|
base.sv,211,50000002116,55000002118,51600002116
|
||||||
|
base.ae,331,50000003317,55000003319,51600003317
|
||||||
|
base.er,160,50000001853,55000001855,51600001853
|
||||||
|
base.sk,448,50000006065,55000006067,51600006065
|
||||||
|
base.si,449,50000004496,55000004498,51600004496
|
||||||
|
base.es,410,50000004100,55000004102,51600004100
|
||||||
|
base.ps,314,50000003570,55000003572,51600003570
|
||||||
|
base.us,212,50000002124,55000002126,51600002124
|
||||||
|
base.ee,440,50000004402,55000004404,51600004402
|
||||||
|
base.et,161,50000001144,55000001146,51600001144
|
||||||
|
base.ru,444,50000006014,55000006016,51600006014
|
||||||
|
base.fj,512,50000005123,55000005125,51600005123
|
||||||
|
base.ph,312,50000003120,55000003122,51600003120
|
||||||
|
base.fi,411,50000004119,55000004110,51600004119
|
||||||
|
base.fr,412,50000004127,55000004129,51600004127
|
||||||
|
base.ga,115,50000001152,55000001154,51600001152
|
||||||
|
base.gm,116,50000001160,55000001162,51600001160
|
||||||
|
base.ge,351,50000003880,55000003882,51600003880
|
||||||
|
base.gh,117,50000001179,55000001170,51600001179
|
||||||
|
base.gi,665,50000006650,55000006652,51600006650
|
||||||
|
base.gd,240,50000002882,55000002884,51600002884
|
||||||
|
base.gr,413,50000004135,55000004137,51600004135
|
||||||
|
base.gl,666,50000006669,55000006660,51600006669
|
||||||
|
base.gu,667,50000006677,55000006679,51600006677
|
||||||
|
base.gt,213,50000002132,55000002134,51600002132
|
||||||
|
base.gy,214,50000002140,55000002142,51600002140
|
||||||
|
base.gg,670,50000006707,55000006709,51600006707
|
||||||
|
base.gn,118,50000001187,55000001189,51600001187
|
||||||
|
base.gw,156,50000001845,55000001847,51600001845
|
||||||
|
base.gq,119,50000001195,55000001197,51600001195
|
||||||
|
base.ht,215,50000002159,55000002150,51600002159
|
||||||
|
base.nl,423,50000004232,55000004234,51600004232
|
||||||
|
base.hn,216,50000002167,55000002169,51600002167
|
||||||
|
base.hk,341,50000006685,55000006687,51600006685
|
||||||
|
base.hu,414,50000004143,55000004145,51600004143
|
||||||
|
base.in,315,50000003155,55000003157,51600003155
|
||||||
|
base.id,316,50000003163,55000003165,51600003163
|
||||||
|
base.iq,317,50000003171,55000003173,51600003171
|
||||||
|
base.ir,318,50000002930,55000002932,51600002930
|
||||||
|
base.ie,415,50000004151,55000004153,51600004151
|
||||||
|
base.im,676,50000006766,55000006768,51600006766
|
||||||
|
base.cx,672,50000006723,55000006725,51600006723
|
||||||
|
base.is,416,50000003813,55000003815,51600003813
|
||||||
|
base.nf,677,50000006774,55000006776,51600006774
|
||||||
|
base.cc,673,50000006731,55000006733,51600006731
|
||||||
|
base.ck,654,50000006545,55000006547,51600006545
|
||||||
|
base.fk,254,,,
|
||||||
|
base.mp,521,50000005212,55000005214,51600005212
|
||||||
|
base.mh,520,50000005204,55000005206,51600005204
|
||||||
|
base.pn,690,50000006901,55000006903,51600006901
|
||||||
|
base.sb,518,50000005182,55000005184,51600005182
|
||||||
|
base.tc,678,50000006782,55000006784,51600006782
|
||||||
|
base.vg,682,50000006820,55000006822,51600006820
|
||||||
|
base.vi,683,50000006839,55000006830,51600006839
|
||||||
|
base.il,319,50000002876,55000002878,51600002876
|
||||||
|
base.it,417,50000003546,55000003548,51600003546
|
||||||
|
base.jm,217,50000002175,55000002177,51600002175
|
||||||
|
base.jp,320,50000003201,55000003203,51600003201
|
||||||
|
base.je,670,50000006707,55000006709,51600006707
|
||||||
|
base.jo,321,50000003007,55000003009,51600003007
|
||||||
|
base.kz,352,50000003929,55000003920,51600003929
|
||||||
|
base.ke,120,50000001209,55000001200,51600001209
|
||||||
|
base.kg,353,50000003937,55000003939,51600003937
|
||||||
|
base.ki,514,50000005166,55000005168,51600005166
|
||||||
|
base.kw,323,50000003236,55000003238,51600003236
|
||||||
|
base.la,324,50000003244,55000003246,51600003244
|
||||||
|
base.ls,121,50000001217,55000001219,51600001217
|
||||||
|
base.lv,441,50000004410,55000004412,51600004410
|
||||||
|
base.lb,325,50000003252,55000003254,51600003252
|
||||||
|
base.lr,122,50000001225,55000001227,51600001225
|
||||||
|
base.ly,123,50000001233,55000001235,51600001233
|
||||||
|
base.li,418,50000004186,55000004188,51600004186
|
||||||
|
base.lt,442,50000004429,55000004420,51600004429
|
||||||
|
base.lu,419,50000004194,55000004196,51600004194
|
||||||
|
base.mo,344,50000003449,55000003440,51600003449
|
||||||
|
base.mk,450,50000004909,55000004900,51600004909
|
||||||
|
base.mg,124,50000001241,55000001243,51600001241
|
||||||
|
base.my,326,50000003260,55000003262,51600003260
|
||||||
|
base.mw,125,50000001543,55000001545,51600001543
|
||||||
|
base.mv,327,50000003279,55000003270,51600003279
|
||||||
|
base.ml,126,50000001632,55000001634,51600001632
|
||||||
|
base.mt,420,50000004364,55000004366,51600004364
|
||||||
|
base.ma,127,50000001276,55000001278,51600001276
|
||||||
|
base.mu,128,50000001284,55000001286,51600001284
|
||||||
|
base.mr,129,50000001292,55000001294,51600001292
|
||||||
|
base.mx,218,50000002183,55000002185,51600002183
|
||||||
|
base.fm,515,50000005905,55000005907,51600005905
|
||||||
|
base.md,443,50000004437,55000004439,51600004437
|
||||||
|
base.mc,421,50000004216,55000004218,51600004216
|
||||||
|
base.mn,329,50000003295,55000003297,51600003295
|
||||||
|
base.me,453,,,
|
||||||
|
base.ms,686,50000006863,55000006865,51600006863
|
||||||
|
base.mz,151,50000001519,55000001510,51600001519
|
||||||
|
base.na,158,50000001837,55000001839,51600001837
|
||||||
|
base.nr,503,50000005034,55000005036,51600005034
|
||||||
|
base.np,330,50000003309,55000003300,51600003309
|
||||||
|
base.ni,219,50000002191,55000002193,51600002191
|
||||||
|
base.ne,130,50000001306,55000001308,51600001306
|
||||||
|
base.ng,131,50000001314,55000001316,51600001314
|
||||||
|
base.nu,687,50000006871,55000006873,51600006871
|
||||||
|
base.no,422,50000004224,55000004226,51600004224
|
||||||
|
base.nz,504,50000005042,55000005044,51600005042
|
||||||
|
base.om,328,50000003287,55000003289,51600003287
|
||||||
|
base.pk,332,50000003325,55000003327,51600003325
|
||||||
|
base.pw,516,50000005913,55000005915,51600005913
|
||||||
|
base.pa,220,50000002205,55000002207,51600002205
|
||||||
|
base.pg,513,50000005131,55000005133,51600005131
|
||||||
|
base.py,221,50000000024,55000000026,51600000024
|
||||||
|
base.pe,222,50000002221,55000002223,51600002221
|
||||||
|
base.pf,656,50000006561,55000006563,51600006561
|
||||||
|
base.pl,424,50000004240,55000004242,51600004240
|
||||||
|
base.pt,425,50000004259,55000004250,51600004259
|
||||||
|
base.pr,223,50000002213,55000002215,51600002213
|
||||||
|
base.qa,322,50000002981,55000002983,51600002981
|
||||||
|
base.uk,426,50000004267,55000004269,51600004267
|
||||||
|
base.cz,451,50000006057,55000006059,51600006057
|
||||||
|
base.cd,109,50000001527,55000001529,55000001529
|
||||||
|
base.do,209,50000002094,55000002096,51600002094
|
||||||
|
base.rw,133,50000001330,55000001332,51600001330
|
||||||
|
base.ro,427,50000004275,55000004277,51600004275
|
||||||
|
base.ws,506,50000005069,55000005069,51600005069
|
||||||
|
base.kn,238,50000002892,55000002894,51600002892
|
||||||
|
base.sm,428,50000004283,55000004285,51600004283
|
||||||
|
base.pm,680,50000006804,55000006806,51600006804
|
||||||
|
base.sh,662,50000006979,55000006970,51600006979
|
||||||
|
base.lc,234,50000002345,55000002347,51600002345
|
||||||
|
base.va,431,50000004313,55000004315,51600004313
|
||||||
|
base.st,157,50000001829,55000001820,51600001829
|
||||||
|
base.vc,235,50000002353,55000002355,51600002353
|
||||||
|
base.sn,134,50000001349,55000001340,51600001349
|
||||||
|
base.rs,454,,,
|
||||||
|
base.sc,152,50000001810,55000001812,51600001810
|
||||||
|
base.sl,135,50000001357,55000001359,51600001357
|
||||||
|
base.sg,333,50000003333,55000003335,51600003333
|
||||||
|
base.sy,334,50000003341,55000003343,51600003341
|
||||||
|
base.so,136,50000001365,55000001367,51600001365
|
||||||
|
base.lk,307,50000003074,55000003076,51600003074
|
||||||
|
base.sz,137,50000001373,55000001375,51600001373
|
||||||
|
base.za,159,50000001713,55000001715,51600001713
|
||||||
|
base.sd,138,50000001381,55000001383,51600001381
|
||||||
|
base.se,429,50000004291,55000004293,51600004291
|
||||||
|
base.ch,430,50000004305,55000004307,51600004305
|
||||||
|
base.sr,232,50000002329,55000002320,51600002329
|
||||||
|
base.sj,696,50000006960,55000006962,51600006960
|
||||||
|
base.th,335,50000002914,55000002916,51600002914
|
||||||
|
base.tw,313,50000003139,55000003130,51600003139
|
||||||
|
base.tj,354,50000003899,55000003890,51600003899
|
||||||
|
base.tz,139,50000001551,55000001553,51600001551
|
||||||
|
base.tl,358,,,
|
||||||
|
base.tg,140,50000001403,55000001405,51600001403
|
||||||
|
base.tk,699,50000006995,55000006997,51600006995
|
||||||
|
base.to,519,50000005190,55000005192,51600005190
|
||||||
|
base.tt,224,50000002434,55000002436,51600002434
|
||||||
|
base.tn,141,50000001411,55000001413,51600001411
|
||||||
|
base.tm,355,50000003554,55000003556,51600003554
|
||||||
|
base.tr,336,50000003503,55000003505,51600003503
|
||||||
|
base.tv,517,50000005174,55000005176,51600005174
|
||||||
|
base.ua,445,50000006049,55000006040,51600006049
|
||||||
|
base.ug,142,50000001705,55000001707,51600001705
|
||||||
|
base.uy,225,50000000016,55000000018,51600000016
|
||||||
|
base.uz,356,50000003562,55000003564,51600003562
|
||||||
|
base.vu,505,50000005050,55000005052,51600005050
|
||||||
|
base.ve,226,50000002264,55000002266,51600002264
|
||||||
|
base.vn,337,50000003376,55000003378,51600003376
|
||||||
|
base.ye,348,50000003392,55000003394,51600003392
|
||||||
|
base.dj,153,50000001861,55000001863,51600001861
|
||||||
|
base.zm,144,50000001446,55000001448,51600001446
|
||||||
|
base.zw,132,50000001322,55000001324,51600001322
|
||||||
|
44
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/data/res.currency.csv
Normal file
44
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/data/res.currency.csv
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
id,l10n_ar_afip_code
|
||||||
|
base.ARS,PES
|
||||||
|
base.EUR,060
|
||||||
|
base.USD,DOL
|
||||||
|
base.ANG,028
|
||||||
|
base.AUD,026
|
||||||
|
base.BOB,031
|
||||||
|
base.BRL,012
|
||||||
|
base.CAD,018
|
||||||
|
base.CHF,009
|
||||||
|
base.CLP,033
|
||||||
|
base.CNY,064
|
||||||
|
base.COP,032
|
||||||
|
base.CZK,024
|
||||||
|
base.DKK,014
|
||||||
|
base.DOP,042
|
||||||
|
base.EGP,046
|
||||||
|
base.GBP,021
|
||||||
|
base.GTQ,055
|
||||||
|
base.HKD,051
|
||||||
|
base.HNL,063
|
||||||
|
base.HUF,056
|
||||||
|
base.ILS,030
|
||||||
|
base.INR,062
|
||||||
|
base.JMD,053
|
||||||
|
base.JPY,019
|
||||||
|
base.KWD,059
|
||||||
|
base.MAD,045
|
||||||
|
base.MXN,010
|
||||||
|
base.NIO,044
|
||||||
|
base.NOK,015
|
||||||
|
base.PAB,043
|
||||||
|
base.PEN,035
|
||||||
|
base.PLN,061
|
||||||
|
base.PYG,029
|
||||||
|
base.RON,040
|
||||||
|
base.SAR,047
|
||||||
|
base.SEK,016
|
||||||
|
base.SGD,052
|
||||||
|
base.THB,057
|
||||||
|
base.TWD,054
|
||||||
|
base.UYU,011
|
||||||
|
base.VEF,023
|
||||||
|
base.ZAR,034
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo noupdate="True">
|
||||||
|
|
||||||
|
<record model='res.partner' id='par_cfa'>
|
||||||
|
<field name='name'>Consumidor Final Anónimo</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref='l10n_ar.it_Sigd'/>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="res_CF"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model='res.partner' id='par_iibb_pagar'>
|
||||||
|
<field name='name'>IIBB a pagar</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="partner_afip" model="res.partner">
|
||||||
|
<field name="name">AFIP</field>
|
||||||
|
<field name="is_company" eval="True"/>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>33693450239</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="res_IVA_NO_ALC"/>
|
||||||
|
<field name='l10n_ar_special_purchase_document_type_ids' eval='[(4, ref("dc_desp_imp"), False), (4, ref("dc_imp_serv"), False)]'/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
61
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/data/uom_uom_data.xml
Normal file
61
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/data/uom_uom_data.xml
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo noupdate="True">
|
||||||
|
|
||||||
|
<record model='uom.uom' id='uom.product_uom_kgm'>
|
||||||
|
<field name='l10n_ar_afip_code'>01</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_meter'>
|
||||||
|
<field name='l10n_ar_afip_code'>02</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_litre'>
|
||||||
|
<field name='l10n_ar_afip_code'>05</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_unit'>
|
||||||
|
<field name='l10n_ar_afip_code'>07</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_dozen'>
|
||||||
|
<field name='l10n_ar_afip_code'>09</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_cm'>
|
||||||
|
<field name='l10n_ar_afip_code'>20</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_day'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_floz'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_foot'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_gram'>
|
||||||
|
<field name='l10n_ar_afip_code'>14</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_gal'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_hour'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_inch'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_km'>
|
||||||
|
<field name='l10n_ar_afip_code'>17</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_lb'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_mile'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_oz'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_qt'>
|
||||||
|
<field name='l10n_ar_afip_code'>98</field>
|
||||||
|
</record>
|
||||||
|
<record model='uom.uom' id='uom.product_uom_ton'>
|
||||||
|
<field name='l10n_ar_afip_code'>29</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
3
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/__init__.py
Normal file
3
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import account_demo
|
||||||
|
|
@ -0,0 +1,278 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="True">
|
||||||
|
|
||||||
|
<!-- TODO This demo data is for functional testing and demo but also was used for tests. Test cases should be moved to proper tests -->
|
||||||
|
<!-- TODO also, once written the proper tests, we should remove price and name information from lines because it is overwriten by "_onchange_product_id" method. That methods is called to set taxes and uom from products -->
|
||||||
|
<!-- Invoice to gritti support service, vat 21 -->
|
||||||
|
<record id="demo_invoice_1" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_gritti_agrimensura"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 642.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to Servicios Globales with vat 21, 27 and 10,5 -->
|
||||||
|
<record id="demo_invoice_2" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_cmr"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-05'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with vat cero and 21 -->
|
||||||
|
<record id="demo_invoice_3" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with vat exempt and 21 -->
|
||||||
|
<record id="demo_invoice_4" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.1234, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.5678, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with all type of taxes -->
|
||||||
|
<record id="demo_invoice_5" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_no_gravado'), 'price_unit': 50.0, 'quantity': 10}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to Montana Sur fiscal position changes taxes to exempt -->
|
||||||
|
<record id="demo_invoice_6" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_cerrocastor"/>
|
||||||
|
<field name="journal_id" ref="l10n_ar.sale_expo_journal_ri"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-03'"/>
|
||||||
|
<field name="invoice_incoterm_id" ref="account.incoterm_EXW"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_no_gravado'), 'price_unit': 50.0, 'quantity': 10}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Export invoice to Barcelona food, fiscal position changes tax to exempt (type 4 because it have services) -->
|
||||||
|
<record id="demo_invoice_7" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_expresso"/>
|
||||||
|
<field name="journal_id" ref="l10n_ar.sale_expo_journal_ri"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-03'"/>
|
||||||
|
<field name="invoice_incoterm_id" ref="account.incoterm_EXW"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_no_gravado'), 'price_unit': 50.0, 'quantity': 10}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to consumidor final -->
|
||||||
|
<record id="demo_invoice_8" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.par_cfa"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 642.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC in USD and vat 21 -->
|
||||||
|
<record id="base.USD" model="res.currency">
|
||||||
|
<field name="active" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="demo_invoice_10" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 1000.0, 'quantity': 5}),
|
||||||
|
]"/>
|
||||||
|
<field name="currency_id" ref="base.USD"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with many lines in order to prove rounding error, with 4 decimals of precision for the currency and 2 decimals for the product the error apperar -->
|
||||||
|
<record id="demo_invoice_11" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 1'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 2'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 3'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 4'}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with many lines in order to test rounding error, it is required to use a 4 decimal precision in prodct in order to the error occur -->
|
||||||
|
<record id="demo_invoice_12" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 15.7076, 'quantity': 1, 'name': 'Support Services 1'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 5.3076, 'quantity': 2, 'name': 'Support Services 2'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 3.5384, 'quantity': 2, 'name': 'Support Services 3'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1.6376, 'quantity': 2, 'name': 'Support Services 4'}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with many lines in order to test zero amount invoices y rounding error. it is required to set the product decimal precision to 4 and change 260.59 for 260.60 in order to reproduce the error -->
|
||||||
|
<record id="demo_invoice_13" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 1'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 260.59, 'quantity': -1, 'name': 'Support Services 2'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 48.72, 'quantity': 1, 'name': 'Support Services 3'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 13.666, 'quantity': 1, 'name': 'Support Services 4'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 11.329, 'quantity': 2, 'name': 'Support Services 5'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 68.9408, 'quantity': 1, 'name': 'Support Services 6'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 4.7881, 'quantity': 2, 'name': 'Support Services 7'}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 12.0625, 'quantity': 2, 'name': 'Support Services 8'}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Export invoice to Barcelona food, fiscal position changes tax to exempt (type 1 because only products) -->
|
||||||
|
<record id="demo_invoice_14" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_expresso"/>
|
||||||
|
<field name="journal_id" ref="l10n_ar.sale_expo_journal_ri"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-20'"/>
|
||||||
|
<field name="invoice_incoterm_id" ref="account.incoterm_EXW"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Export invoice to Barcelona food, fiscal position changes tax to exempt (type 2 because only service) -->
|
||||||
|
<record id="demo_invoice_15" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_expresso"/>
|
||||||
|
<field name="journal_id" ref="l10n_ar.sale_expo_journal_ri"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-20'"/>
|
||||||
|
<field name="invoice_incoterm_id" ref="account.incoterm_EXW"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Export invoice to Barcelona food, fiscal position changes tax to exempt (type 1 because it have products only, used to test refund of expo) -->
|
||||||
|
<record id="demo_invoice_16" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_expresso"/>
|
||||||
|
<field name="journal_id" ref="l10n_ar.sale_expo_journal_ri"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-22'"/>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_incoterm_id" ref="account.incoterm_EXW"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with 100% of discount -->
|
||||||
|
<record id="demo_invoice_17" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 8', 'discount': 100}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with 100% of discount and with different VAT aliquots -->
|
||||||
|
<record id="demo_invoice_18" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 8', 'discount': 100}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1, 'discount': 100}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with multiple taxes and perceptions -->
|
||||||
|
<record id="demo_invoice_19" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">out_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 8'}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move" name="action_post">
|
||||||
|
<value eval="[ref('demo_invoice_1'), ref('demo_invoice_2'), ref('demo_invoice_3'), ref('demo_invoice_4'), ref('demo_invoice_5'), ref('demo_invoice_6'), ref('demo_invoice_7'), ref('demo_invoice_8'), ref('demo_invoice_10'), ref('demo_invoice_11'), ref('demo_invoice_12'), ref('demo_invoice_13'), ref('demo_invoice_14'), ref('demo_invoice_15'), ref('demo_invoice_16'), ref('demo_invoice_17'), ref('demo_invoice_18'), ref('demo_invoice_19')]"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="True">
|
||||||
|
|
||||||
|
<!-- Create draft refund for invoice 3 -->
|
||||||
|
<record id="demo_refund_invoice_3" model="account.move.reversal" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="reason">Mercadería defectuosa</field>
|
||||||
|
<field name="refund_method">refund</field>
|
||||||
|
<field name="move_ids" eval="[(4, ref('demo_invoice_3'), 0)]"/>
|
||||||
|
<field name="journal_id" model="account.journal" eval="obj().env.ref('l10n_ar.demo_invoice_3').journal_id"/>
|
||||||
|
<field name="date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move.reversal" name="reverse_moves" eval="[ref('demo_refund_invoice_3')]"/>
|
||||||
|
|
||||||
|
<!-- Create draft refund for invoice 4 -->
|
||||||
|
<record id="demo_refund_invoice_4" model="account.move.reversal" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="reason">Venta cancelada</field>
|
||||||
|
<field name="refund_method">cancel</field>
|
||||||
|
<field name="move_ids" eval="[(4, ref('demo_invoice_4'), 0)]"/>
|
||||||
|
<field name="journal_id" model="account.journal" eval="obj().env.ref('l10n_ar.demo_invoice_4').journal_id"/>
|
||||||
|
<field name="date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move.reversal" name="reverse_moves" eval="[ref('demo_refund_invoice_4')]"/>
|
||||||
|
|
||||||
|
<!-- Create cancel refund for expo invoice 16 (las nc/nd expo invoice no requiere parametro permiso existennte, por eso agregamos este ejemplo) -->
|
||||||
|
<record id="demo_refund_invoice_16" model="account.move.reversal" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="reason">Venta cancelada</field>
|
||||||
|
<field name="refund_method">cancel</field>
|
||||||
|
<field name="move_ids" eval="[(4, ref('demo_invoice_16'), 0)]"/>
|
||||||
|
<field name="journal_id" model="account.journal" eval="obj().env.ref('l10n_ar.demo_invoice_16').journal_id"/>
|
||||||
|
<field name="date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move.reversal" name="reverse_moves" eval="[ref('demo_refund_invoice_16')]"/>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
43
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/account_demo.py
Normal file
43
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/account_demo.py
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from odoo import api, models
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class AccountChartTemplate(models.Model):
|
||||||
|
_inherit = "account.chart.template"
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_demo_data(self):
|
||||||
|
ref = self.env.ref
|
||||||
|
|
||||||
|
# Do not load generic demo data on these companies
|
||||||
|
ar_demo_companies = (
|
||||||
|
ref('l10n_ar.company_mono', raise_if_not_found=False),
|
||||||
|
ref('l10n_ar.company_exento', raise_if_not_found=False),
|
||||||
|
ref('l10n_ar.company_ri', raise_if_not_found=False),
|
||||||
|
)
|
||||||
|
if self.env.company in ar_demo_companies:
|
||||||
|
return []
|
||||||
|
|
||||||
|
yield ('res.partner', {
|
||||||
|
'base.res_partner_12': {
|
||||||
|
'l10n_ar_afip_responsibility_type_id': ref('l10n_ar.res_IVARI').id,
|
||||||
|
},
|
||||||
|
'base.res_partner_2': {
|
||||||
|
'l10n_ar_afip_responsibility_type_id': ref('l10n_ar.res_IVARI').id,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
for model, data in super()._get_demo_data():
|
||||||
|
yield model, data
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_demo_data_move(self):
|
||||||
|
cid = self.env.company.id
|
||||||
|
model, data = super()._get_demo_data_move()
|
||||||
|
if self.env.company.account_fiscal_country_id.code == "AR":
|
||||||
|
data[f'{cid}_demo_invoice_5']['l10n_latam_document_number'] = '1-1'
|
||||||
|
data[f'{cid}_demo_invoice_equipment_purchase']['l10n_latam_document_number'] = '1-2'
|
||||||
|
return model, data
|
||||||
|
|
@ -0,0 +1,228 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="True">
|
||||||
|
|
||||||
|
<!-- we add l10n_latam_document_number on on a separete line because we need l10n_latam_document_type_id to be auto assigned so that account.move.name can be computed with the _inverse_l10n_latam_document_number -->
|
||||||
|
|
||||||
|
<!-- Invoice from gritti support service, auto fiscal position set VAT Not Applicable -->
|
||||||
|
<record id="demo_sup_invoice_1" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_gritti_agrimensura"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 642.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_no_gravado'), 'price_unit': 50.0, 'quantity': 10}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice from Foreign with vat 21, 27 and 10,5 -->
|
||||||
|
<record id="demo_sup_invoice_2" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_foreign"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice from Foreign with vat zero and 21 -->
|
||||||
|
<record id="demo_sup_invoice_3" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_foreign"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-11'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to Foreign with vat exempt and 21 -->
|
||||||
|
<record id="demo_sup_invoice_4" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_foreign"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-15'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to Foreign with all type of taxes -->
|
||||||
|
<record id="demo_sup_invoice_5" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_foreign"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-18'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_no_gravado'), 'price_unit': 50.0, 'quantity': 10}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_cero'), 'price_unit': 200.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_exento'), 'price_unit': 100.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Service Import to Odoo, fiscal position changes tax not correspond -->
|
||||||
|
<record id="demo_sup_invoice_6" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_odoo"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-26'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1642.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Similar to last one but with line that have tax not correspond with negative amount -->
|
||||||
|
<record id="demo_sup_invoice_7" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="res_partner_odoo"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-27'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 1642.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_no_gravado'), 'price_unit': -50.0, 'quantity': 10}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Invoice to ADHOC with multiple taxes and perceptions -->
|
||||||
|
<record id="demo_sup_invoice_8" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_27'), 'price_unit': 642.0, 'quantity': 5}),
|
||||||
|
(0, 0, {'product_id': ref('product_product_telefonia'), 'price_unit': 250.0, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_25'), 'price_unit': 3245.0, 'quantity': 2}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Liquido Producto document type -->
|
||||||
|
<record id="demo_liquido_producto_1" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="l10n_latam_document_type_id" ref="l10n_ar.dc_liq_cd_sp_a"/>
|
||||||
|
<field name="l10n_latam_document_number">00077-00000077</field>
|
||||||
|
<field name="partner_id" ref="l10n_ar.res_partner_adhoc"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-25'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 5064.98, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('product.product_product_2'), 'price_unit': 152.08, 'quantity': 1}),
|
||||||
|
(0, 0, {'product_id': ref('l10n_ar.product_product_no_gravado'), 'price_unit': 10.0, 'quantity': 1}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Import Cleareance -->
|
||||||
|
<record id="demo_despacho_1" model="account.move" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="partner_id" ref="l10n_ar.partner_afip"/>
|
||||||
|
<field name="invoice_user_id" ref="base.user_demo"/>
|
||||||
|
<field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
|
||||||
|
<field name="move_type">in_invoice</field>
|
||||||
|
<field name="invoice_date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||||
|
<field name="invoice_line_ids" eval="[
|
||||||
|
(0, 0, {
|
||||||
|
'price_unit': 5064.98,
|
||||||
|
'name': '[AFIP_DESPACHO] Despacho de importación',
|
||||||
|
'product_id': ref('l10n_ar.product_product_quote_despacho'),
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'price_unit': 152.08,
|
||||||
|
'name': '[AFIP_TASA_EST] Tasa Estadística',
|
||||||
|
'product_id': ref('l10n_ar.product_product_tasa_estadistica'),
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'price_unit': 10.0,
|
||||||
|
'name': '[AFIP_ARANCEL] Arancel',
|
||||||
|
'product_id': ref('l10n_ar.product_product_arancel'),
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'price_unit': 28.00,
|
||||||
|
'name': '[AFIP_SERV_GUARDA] Servicio de Guarda',
|
||||||
|
'product_id': ref('l10n_ar.product_product_servicio_de_guarda'),
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'name': 'FOB Total',
|
||||||
|
'price_unit': 28936.06,
|
||||||
|
'tax_ids': [(6, 0, [ref('l10n_ar.{}_ri_tax_vat_21_compras'.format(ref('company_ri')))])],
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'name': 'Flete',
|
||||||
|
'price_unit': 1350.00,
|
||||||
|
'tax_ids': [(6, 0, [ref('l10n_ar.{}_ri_tax_vat_21_compras'.format(ref('company_ri')))])],
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'name': 'Seguro',
|
||||||
|
'price_unit': 130.21,
|
||||||
|
'tax_ids': [(6, 0, [ref('l10n_ar.{}_ri_tax_vat_21_compras'.format(ref('company_ri')))])],
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'name': '-FOB Total',
|
||||||
|
'price_unit': -28936.06,
|
||||||
|
'tax_ids': [(6, 0, [ref('l10n_ar.{}_ri_tax_vat_no_gravado_compras'.format(ref('company_ri')))])],
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'name': '-Flete',
|
||||||
|
'price_unit': -1350.00,
|
||||||
|
'tax_ids': [(6, 0, [ref('l10n_ar.{}_ri_tax_vat_no_gravado_compras'.format(ref('company_ri')))])],
|
||||||
|
}),
|
||||||
|
(0, 0, {
|
||||||
|
'name': '-Seguro',
|
||||||
|
'price_unit': -130.21,
|
||||||
|
'tax_ids': [(6, 0, [ref('l10n_ar.{}_ri_tax_vat_no_gravado_compras'.format(ref('company_ri')))])],
|
||||||
|
}),
|
||||||
|
]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="demo_sup_invoice_1" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0001-00000008</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_2" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0002-00000123</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_3" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0003-00000312</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_4" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0001-00000200</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_5" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0001-00000222</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_6" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0001-00000333</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_7" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0001-00000334</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_sup_invoice_8" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">0001-00000335</field>
|
||||||
|
</record>
|
||||||
|
<record id="demo_despacho_1" model="account.move">
|
||||||
|
<field name="l10n_latam_document_number">16052IC04000605L</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move" name="action_post">
|
||||||
|
<value eval="[ref('demo_sup_invoice_1'), ref('demo_sup_invoice_2'), ref('demo_sup_invoice_3'), ref('demo_sup_invoice_4'), ref('demo_sup_invoice_5'), ref('demo_sup_invoice_6'), ref('demo_sup_invoice_7'), ref('demo_sup_invoice_8'), ref('demo_despacho_1'), ref('demo_liquido_producto_1')]"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="True">
|
||||||
|
|
||||||
|
<!-- Create draft refund for invoice 3 -->
|
||||||
|
<record id="demo_sup_refund_invoice_3" model="account.move.reversal" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="reason">Mercadería defectuosa</field>
|
||||||
|
<field name="refund_method">refund</field>
|
||||||
|
<field name="l10n_latam_document_number">0001-01234567</field>
|
||||||
|
<field name="move_ids" eval="[(4, ref('demo_sup_invoice_3'), 0)]"/>
|
||||||
|
<field name="journal_id" search="[('company_id', '=', ref('l10n_ar.company_ri')), ('type', '=', 'purchase')]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move.reversal" name="reverse_moves" eval="[ref('demo_sup_refund_invoice_3')]"/>
|
||||||
|
|
||||||
|
<!-- Create draft refund for invoice 4 -->
|
||||||
|
<record id="demo_sup_refund_invoice_4" model="account.move.reversal" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="reason">Venta cancelada</field>
|
||||||
|
<field name="refund_method">cancel</field>
|
||||||
|
<field name="l10n_latam_document_number">0001-01234566</field>
|
||||||
|
<field name="move_ids" eval="[(4, ref('demo_sup_invoice_4'), 0)]"/>
|
||||||
|
<field name="journal_id" search="[('company_id', '=', ref('l10n_ar.company_ri')), ('type', '=', 'purchase')]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move.reversal" name="reverse_moves" eval="[ref('demo_sup_refund_invoice_4')]"/>
|
||||||
|
|
||||||
|
<!-- Liquido Producto document vendor bill refund -->
|
||||||
|
<record id="demo_sup_refund_invoice_5" model="account.move.reversal" context="{'allowed_company_ids': [ref('company_ri')]}">
|
||||||
|
<field name="reason">demo_sup_refund_invoice_5: liquido producto bill refund (credit note)</field>
|
||||||
|
<field name="refund_method">cancel</field>
|
||||||
|
<field name="move_ids" eval="[(4, ref('demo_sup_invoice_8'), 0)]"/>
|
||||||
|
<field name="l10n_latam_document_type_id" ref="l10n_ar.dc_liq_cd_sp_a"/>
|
||||||
|
<field name="l10n_latam_document_number">00011-00000012</field>
|
||||||
|
<field name="date" eval="time.strftime('%Y-%m')+'-01'"/>
|
||||||
|
<field name="journal_id" model="account.journal" eval="obj().env.ref('l10n_ar.demo_sup_invoice_8').journal_id"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="account.move.reversal" name="reverse_moves" eval="[ref('demo_sup_refund_invoice_5')]"/>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/adhoc_jjs.jpeg
Executable file
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/adhoc_jjs.jpeg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/adhoc_logo.png
Normal file
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/adhoc_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.8 KiB |
53
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/exento_demo.xml
Normal file
53
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/exento_demo.xml
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="partner_exento" model="res.partner">
|
||||||
|
<field name='name'>(AR) Exento</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="res_IVAE"/>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30999999995</field>
|
||||||
|
<field name="street">Soyexento 123</field>
|
||||||
|
<field name="city">Rosario</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="state_id" ref="base.state_ar_s"/>
|
||||||
|
<field name="zip">2000</field>
|
||||||
|
<field name="phone">+1 555 123 8069</field>
|
||||||
|
<field name="email">info@exento.example.com</field>
|
||||||
|
<field name="website">www.exento.com</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="company_exento" model="res.company">
|
||||||
|
<field name='parent_id' ref='base.main_company'/>
|
||||||
|
<field name='currency_id' ref='base.ARS'/>
|
||||||
|
<field name='partner_id' ref='partner_exento'/>
|
||||||
|
<field name='name'>(AR) Exento</field>
|
||||||
|
<field name='l10n_ar_gross_income_type'>exempt</field>
|
||||||
|
<field name="l10n_ar_afip_start_date" eval="time.strftime('%Y-%m')+'-1'"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="res.users" name="write">
|
||||||
|
<value eval="[ref('base.user_root'), ref('base.user_admin'), ref('base.user_demo')]"/>
|
||||||
|
<value eval="{'company_ids': [(4, ref('l10n_ar.company_exento'))]}"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
<function model="account.chart.template" name="try_loading">
|
||||||
|
<value eval="[ref('l10n_ar.l10nar_ex_chart_template')]"/>
|
||||||
|
<value model="res.company" eval="obj().env.ref('l10n_ar.company_exento')"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
|
||||||
|
<record id="sale_expo_journal_exento" model="account.journal">
|
||||||
|
<field name='name'>Expo Sales Journal</field>
|
||||||
|
<field name='company_id' ref="l10n_ar.company_exento"/>
|
||||||
|
<field name='type'>sale</field>
|
||||||
|
<field name='code'>S0002</field>
|
||||||
|
<field name='l10n_latam_use_documents' eval="True"/>
|
||||||
|
<field name='l10n_ar_afip_pos_number'>2</field>
|
||||||
|
<field name='l10n_ar_afip_pos_partner_id' ref="l10n_ar.partner_exento"/>
|
||||||
|
<field name='l10n_ar_afip_pos_system'>FEERCEL</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/gritti_logo.png
Executable file
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/gritti_logo.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
53
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/mono_demo.xml
Normal file
53
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/mono_demo.xml
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="partner_mono" model="res.partner">
|
||||||
|
<field name='name'>(AR) Monotributista</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="res_RM"/>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>20222222223</field>
|
||||||
|
<field name="street">Calle Falsa 123</field>
|
||||||
|
<field name="city">Rosario</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="state_id" ref="base.state_ar_s"/>
|
||||||
|
<field name="zip">2000</field>
|
||||||
|
<field name="phone">+1 555 123 8069</field>
|
||||||
|
<field name="email">info@example.com</field>
|
||||||
|
<field name="website">www.example.com</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="company_mono" model="res.company">
|
||||||
|
<field name='parent_id' ref='base.main_company'/>
|
||||||
|
<field name='currency_id' ref='base.ARS'/>
|
||||||
|
<field name='partner_id' ref='partner_mono'/>
|
||||||
|
<field name='name'>(AR) Monotributista</field>
|
||||||
|
<field name='l10n_ar_gross_income_type'>exempt</field>
|
||||||
|
<field name="l10n_ar_afip_start_date" eval="time.strftime('%Y-%m')+'-1'"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="res.users" name="write">
|
||||||
|
<value eval="[ref('base.user_root'), ref('base.user_admin'), ref('base.user_demo')]"/>
|
||||||
|
<value eval="{'company_ids': [(4, ref('l10n_ar.company_mono'))]}"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
<function model="account.chart.template" name="try_loading">
|
||||||
|
<value eval="[ref('l10n_ar.l10nar_base_chart_template')]"/>
|
||||||
|
<value model="res.company" eval="obj().env.ref('l10n_ar.company_mono')"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
|
||||||
|
<record id="sale_expo_journal_mono" model="account.journal">
|
||||||
|
<field name='name'>Expo Sales Journal</field>
|
||||||
|
<field name='company_id' ref="l10n_ar.company_mono"/>
|
||||||
|
<field name='type'>sale</field>
|
||||||
|
<field name='code'>S0002</field>
|
||||||
|
<field name='l10n_latam_use_documents' eval="True"/>
|
||||||
|
<field name='l10n_ar_afip_pos_number'>2</field>
|
||||||
|
<field name='l10n_ar_afip_pos_partner_id' ref="l10n_ar.partner_mono"/>
|
||||||
|
<field name='l10n_ar_afip_pos_system'>FEERCEL</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/odoo_logo.jpg
Normal file
BIN
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/odoo_logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.6 KiB |
|
|
@ -0,0 +1,107 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="product_product_quote_despacho" model="product.product">
|
||||||
|
<field name="name">Import Clearance</field>
|
||||||
|
<field name="detailed_type">service</field>
|
||||||
|
<field name="default_code">AFIP_DESPACHO</field>
|
||||||
|
<field name="sale_ok" eval="False"/>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_product_tasa_estadistica" model="product.product">
|
||||||
|
<field name="name">Statistics Rate</field>
|
||||||
|
<field name="detailed_type">service</field>
|
||||||
|
<field name="default_code">AFIP_TASA_EST</field>
|
||||||
|
<field name="sale_ok" eval="False"/>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_product_arancel" model="product.product">
|
||||||
|
<field name="name">Tariff</field>
|
||||||
|
<field name="detailed_type">service</field>
|
||||||
|
<field name="default_code">AFIP_ARANCEL</field>
|
||||||
|
<field name="sale_ok" eval="False"/>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT Untaxed')]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_product_servicio_de_guarda" model="product.product">
|
||||||
|
<field name="name">Guard Service</field>
|
||||||
|
<field name="detailed_type">service</field>
|
||||||
|
<field name="default_code">AFIP_SERV_GUARDA</field>
|
||||||
|
<field name="sale_ok" eval="False"/>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT Untaxed')]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_product_exento" model="product.product">
|
||||||
|
<field name="name">Book "Development in Odoo" (VAT Exempt)</field>
|
||||||
|
<field name="categ_id" ref="product.product_category_5"/>
|
||||||
|
<field name="standard_price">100.0</field>
|
||||||
|
<field name="list_price">80.0</field>
|
||||||
|
<field name="detailed_type">consu</field>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="default_code">EXENTO</field>
|
||||||
|
<field name="taxes_id" search="[('type_tax_use', '=', 'sale'), ('tax_group_id', '=', 'VAT Exempt')]"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT Exempt')]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_product_cero" model="product.product">
|
||||||
|
<field name="name">Non-industrialized animals and vegetables (VAT Zero)</field>
|
||||||
|
<field name="categ_id" ref="product.product_category_5"/>
|
||||||
|
<field name="standard_price">200.0</field>
|
||||||
|
<field name="list_price">160.0</field>
|
||||||
|
<field name="detailed_type">consu</field>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="default_code">CERO</field>
|
||||||
|
<field name="taxes_id" search="[('type_tax_use', '=', 'sale'), ('tax_group_id', '=', 'VAT 0%')]"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT 0%')]"/>
|
||||||
|
</record>
|
||||||
|
<record id="product_product_no_gravado" model="product.product">
|
||||||
|
<field name="name">Untaxed concepts (VAT NT)</field>
|
||||||
|
<field name="categ_id" ref="product.product_category_5"/>
|
||||||
|
<field name="standard_price">50.0</field>
|
||||||
|
<field name="list_price">40.0</field>
|
||||||
|
<field name="detailed_type">consu</field>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="default_code">NOGRAVADO</field>
|
||||||
|
<field name="taxes_id" search="[('type_tax_use', '=', 'sale'), ('tax_group_id', '=', 'VAT Untaxed')]"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT Untaxed')]"/>
|
||||||
|
</record>
|
||||||
|
<record id="product_product_telefonia" model="product.product">
|
||||||
|
<field name="name">Telephone service (VAT 27)</field>
|
||||||
|
<field name="categ_id" ref="product.product_category_5"/>
|
||||||
|
<field name="standard_price">250.0</field>
|
||||||
|
<field name="list_price">130.0</field>
|
||||||
|
<field name="detailed_type">service</field>
|
||||||
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||||
|
<field name="default_code">TELEFONIA</field>
|
||||||
|
<field name="taxes_id" search="[('type_tax_use', '=', 'sale'), ('tax_group_id', '=', 'VAT 27%')]"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT 27%')]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product.product_product_2" model="product.product">
|
||||||
|
<field name="standard_price">45.5</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- VAT 10,5% -->
|
||||||
|
|
||||||
|
<record id="product.product_product_25" model="product.product">
|
||||||
|
<!-- agregamos percecipn aplicada y sufrida tambien -->
|
||||||
|
<field name="taxes_id" search="[('type_tax_use', '=', 'sale'), ('tax_group_id', 'in', ['VAT 10.5%', 'Percepción IIBB', 'Percepción Ganancias', 'Percepción IVA'])]"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', 'in', ['VAT 10.5%', 'Percepción IIBB', 'Percepción Ganancias', 'Percepción IVA'])]"/>
|
||||||
|
<field name="standard_price">3280.0</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product.product_product_27" model="product.product">
|
||||||
|
<field name="taxes_id" search="[('type_tax_use', '=', 'sale'), ('tax_group_id', '=', 'VAT 10.5%')]"/>
|
||||||
|
<field name="supplier_taxes_id" search="[('type_tax_use', '=', 'purchase'), ('tax_group_id', '=', 'VAT 10.5%')]"/>
|
||||||
|
<field name="standard_price">4500.0</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
154
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/res_partner_demo.xml
Normal file
154
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/res_partner_demo.xml
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<!-- ADHOC - Supplier/Customer -->
|
||||||
|
|
||||||
|
<record id="res_partner_adhoc" model="res.partner">
|
||||||
|
<field name="name">ADHOC SA</field>
|
||||||
|
<field eval="[(6, 0, [ref('base.res_partner_category_8'), ref('base.res_partner_category_11')])]" name="category_id"/>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="city">Rosario</field>
|
||||||
|
<field name="zip">2000</field>
|
||||||
|
<field name="state_id" ref="base.state_ar_s"/>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="street">Ovidio Lagos 41 bis</field>
|
||||||
|
<field name="email">contacto@adhoc.ar</field>
|
||||||
|
<field name="phone">(+54) (341) 208 0203</field>
|
||||||
|
<field name="website">https://www.adhoc.ar/</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30714295698</field>
|
||||||
|
<field name="image_1920" type="base64" file="l10n_ar/demo/adhoc_logo.png"/>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_IVARI"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Gritti Agrimensura -->
|
||||||
|
<record id="res_partner_gritti_agrimensura" model="res.partner">
|
||||||
|
<field name="name">Gritti Agrimensura</field>
|
||||||
|
<field eval="[(6, 0, [ref('base.res_partner_category_8'), ref('base.res_partner_category_11')])]" name="category_id"/>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="city">Rosario</field>
|
||||||
|
<field name="zip">2000</field>
|
||||||
|
<field name="state_id" ref="base.state_ar_s"/>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="street">Calle Falsa 123</field>
|
||||||
|
<field name="email">info@example.com.ar</field>
|
||||||
|
<field name="phone">(+54) (341) 111 2222</field>
|
||||||
|
<field name="website">http://www.grittiagrimensura.com</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>27320732811</field>
|
||||||
|
<field name="image_1920" type="base64" file="l10n_ar/demo/gritti_logo.png"/>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_RM"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Servicios Globales SRL -->
|
||||||
|
<record id="res_partner_cmr" model="res.partner">
|
||||||
|
<field name="name">Servicios Globales SRL</field>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="city">Rosario</field>
|
||||||
|
<field name="zip">2000</field>
|
||||||
|
<field name="state_id" ref="base.state_ar_s"/>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="street">Bv. Oroño 789</field>
|
||||||
|
<field name="email">contacto@serviciosglobales.com.ar</field>
|
||||||
|
<field name="phone">(+54) (341) 333 4444</field>
|
||||||
|
<field name="website">http://www.serviciosglobales.com.ar/</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30684679372</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_IVAE"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Odoo -->
|
||||||
|
<record id="res_partner_odoo" model="res.partner">
|
||||||
|
<field name="name">Odoo Inc</field>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="city">San Francisco</field>
|
||||||
|
<field name="zip">CA 94107</field>
|
||||||
|
<field name="country_id" ref="base.us"/>
|
||||||
|
<field name="street">51 Federal Street, Suite 401</field>
|
||||||
|
<field name="email">info@odoo.com</field>
|
||||||
|
<field name="phone">(+00) (11) 222 3333</field>
|
||||||
|
<field name="website">https://www.odoo.com/</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_latam_base.it_fid"/>
|
||||||
|
<field name='vat'>111222333444</field>
|
||||||
|
<field name="image_1920" type="base64" file="l10n_ar/demo/odoo_logo.jpg"/>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_EXT"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Telecom -->
|
||||||
|
<record id="res_partner_telecom" model="res.partner">
|
||||||
|
<field name="name">TELECOM</field>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30639453738</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_IVARI"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Odoo -->
|
||||||
|
<record id="res_partner_expresso" model="res.partner">
|
||||||
|
<field name="name">Barcelona Food</field>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="city">Barcelona</field>
|
||||||
|
<field name="zip">11002</field>
|
||||||
|
<field name="country_id" ref="base.es"/>
|
||||||
|
<field name="street">La gran avenida 123</field>
|
||||||
|
<field name="email">info@barcelonafoods.com</field>
|
||||||
|
<field name="phone">(+00) (11) 222 3333</field>
|
||||||
|
<field name="website">http://www.barcelonafoods.com/</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_latam_base.it_fid"/>
|
||||||
|
<field name='vat'>2222333344445555</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_EXT"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Montana Sur -->
|
||||||
|
<record id="res_partner_cerrocastor" model="res.partner">
|
||||||
|
<field name="name">Montaña Sur</field>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="city">San Martín de los Andes</field>
|
||||||
|
<field name="state_id" ref="base.state_ar_v"/>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="street">Av. de los Arrayanes 500</field>
|
||||||
|
<field name="email">contacto@montanasur.com.ar</field>
|
||||||
|
<field name="phone">(+54) (297) 4876 123</field>
|
||||||
|
<field name="website">http://www.montanasur.com.ar/</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>27333333339</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_IVA_LIB"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Foreign Partner -->
|
||||||
|
<record id="res_partner_foreign" model="res.partner">
|
||||||
|
<field name="name">Foreign Inc</field>
|
||||||
|
<field eval="[(6, 0, [ref('base.res_partner_category_14'), ref('base.res_partner_category_12')])]" name="category_id"/>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="street">7841 Red Road</field>
|
||||||
|
<field name="city">San Francisco</field>
|
||||||
|
<field name="state_id" ref='base.state_us_5'/>
|
||||||
|
<field name="zip">95380</field>
|
||||||
|
<field name="country_id" ref="base.us"/>
|
||||||
|
<field name="email">foreing@example.com</field>
|
||||||
|
<field name="phone">(123)-456-7890</field>
|
||||||
|
<field name="website">http://www.foreign-inc.com</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30222222229</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_EXT"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Trenes argentinos -->
|
||||||
|
<record id="res_partner_mipyme" model="res.partner">
|
||||||
|
<field name="name">Trenes Argentinos (Mipyme)</field>
|
||||||
|
<field eval="[(6, 0, [ref('base.res_partner_category_14'), ref('base.res_partner_category_12')])]" name="category_id"/>
|
||||||
|
<field name="is_company">1</field>
|
||||||
|
<field name="street">Santa Cruz 4636</field>
|
||||||
|
<field name="city">Buenos Aires</field>
|
||||||
|
<field name="state_id" ref='base.state_ar_c'/>
|
||||||
|
<field name="zip">1524</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="email">mipyme@example.com</field>
|
||||||
|
<field name="phone">(123)-754-3876</field>
|
||||||
|
<field name="website">http://www.mypime-inc.com</field>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30714101443</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="l10n_ar.res_IVARI"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
61
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/respinsc_demo.xml
Normal file
61
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/demo/respinsc_demo.xml
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="partner_ri" model="res.partner">
|
||||||
|
<field name='name'>(AR) Responsable Inscripto</field>
|
||||||
|
<field name='l10n_ar_afip_responsibility_type_id' ref="res_IVARI"/>
|
||||||
|
<field name='l10n_latam_identification_type_id' ref="l10n_ar.it_cuit"/>
|
||||||
|
<field name='vat'>30111111118</field>
|
||||||
|
<field name="street">Calle Falsa 123</field>
|
||||||
|
<field name="city">Rosario</field>
|
||||||
|
<field name="country_id" ref="base.ar"/>
|
||||||
|
<field name="state_id" ref="base.state_ar_s"/>
|
||||||
|
<field name="zip">2000</field>
|
||||||
|
<field name="phone">+1 555 123 8069</field>
|
||||||
|
<field name="email">info@example.com</field>
|
||||||
|
<field name="website">www.example.com</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="company_ri" model="res.company">
|
||||||
|
<field name='parent_id' ref='base.main_company'/>
|
||||||
|
<field name='currency_id' ref='base.ARS'/>
|
||||||
|
<field name='partner_id' ref='partner_ri'/>
|
||||||
|
<field name='name'>(AR) Responsable Inscripto</field>
|
||||||
|
<field name="l10n_ar_afip_start_date" eval="time.strftime('%Y-01-01')"/>
|
||||||
|
<field name='l10n_ar_gross_income_type'>local</field>
|
||||||
|
<field name='l10n_ar_gross_income_number'>901-21885123</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<function model="res.users" name="write">
|
||||||
|
<value eval="[ref('base.user_root'), ref('base.user_admin'), ref('base.user_demo')]"/>
|
||||||
|
<value eval="{'company_ids': [(4, ref('l10n_ar.company_ri'))]}"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
<function model="account.chart.template" name="try_loading">
|
||||||
|
<value eval="[ref('l10n_ar.l10nar_ri_chart_template')]"/>
|
||||||
|
<value model="res.company" eval="obj().env.ref('l10n_ar.company_ri')"/>
|
||||||
|
</function>
|
||||||
|
|
||||||
|
<record id="bank_account_ri" model="res.partner.bank">
|
||||||
|
<field name="acc_number">7982898111100056688080</field>
|
||||||
|
<field name="partner_id" ref="l10n_ar.partner_ri"/>
|
||||||
|
<field name="company_id" ref="l10n_ar.company_ri"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
|
||||||
|
<record id="sale_expo_journal_ri" model="account.journal">
|
||||||
|
<field name='name'>Expo Sales Journal</field>
|
||||||
|
<field name='company_id' ref="l10n_ar.company_ri"/>
|
||||||
|
<field name='type'>sale</field>
|
||||||
|
<field name='code'>S0002</field>
|
||||||
|
<field name='l10n_latam_use_documents' eval="True"/>
|
||||||
|
<field name='l10n_ar_afip_pos_number'>2</field>
|
||||||
|
<field name='l10n_ar_afip_pos_partner_id' ref="l10n_ar.partner_ri"/>
|
||||||
|
<field name='l10n_ar_afip_pos_system'>FEERCEL</field>
|
||||||
|
<field name='refund_sequence' eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
5535
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/i18n/es.po
Normal file
5535
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/i18n/es.po
Normal file
File diff suppressed because it is too large
Load diff
5396
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/i18n/l10n_ar.pot
Normal file
5396
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/i18n/l10n_ar.pot
Normal file
File diff suppressed because it is too large
Load diff
18
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/__init__.py
Normal file
18
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/__init__.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import l10n_latam_identification_type
|
||||||
|
from . import l10n_ar_afip_responsibility_type
|
||||||
|
from . import account_journal
|
||||||
|
from . import account_tax_group
|
||||||
|
from . import account_fiscal_position
|
||||||
|
from . import account_fiscal_position_template
|
||||||
|
from . import l10n_latam_document_type
|
||||||
|
from . import res_partner
|
||||||
|
from . import res_country
|
||||||
|
from . import res_currency
|
||||||
|
from . import res_company
|
||||||
|
from . import res_partner_bank
|
||||||
|
from . import uom_uom
|
||||||
|
from . import account_chart_template
|
||||||
|
from . import account_move
|
||||||
|
from . import account_move_line
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import models, api, _
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
from odoo.http import request
|
||||||
|
|
||||||
|
|
||||||
|
class AccountChartTemplate(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.chart.template'
|
||||||
|
|
||||||
|
def _get_fp_vals(self, company, position):
|
||||||
|
res = super()._get_fp_vals(company, position)
|
||||||
|
if company.country_id.code == "AR":
|
||||||
|
res['l10n_ar_afip_responsibility_type_ids'] = [
|
||||||
|
(6, False, position.l10n_ar_afip_responsibility_type_ids.ids)]
|
||||||
|
return res
|
||||||
|
|
||||||
|
def _prepare_all_journals(self, acc_template_ref, company, journals_dict=None):
|
||||||
|
""" In case of an Argentinean CoA, we modify the default values of the sales journal to be a preprinted journal"""
|
||||||
|
res = super()._prepare_all_journals(acc_template_ref, company, journals_dict=journals_dict)
|
||||||
|
if company.country_id.code == "AR":
|
||||||
|
for vals in res:
|
||||||
|
if vals['type'] == 'sale':
|
||||||
|
vals.update({
|
||||||
|
"name": _("Ventas Preimpreso"),
|
||||||
|
"code": "0001",
|
||||||
|
"l10n_ar_afip_pos_number": 1,
|
||||||
|
"l10n_ar_afip_pos_partner_id": company.partner_id.id,
|
||||||
|
"l10n_ar_afip_pos_system": 'II_IM',
|
||||||
|
"refund_sequence": False
|
||||||
|
})
|
||||||
|
return res
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_ar_responsibility_match(self, chart_template_id):
|
||||||
|
""" return responsibility type that match with the given chart_template_id
|
||||||
|
"""
|
||||||
|
match = {
|
||||||
|
self.env.ref('l10n_ar.l10nar_base_chart_template').id: self.env.ref('l10n_ar.res_RM'),
|
||||||
|
self.env.ref('l10n_ar.l10nar_ex_chart_template').id: self.env.ref('l10n_ar.res_IVAE'),
|
||||||
|
self.env.ref('l10n_ar.l10nar_ri_chart_template').id: self.env.ref('l10n_ar.res_IVARI'),
|
||||||
|
}
|
||||||
|
return match.get(chart_template_id)
|
||||||
|
|
||||||
|
def _load(self, company):
|
||||||
|
""" Set companies AFIP Responsibility and Country if AR CoA is installed, also set tax calculation rounding
|
||||||
|
method required in order to properly validate match AFIP invoices.
|
||||||
|
|
||||||
|
Also, raise a warning if the user is trying to install a CoA that does not match with the defined AFIP
|
||||||
|
Responsibility defined in the company
|
||||||
|
"""
|
||||||
|
self.ensure_one()
|
||||||
|
coa_responsibility = self._get_ar_responsibility_match(self.id)
|
||||||
|
if coa_responsibility:
|
||||||
|
company_responsibility = company.l10n_ar_afip_responsibility_type_id
|
||||||
|
company.write({
|
||||||
|
'l10n_ar_afip_responsibility_type_id': coa_responsibility.id,
|
||||||
|
'country_id': self.env['res.country'].search([('code', '=', 'AR')]).id,
|
||||||
|
'tax_calculation_rounding_method': 'round_globally',
|
||||||
|
})
|
||||||
|
# set CUIT identification type (which is the argentinean vat) in the created company partner instead of
|
||||||
|
# the default VAT type.
|
||||||
|
company.partner_id.l10n_latam_identification_type_id = self.env.ref('l10n_ar.it_cuit')
|
||||||
|
|
||||||
|
res = super()._load(company)
|
||||||
|
|
||||||
|
# If Responsable Monotributista remove the default purchase tax
|
||||||
|
if self == self.env.ref('l10n_ar.l10nar_base_chart_template') or \
|
||||||
|
self == self.env.ref('l10n_ar.l10nar_ex_chart_template'):
|
||||||
|
company.account_purchase_tax_id = self.env['account.tax']
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models, api, _
|
||||||
|
|
||||||
|
|
||||||
|
class AccountFiscalPosition(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.fiscal.position'
|
||||||
|
|
||||||
|
l10n_ar_afip_responsibility_type_ids = fields.Many2many(
|
||||||
|
'l10n_ar.afip.responsibility.type', 'l10n_ar_afip_reponsibility_type_fiscal_pos_rel',
|
||||||
|
string='AFIP Responsibility Types', help='List of AFIP responsibilities where this fiscal position '
|
||||||
|
'should be auto-detected')
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_fiscal_position(self, partner, delivery=None):
|
||||||
|
if self.env.company.country_id.code != "AR":
|
||||||
|
return super()._get_fiscal_position(partner, delivery=delivery)
|
||||||
|
return super(AccountFiscalPosition, self.with_context(l10n_ar_afip_responsibility_type_id=partner.l10n_ar_afip_responsibility_type_id.id))._get_fiscal_position(partner, delivery=delivery)
|
||||||
|
|
||||||
|
def _prepare_fpos_base_domain(self, vat_required):
|
||||||
|
domain = super()._prepare_fpos_base_domain(vat_required)
|
||||||
|
if 'l10n_ar_afip_responsibility_type_id' in self._context:
|
||||||
|
domain += ['|',
|
||||||
|
('l10n_ar_afip_responsibility_type_ids', '=', False),
|
||||||
|
('l10n_ar_afip_responsibility_type_ids', '=', self._context.get('l10n_ar_afip_responsibility_type_id'))]
|
||||||
|
return domain
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountFiscalPositionTemplate(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.fiscal.position.template'
|
||||||
|
|
||||||
|
l10n_ar_afip_responsibility_type_ids = fields.Many2many(
|
||||||
|
'l10n_ar.afip.responsibility.type', 'l10n_ar_afip_reponsibility_type_fiscal_pos_temp_rel',
|
||||||
|
string='AFIP Responsibility Types')
|
||||||
141
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/account_journal.py
Normal file
141
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/account_journal.py
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import fields, models, api, _
|
||||||
|
from odoo.exceptions import ValidationError, RedirectWarning
|
||||||
|
|
||||||
|
|
||||||
|
class AccountJournal(models.Model):
|
||||||
|
|
||||||
|
_inherit = "account.journal"
|
||||||
|
|
||||||
|
l10n_ar_afip_pos_system = fields.Selection(
|
||||||
|
selection='_get_l10n_ar_afip_pos_types_selection', string='AFIP POS System')
|
||||||
|
l10n_ar_afip_pos_number = fields.Integer(
|
||||||
|
'AFIP POS Number', help='This is the point of sale number assigned by AFIP in order to generate invoices')
|
||||||
|
company_partner = fields.Many2one('res.partner', related='company_id.partner_id')
|
||||||
|
l10n_ar_afip_pos_partner_id = fields.Many2one(
|
||||||
|
'res.partner', 'AFIP POS Address', help='This is the address used for invoice reports of this POS',
|
||||||
|
domain="['|', ('id', '=', company_partner), '&', ('id', 'child_of', company_partner), ('type', '!=', 'contact')]"
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_l10n_ar_afip_pos_types_selection(self):
|
||||||
|
""" Return the list of values of the selection field. """
|
||||||
|
return [
|
||||||
|
('II_IM', _('Pre-printed Invoice')),
|
||||||
|
('RLI_RLM', _('Online Invoice')),
|
||||||
|
('BFERCEL', _('Electronic Fiscal Bond - Online Invoice')),
|
||||||
|
('FEERCELP', _('Export Voucher - Billing Plus')),
|
||||||
|
('FEERCEL', _('Export Voucher - Online Invoice')),
|
||||||
|
('CPERCEL', _('Product Coding - Online Voucher')),
|
||||||
|
]
|
||||||
|
|
||||||
|
def _get_journal_letter(self, counterpart_partner=False):
|
||||||
|
""" Regarding the AFIP responsibility of the company and the type of journal (sale/purchase), get the allowed
|
||||||
|
letters. Optionally, receive the counterpart partner (customer/supplier) and get the allowed letters to work
|
||||||
|
with him. This method is used to populate document types on journals and also to filter document types on
|
||||||
|
specific invoices to/from customer/supplier
|
||||||
|
"""
|
||||||
|
self.ensure_one()
|
||||||
|
letters_data = {
|
||||||
|
'issued': {
|
||||||
|
'1': ['A', 'B', 'E', 'M'],
|
||||||
|
'4': ['C'],
|
||||||
|
'5': [],
|
||||||
|
'6': ['C', 'E'],
|
||||||
|
'7': ['B', 'C', 'I'],
|
||||||
|
'8': ['B', 'C', 'I'],
|
||||||
|
'9': ['I'],
|
||||||
|
'10': [],
|
||||||
|
'13': ['C', 'E'],
|
||||||
|
'15': [],
|
||||||
|
'16': [],
|
||||||
|
},
|
||||||
|
'received': {
|
||||||
|
'1': ['A', 'B', 'C', 'E', 'M', 'I'],
|
||||||
|
'4': ['B', 'C', 'I'],
|
||||||
|
'5': ['B', 'C', 'I'],
|
||||||
|
'6': ['A', 'B', 'C', 'M', 'I'],
|
||||||
|
'7': ['B', 'C', 'I'],
|
||||||
|
'8': ['E', 'B', 'C'],
|
||||||
|
'9': ['E', 'B', 'C'],
|
||||||
|
'10': ['E', 'B', 'C'],
|
||||||
|
'13': ['A', 'B', 'C', 'M', 'I'],
|
||||||
|
'15': ['B', 'C', 'I'],
|
||||||
|
'16': ['A', 'C', 'M'],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if not self.company_id.l10n_ar_afip_responsibility_type_id:
|
||||||
|
action = self.env.ref('base.action_res_company_form')
|
||||||
|
msg = _('Can not create chart of account until you configure your company AFIP Responsibility and VAT.')
|
||||||
|
raise RedirectWarning(msg, action.id, _('Go to Companies'))
|
||||||
|
|
||||||
|
letters = letters_data['issued' if self.type == 'sale' else 'received'][
|
||||||
|
self.company_id.l10n_ar_afip_responsibility_type_id.code]
|
||||||
|
if counterpart_partner:
|
||||||
|
counterpart_letters = letters_data['issued' if self.type == 'purchase' else 'received'].get(
|
||||||
|
counterpart_partner.l10n_ar_afip_responsibility_type_id.code, [])
|
||||||
|
letters = list(set(letters) & set(counterpart_letters))
|
||||||
|
return letters
|
||||||
|
|
||||||
|
def _get_journal_codes(self):
|
||||||
|
self.ensure_one()
|
||||||
|
if self.type != 'sale':
|
||||||
|
return []
|
||||||
|
return self._get_codes_per_journal_type(self.l10n_ar_afip_pos_system)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_codes_per_journal_type(self, afip_pos_system):
|
||||||
|
usual_codes = ['1', '2', '3', '6', '7', '8', '11', '12', '13']
|
||||||
|
mipyme_codes = ['201', '202', '203', '206', '207', '208', '211', '212', '213']
|
||||||
|
invoice_m_code = ['51', '52', '53']
|
||||||
|
receipt_m_code = ['54']
|
||||||
|
receipt_codes = ['4', '9', '15']
|
||||||
|
expo_codes = ['19', '20', '21']
|
||||||
|
zeta_codes = ['80', '83']
|
||||||
|
if afip_pos_system == 'II_IM':
|
||||||
|
# pre-printed invoice
|
||||||
|
return usual_codes + receipt_codes + expo_codes + invoice_m_code + receipt_m_code
|
||||||
|
elif afip_pos_system == 'RAW_MAW':
|
||||||
|
# electronic/online invoice
|
||||||
|
return usual_codes + receipt_codes + invoice_m_code + receipt_m_code + mipyme_codes
|
||||||
|
elif afip_pos_system == 'RLI_RLM':
|
||||||
|
return usual_codes + receipt_codes + invoice_m_code + receipt_m_code + mipyme_codes + zeta_codes
|
||||||
|
elif afip_pos_system in ['CPERCEL', 'CPEWS']:
|
||||||
|
# invoice with detail
|
||||||
|
return usual_codes + invoice_m_code
|
||||||
|
elif afip_pos_system in ['BFERCEL', 'BFEWS']:
|
||||||
|
# Bonds invoice
|
||||||
|
return usual_codes + mipyme_codes
|
||||||
|
elif afip_pos_system in ['FEERCEL', 'FEEWS', 'FEERCELP']:
|
||||||
|
return expo_codes
|
||||||
|
|
||||||
|
@api.constrains('type', 'l10n_ar_afip_pos_system', 'l10n_ar_afip_pos_number', 'l10n_latam_use_documents')
|
||||||
|
def _check_afip_configurations(self):
|
||||||
|
""" Do not let the user update the journal if it already contains confirmed invoices """
|
||||||
|
journals = self.filtered(lambda x: x.company_id.account_fiscal_country_id.code == "AR" and x.type in ['sale', 'purchase'])
|
||||||
|
invoices = self.env['account.move'].search([('journal_id', 'in', journals.ids), ('posted_before', '=', True)], limit=1)
|
||||||
|
if invoices:
|
||||||
|
raise ValidationError(
|
||||||
|
_("You can not change the journal's configuration if it already has validated invoices") + ' ('
|
||||||
|
+ ', '.join(invoices.mapped('journal_id').mapped('name')) + ')')
|
||||||
|
|
||||||
|
@api.constrains('l10n_ar_afip_pos_number')
|
||||||
|
def _check_afip_pos_number(self):
|
||||||
|
to_review = self.filtered(
|
||||||
|
lambda x: x.type == 'sale' and x.l10n_latam_use_documents and
|
||||||
|
x.company_id.account_fiscal_country_id.code == "AR")
|
||||||
|
|
||||||
|
if to_review.filtered(lambda x: x.l10n_ar_afip_pos_number == 0):
|
||||||
|
raise ValidationError(_('Please define an AFIP POS number'))
|
||||||
|
|
||||||
|
if to_review.filtered(lambda x: x.l10n_ar_afip_pos_number > 99999):
|
||||||
|
raise ValidationError(_('Please define a valid AFIP POS number (5 digits max)'))
|
||||||
|
|
||||||
|
@api.onchange('l10n_ar_afip_pos_number', 'type')
|
||||||
|
def _onchange_set_short_name(self):
|
||||||
|
""" Will define the AFIP POS Address field domain taking into account the company configured in the journal
|
||||||
|
The short code of the journal only admit 5 characters, so depending on the size of the pos_number (also max 5)
|
||||||
|
we add or not a prefix to identify sales journal.
|
||||||
|
"""
|
||||||
|
if self.type == 'sale' and self.l10n_ar_afip_pos_number:
|
||||||
|
self.code = "%05i" % self.l10n_ar_afip_pos_number
|
||||||
411
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/account_move.py
Normal file
411
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/account_move.py
Normal file
|
|
@ -0,0 +1,411 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import models, fields, api, _
|
||||||
|
from odoo.exceptions import UserError, RedirectWarning, ValidationError
|
||||||
|
from odoo.tools.misc import formatLang
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
|
import logging
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class AccountMove(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.move'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _l10n_ar_get_document_number_parts(self, document_number, document_type_code):
|
||||||
|
# import shipments
|
||||||
|
if document_type_code in ['66', '67']:
|
||||||
|
pos = invoice_number = '0'
|
||||||
|
else:
|
||||||
|
pos, invoice_number = document_number.split('-')
|
||||||
|
return {'invoice_number': int(invoice_number), 'point_of_sale': int(pos)}
|
||||||
|
|
||||||
|
l10n_ar_afip_responsibility_type_id = fields.Many2one(
|
||||||
|
'l10n_ar.afip.responsibility.type', string='AFIP Responsibility Type', help='Defined by AFIP to'
|
||||||
|
' identify the type of responsibilities that a person or a legal entity could have and that impacts in the'
|
||||||
|
' type of operations and requirements they need.')
|
||||||
|
|
||||||
|
l10n_ar_currency_rate = fields.Float(copy=False, digits=(16, 6), readonly=True, string="Currency Rate")
|
||||||
|
|
||||||
|
# Mostly used on reports
|
||||||
|
l10n_ar_afip_concept = fields.Selection(
|
||||||
|
compute='_compute_l10n_ar_afip_concept', selection='_get_afip_invoice_concepts', string="AFIP Concept",
|
||||||
|
help="A concept is suggested regarding the type of the products on the invoice but it is allowed to force a"
|
||||||
|
" different type if required.")
|
||||||
|
l10n_ar_afip_service_start = fields.Date(string='AFIP Service Start Date', readonly=True, states={'draft': [('readonly', False)]})
|
||||||
|
l10n_ar_afip_service_end = fields.Date(string='AFIP Service End Date', readonly=True, states={'draft': [('readonly', False)]})
|
||||||
|
|
||||||
|
@api.constrains('move_type', 'journal_id')
|
||||||
|
def _check_moves_use_documents(self):
|
||||||
|
""" Do not let to create not invoices entries in journals that use documents """
|
||||||
|
not_invoices = self.filtered(lambda x: x.company_id.account_fiscal_country_id.code == "AR" and x.journal_id.type in ['sale', 'purchase'] and x.l10n_latam_use_documents and not x.is_invoice())
|
||||||
|
if not_invoices:
|
||||||
|
raise ValidationError(_("The selected Journal can't be used in this transaction, please select one that doesn't use documents as these are just for Invoices."))
|
||||||
|
|
||||||
|
@api.constrains('move_type', 'l10n_latam_document_type_id')
|
||||||
|
def _check_invoice_type_document_type(self):
|
||||||
|
""" LATAM module define that we are not able to use debit_note or invoice document types in an invoice refunds,
|
||||||
|
However for Argentinian Document Type's 99 (internal type = invoice) we are able to used in a refund invoices.
|
||||||
|
|
||||||
|
In this method we exclude the argentinian documents that can be used as invoice and refund from the generic
|
||||||
|
constraint """
|
||||||
|
docs_used_for_inv_and_ref = self.filtered(
|
||||||
|
lambda x: x.country_code == 'AR' and
|
||||||
|
x.l10n_latam_document_type_id.code in self._get_l10n_ar_codes_used_for_inv_and_ref() and
|
||||||
|
x.move_type in ['out_refund', 'in_refund'])
|
||||||
|
|
||||||
|
super(AccountMove, self - docs_used_for_inv_and_ref)._check_invoice_type_document_type()
|
||||||
|
|
||||||
|
def _get_afip_invoice_concepts(self):
|
||||||
|
""" Return the list of values of the selection field. """
|
||||||
|
return [('1', 'Products / Definitive export of goods'), ('2', 'Services'), ('3', 'Products and Services'),
|
||||||
|
('4', '4-Other (export)')]
|
||||||
|
|
||||||
|
@api.depends('invoice_line_ids', 'invoice_line_ids.product_id', 'invoice_line_ids.product_id.type', 'journal_id')
|
||||||
|
def _compute_l10n_ar_afip_concept(self):
|
||||||
|
recs_afip = self.filtered(lambda x: x.company_id.account_fiscal_country_id.code == "AR" and x.l10n_latam_use_documents)
|
||||||
|
for rec in recs_afip:
|
||||||
|
rec.l10n_ar_afip_concept = rec._get_concept()
|
||||||
|
remaining = self - recs_afip
|
||||||
|
remaining.l10n_ar_afip_concept = ''
|
||||||
|
|
||||||
|
def _get_concept(self):
|
||||||
|
""" Method to get the concept of the invoice considering the type of the products on the invoice """
|
||||||
|
self.ensure_one()
|
||||||
|
invoice_lines = self.invoice_line_ids.filtered(lambda x: x.display_type not in ('line_note', 'line_section'))
|
||||||
|
product_types = set([x.product_id.type for x in invoice_lines if x.product_id])
|
||||||
|
consumable = set(['consu', 'product'])
|
||||||
|
service = set(['service'])
|
||||||
|
# on expo invoice you can mix services and products
|
||||||
|
expo_invoice = self.l10n_latam_document_type_id.code in ['19', '20', '21']
|
||||||
|
|
||||||
|
# WSFEX 1668 - If Expo invoice and we have a "IVA Liberado – Ley Nº 19.640" (Zona Franca) partner
|
||||||
|
# then AFIP concept to use should be type "Others (4)"
|
||||||
|
is_zona_franca = self.partner_id.l10n_ar_afip_responsibility_type_id == self.env.ref("l10n_ar.res_IVA_LIB")
|
||||||
|
# Default value "product"
|
||||||
|
afip_concept = '1'
|
||||||
|
if expo_invoice and is_zona_franca:
|
||||||
|
afip_concept = '4'
|
||||||
|
elif product_types == service:
|
||||||
|
afip_concept = '2'
|
||||||
|
elif product_types - consumable and product_types - service and not expo_invoice:
|
||||||
|
afip_concept = '3'
|
||||||
|
return afip_concept
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_l10n_ar_codes_used_for_inv_and_ref(self):
|
||||||
|
""" List of document types that can be used as an invoice and refund. This list can be increased once needed
|
||||||
|
and demonstrated. As far as we've checked document types of wsfev1 don't allow negative amounts so, for example
|
||||||
|
document 61 could not be used as refunds. """
|
||||||
|
return ['99', '186', '188', '189', '60']
|
||||||
|
|
||||||
|
def _get_l10n_latam_documents_domain(self):
|
||||||
|
self.ensure_one()
|
||||||
|
domain = super()._get_l10n_latam_documents_domain()
|
||||||
|
if self.journal_id.company_id.account_fiscal_country_id.code == "AR":
|
||||||
|
letters = self.journal_id._get_journal_letter(counterpart_partner=self.partner_id.commercial_partner_id)
|
||||||
|
domain += ['|', ('l10n_ar_letter', '=', False), ('l10n_ar_letter', 'in', letters)]
|
||||||
|
codes = self.journal_id._get_journal_codes()
|
||||||
|
if codes:
|
||||||
|
domain.append(('code', 'in', codes))
|
||||||
|
if self.move_type == 'in_refund':
|
||||||
|
domain = ['|', ('code', 'in', self._get_l10n_ar_codes_used_for_inv_and_ref())] + domain
|
||||||
|
return domain
|
||||||
|
|
||||||
|
def _check_argentinean_invoice_taxes(self):
|
||||||
|
|
||||||
|
# check vat on companies thats has it (Responsable inscripto)
|
||||||
|
for inv in self.filtered(lambda x: x.company_id.l10n_ar_company_requires_vat):
|
||||||
|
purchase_aliquots = 'not_zero'
|
||||||
|
# we require a single vat on each invoice line except from some purchase documents
|
||||||
|
if inv.move_type in ['in_invoice', 'in_refund'] and inv.l10n_latam_document_type_id.purchase_aliquots == 'zero':
|
||||||
|
purchase_aliquots = 'zero'
|
||||||
|
for line in inv.mapped('invoice_line_ids').filtered(lambda x: x.display_type not in ('line_section', 'line_note')):
|
||||||
|
vat_taxes = line.tax_ids.filtered(lambda x: x.tax_group_id.l10n_ar_vat_afip_code)
|
||||||
|
if len(vat_taxes) != 1:
|
||||||
|
raise UserError(_('There should be a single tax from the "VAT" tax group per line, add it to "%s". If you already have it, please check the tax configuration, in advanced options, in the corresponding field "Tax Group".') % line.name)
|
||||||
|
|
||||||
|
elif purchase_aliquots == 'zero' and vat_taxes.tax_group_id.l10n_ar_vat_afip_code != '0':
|
||||||
|
raise UserError(_('On invoice id "%s" you must use VAT Not Applicable on every line.') % inv.id)
|
||||||
|
elif purchase_aliquots == 'not_zero' and vat_taxes.tax_group_id.l10n_ar_vat_afip_code == '0':
|
||||||
|
raise UserError(_('On invoice id "%s" you must use VAT taxes different than VAT Not Applicable.') % inv.id)
|
||||||
|
|
||||||
|
def _set_afip_service_dates(self):
|
||||||
|
for rec in self.filtered(lambda m: m.invoice_date and m.l10n_ar_afip_concept in ['2', '3', '4']):
|
||||||
|
if not rec.l10n_ar_afip_service_start:
|
||||||
|
rec.l10n_ar_afip_service_start = rec.invoice_date + relativedelta(day=1)
|
||||||
|
if not rec.l10n_ar_afip_service_end:
|
||||||
|
rec.l10n_ar_afip_service_end = rec.invoice_date + relativedelta(day=1, days=-1, months=+1)
|
||||||
|
|
||||||
|
def _set_afip_responsibility(self):
|
||||||
|
""" We save the information about the receptor responsability at the time we validate the invoice, this is
|
||||||
|
necessary because the user can change the responsability after that any time """
|
||||||
|
for rec in self:
|
||||||
|
rec.l10n_ar_afip_responsibility_type_id = rec.commercial_partner_id.l10n_ar_afip_responsibility_type_id.id
|
||||||
|
|
||||||
|
def _set_afip_rate(self):
|
||||||
|
""" We set the l10n_ar_currency_rate value with the accounting date. This should be done
|
||||||
|
after invoice has been posted in order to have the proper accounting date"""
|
||||||
|
for rec in self:
|
||||||
|
if rec.company_id.currency_id == rec.currency_id:
|
||||||
|
rec.l10n_ar_currency_rate = 1.0
|
||||||
|
elif not rec.l10n_ar_currency_rate:
|
||||||
|
rec.l10n_ar_currency_rate = self.env['res.currency']._get_conversion_rate(
|
||||||
|
from_currency=rec.currency_id,
|
||||||
|
to_currency=rec.company_id.currency_id,
|
||||||
|
company=rec.company_id,
|
||||||
|
date=rec.invoice_date,
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.onchange('partner_id')
|
||||||
|
def _onchange_afip_responsibility(self):
|
||||||
|
if self.company_id.account_fiscal_country_id.code == 'AR' and self.l10n_latam_use_documents and self.partner_id \
|
||||||
|
and not self.partner_id.l10n_ar_afip_responsibility_type_id:
|
||||||
|
return {'warning': {
|
||||||
|
'title': _('Missing Partner Configuration'),
|
||||||
|
'message': _('Please configure the AFIP Responsibility for "%s" in order to continue') % (
|
||||||
|
self.partner_id.name)}}
|
||||||
|
|
||||||
|
@api.onchange('partner_id')
|
||||||
|
def _onchange_partner_journal(self):
|
||||||
|
""" This method is used when the invoice is created from the sale or subscription """
|
||||||
|
expo_journals = ['FEERCEL', 'FEEWS', 'FEERCELP']
|
||||||
|
for rec in self.filtered(lambda x: x.company_id.account_fiscal_country_id.code == "AR" and x.journal_id.type == 'sale'
|
||||||
|
and x.l10n_latam_use_documents and x.partner_id.l10n_ar_afip_responsibility_type_id):
|
||||||
|
res_code = rec.partner_id.l10n_ar_afip_responsibility_type_id.code
|
||||||
|
domain = [('company_id', '=', rec.company_id.id), ('l10n_latam_use_documents', '=', True), ('type', '=', 'sale')]
|
||||||
|
journal = self.env['account.journal']
|
||||||
|
msg = False
|
||||||
|
if res_code in ['9', '10'] and rec.journal_id.l10n_ar_afip_pos_system not in expo_journals:
|
||||||
|
# if partner is foregin and journal is not of expo, we try to change to expo journal
|
||||||
|
journal = journal.search(domain + [('l10n_ar_afip_pos_system', 'in', expo_journals)], limit=1)
|
||||||
|
msg = _('You are trying to create an invoice for foreign partner but you don\'t have an exportation journal')
|
||||||
|
elif res_code not in ['9', '10'] and rec.journal_id.l10n_ar_afip_pos_system in expo_journals:
|
||||||
|
# if partner is NOT foregin and journal is for expo, we try to change to local journal
|
||||||
|
journal = journal.search(domain + [('l10n_ar_afip_pos_system', 'not in', expo_journals)], limit=1)
|
||||||
|
msg = _('You are trying to create an invoice for domestic partner but you don\'t have a domestic market journal')
|
||||||
|
if journal:
|
||||||
|
rec.journal_id = journal.id
|
||||||
|
elif msg:
|
||||||
|
# Throw an error to user in order to proper configure the journal for the type of operation
|
||||||
|
action = self.env.ref('account.action_account_journal_form')
|
||||||
|
raise RedirectWarning(msg, action.id, _('Go to Journals'))
|
||||||
|
|
||||||
|
def _post(self, soft=True):
|
||||||
|
ar_invoices = self.filtered(lambda x: x.company_id.account_fiscal_country_id.code == "AR" and x.l10n_latam_use_documents)
|
||||||
|
# We make validations here and not with a constraint because we want validation before sending electronic
|
||||||
|
# data on l10n_ar_edi
|
||||||
|
ar_invoices._check_argentinean_invoice_taxes()
|
||||||
|
posted = super()._post(soft=soft)
|
||||||
|
|
||||||
|
posted_ar_invoices = posted & ar_invoices
|
||||||
|
posted_ar_invoices._set_afip_responsibility()
|
||||||
|
posted_ar_invoices._set_afip_rate()
|
||||||
|
posted_ar_invoices._set_afip_service_dates()
|
||||||
|
return posted
|
||||||
|
|
||||||
|
def _reverse_moves(self, default_values_list=None, cancel=False):
|
||||||
|
if not default_values_list:
|
||||||
|
default_values_list = [{} for move in self]
|
||||||
|
for move, default_values in zip(self, default_values_list):
|
||||||
|
default_values.update({
|
||||||
|
'l10n_ar_afip_service_start': move.l10n_ar_afip_service_start,
|
||||||
|
'l10n_ar_afip_service_end': move.l10n_ar_afip_service_end,
|
||||||
|
})
|
||||||
|
return super()._reverse_moves(default_values_list=default_values_list, cancel=cancel)
|
||||||
|
|
||||||
|
@api.onchange('l10n_latam_document_type_id', 'l10n_latam_document_number', 'partner_id')
|
||||||
|
def _inverse_l10n_latam_document_number(self):
|
||||||
|
super()._inverse_l10n_latam_document_number()
|
||||||
|
|
||||||
|
to_review = self.filtered(lambda x: (
|
||||||
|
x.journal_id.type == 'sale'
|
||||||
|
and x.l10n_latam_document_type_id
|
||||||
|
and x.l10n_latam_document_number
|
||||||
|
and (x.l10n_latam_manual_document_number or not x.highest_name)
|
||||||
|
and x.l10n_latam_document_type_id.country_id.code == 'AR'
|
||||||
|
))
|
||||||
|
for rec in to_review:
|
||||||
|
number = rec.l10n_latam_document_type_id._format_document_number(rec.l10n_latam_document_number)
|
||||||
|
current_pos = int(number.split("-")[0])
|
||||||
|
if current_pos != rec.journal_id.l10n_ar_afip_pos_number:
|
||||||
|
invoices = self.search([('journal_id', '=', rec.journal_id.id), ('posted_before', '=', True)], limit=1)
|
||||||
|
# If there is no posted before invoices the user can change the POS number (x.l10n_latam_document_number)
|
||||||
|
if (not invoices):
|
||||||
|
rec.journal_id.l10n_ar_afip_pos_number = current_pos
|
||||||
|
rec.journal_id._onchange_set_short_name()
|
||||||
|
# If not, avoid that the user change the POS number
|
||||||
|
else:
|
||||||
|
raise UserError(_('The document number can not be changed for this journal, you can only modify'
|
||||||
|
' the POS number if there is not posted (or posted before) invoices'))
|
||||||
|
|
||||||
|
def _get_formatted_sequence(self, number=0):
|
||||||
|
return "%s %05d-%08d" % (self.l10n_latam_document_type_id.doc_code_prefix,
|
||||||
|
self.journal_id.l10n_ar_afip_pos_number, number)
|
||||||
|
|
||||||
|
def _get_starting_sequence(self):
|
||||||
|
""" If use documents then will create a new starting sequence using the document type code prefix and the
|
||||||
|
journal document number with a 8 padding number """
|
||||||
|
if self.journal_id.l10n_latam_use_documents and self.company_id.account_fiscal_country_id.code == "AR":
|
||||||
|
if self.l10n_latam_document_type_id:
|
||||||
|
return self._get_formatted_sequence()
|
||||||
|
return super()._get_starting_sequence()
|
||||||
|
|
||||||
|
def _get_last_sequence_domain(self, relaxed=False):
|
||||||
|
where_string, param = super(AccountMove, self)._get_last_sequence_domain(relaxed)
|
||||||
|
if self.company_id.account_fiscal_country_id.code == "AR" and self.l10n_latam_use_documents:
|
||||||
|
where_string += " AND l10n_latam_document_type_id = %(l10n_latam_document_type_id)s"
|
||||||
|
param['l10n_latam_document_type_id'] = self.l10n_latam_document_type_id.id or 0
|
||||||
|
return where_string, param
|
||||||
|
|
||||||
|
def _l10n_ar_get_amounts(self, company_currency=False):
|
||||||
|
""" Method used to prepare data to present amounts and taxes related amounts when creating an
|
||||||
|
electronic invoice for argentinean and the txt files for digital VAT books. Only take into account the argentinean taxes """
|
||||||
|
self.ensure_one()
|
||||||
|
amount_field = company_currency and 'balance' or 'amount_currency'
|
||||||
|
# if we use balance we need to correct sign (on price_subtotal is positive for refunds and invoices)
|
||||||
|
sign = -1 if self.is_inbound() else 1
|
||||||
|
|
||||||
|
# if we are on a document that works invoice and refund and it's a refund, we need to export it as negative
|
||||||
|
sign = -sign if self.move_type in ('out_refund', 'in_refund') and\
|
||||||
|
self.l10n_latam_document_type_id.code in self._get_l10n_ar_codes_used_for_inv_and_ref() else sign
|
||||||
|
|
||||||
|
tax_lines = self.line_ids.filtered('tax_line_id')
|
||||||
|
vat_taxes = tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_vat_afip_code)
|
||||||
|
|
||||||
|
vat_taxable = self.env['account.move.line']
|
||||||
|
for line in self.invoice_line_ids:
|
||||||
|
if any(tax.tax_group_id.l10n_ar_vat_afip_code and tax.tax_group_id.l10n_ar_vat_afip_code not in ['0', '1', '2'] for tax in line.tax_ids):
|
||||||
|
vat_taxable |= line
|
||||||
|
|
||||||
|
profits_tax_group = self.env.ref('l10n_ar.tax_group_percepcion_ganancias')
|
||||||
|
return {'vat_amount': sign * sum(vat_taxes.mapped(amount_field)),
|
||||||
|
# For invoices of letter C should not pass VAT
|
||||||
|
'vat_taxable_amount': sign * sum(vat_taxable.mapped(amount_field)) if self.l10n_latam_document_type_id.l10n_ar_letter != 'C' else self.amount_untaxed,
|
||||||
|
'vat_exempt_base_amount': sign * sum(self.invoice_line_ids.filtered(lambda x: x.tax_ids.filtered(lambda y: y.tax_group_id.l10n_ar_vat_afip_code == '2')).mapped(amount_field)),
|
||||||
|
'vat_untaxed_base_amount': sign * sum(self.invoice_line_ids.filtered(lambda x: x.tax_ids.filtered(lambda y: y.tax_group_id.l10n_ar_vat_afip_code == '1')).mapped(amount_field)),
|
||||||
|
# used on FE
|
||||||
|
'not_vat_taxes_amount': sign * sum((tax_lines - vat_taxes).mapped(amount_field)),
|
||||||
|
# used on BFE + TXT
|
||||||
|
'iibb_perc_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_tribute_afip_code == '07').mapped(amount_field)),
|
||||||
|
'mun_perc_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_tribute_afip_code == '08').mapped(amount_field)),
|
||||||
|
'intern_tax_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_tribute_afip_code == '04').mapped(amount_field)),
|
||||||
|
'other_taxes_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_tribute_afip_code == '99').mapped(amount_field)),
|
||||||
|
'profits_perc_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id == profits_tax_group).mapped(amount_field)),
|
||||||
|
'vat_perc_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_tribute_afip_code == '06').mapped(amount_field)),
|
||||||
|
'other_perc_amount': sign * sum(tax_lines.filtered(lambda r: r.tax_line_id.tax_group_id.l10n_ar_tribute_afip_code == '09' and r.tax_line_id.tax_group_id != profits_tax_group).mapped(amount_field)),
|
||||||
|
}
|
||||||
|
|
||||||
|
def _get_vat(self):
|
||||||
|
""" Applies on wsfe web service and in the VAT digital books """
|
||||||
|
# if we are on a document that works invoice and refund and it's a refund, we need to export it as negative
|
||||||
|
sign = -1 if self.move_type in ('out_refund', 'in_refund') and\
|
||||||
|
self.l10n_latam_document_type_id.code in self._get_l10n_ar_codes_used_for_inv_and_ref() else 1
|
||||||
|
|
||||||
|
res = []
|
||||||
|
vat_taxable = self.env['account.move.line']
|
||||||
|
# get all invoice lines that are vat taxable
|
||||||
|
for line in self.line_ids:
|
||||||
|
if any(tax.tax_group_id.l10n_ar_vat_afip_code and tax.tax_group_id.l10n_ar_vat_afip_code not in ['0', '1', '2'] for tax in line.tax_line_id) and line['amount_currency']:
|
||||||
|
vat_taxable |= line
|
||||||
|
for tax_group in vat_taxable.mapped('tax_group_id'):
|
||||||
|
base_imp = sum(self.invoice_line_ids.filtered(lambda x: x.tax_ids.filtered(lambda y: y.tax_group_id.l10n_ar_vat_afip_code == tax_group.l10n_ar_vat_afip_code)).mapped('price_subtotal'))
|
||||||
|
imp = abs(sum(vat_taxable.filtered(lambda x: x.tax_group_id.l10n_ar_vat_afip_code == tax_group.l10n_ar_vat_afip_code).mapped('amount_currency')))
|
||||||
|
res += [{'Id': tax_group.l10n_ar_vat_afip_code,
|
||||||
|
'BaseImp': sign * base_imp,
|
||||||
|
'Importe': sign * imp}]
|
||||||
|
|
||||||
|
# Report vat 0%
|
||||||
|
vat_base_0 = sum(self.invoice_line_ids.filtered(lambda x: x.tax_ids.filtered(lambda y: y.tax_group_id.l10n_ar_vat_afip_code == '3')).mapped('price_subtotal'))
|
||||||
|
if vat_base_0:
|
||||||
|
res += [{'Id': '3', 'BaseImp': vat_base_0, 'Importe': 0.0}]
|
||||||
|
|
||||||
|
return res if res else []
|
||||||
|
|
||||||
|
def _get_name_invoice_report(self):
|
||||||
|
self.ensure_one()
|
||||||
|
if self.l10n_latam_use_documents and self.company_id.account_fiscal_country_id.code == 'AR':
|
||||||
|
return 'l10n_ar.report_invoice_document'
|
||||||
|
return super()._get_name_invoice_report()
|
||||||
|
|
||||||
|
def _l10n_ar_get_invoice_totals_for_report(self):
|
||||||
|
"""If the invoice document type indicates that vat should not be detailed in the printed report (result of _l10n_ar_include_vat()) then we overwrite tax_totals field so that includes taxes in the total amount, otherwise it would be showing amount_untaxed in the amount_total"""
|
||||||
|
self.ensure_one()
|
||||||
|
include_vat = self._l10n_ar_include_vat()
|
||||||
|
base_lines = self.line_ids.filtered(lambda x: x.display_type == 'product')
|
||||||
|
tax_lines = self.line_ids.filtered(lambda x: x.display_type == 'tax')
|
||||||
|
|
||||||
|
involved_tax_group_ids = []
|
||||||
|
for subtotals in self.tax_totals['groups_by_subtotal'].values():
|
||||||
|
for subtotal in subtotals:
|
||||||
|
involved_tax_group_ids.append(subtotal['tax_group_id'])
|
||||||
|
involved_tax_groups = self.env['account.tax.group'].browse(involved_tax_group_ids)
|
||||||
|
nat_int_tax_groups = involved_tax_groups.filtered(lambda tax_group: tax_group.l10n_ar_tribute_afip_code in ('01', '04'))
|
||||||
|
vat_tax_groups = involved_tax_groups.filtered('l10n_ar_vat_afip_code')
|
||||||
|
both_tax_group_ids = nat_int_tax_groups.ids + vat_tax_groups.ids
|
||||||
|
|
||||||
|
# Base lines.
|
||||||
|
base_line_vals_list = [x._convert_to_tax_base_line_dict() for x in base_lines]
|
||||||
|
if include_vat:
|
||||||
|
for vals in base_line_vals_list:
|
||||||
|
vals['taxes'] = vals['taxes']\
|
||||||
|
.flatten_taxes_hierarchy()\
|
||||||
|
.filtered(lambda tax: tax.tax_group_id.id not in both_tax_group_ids)
|
||||||
|
|
||||||
|
# Tax lines.
|
||||||
|
tax_line_vals_list = [x._convert_to_tax_line_dict() for x in tax_lines]
|
||||||
|
if include_vat:
|
||||||
|
tax_line_vals_list = [
|
||||||
|
x
|
||||||
|
for x in tax_line_vals_list
|
||||||
|
if x['tax_repartition_line'].tax_id.tax_group_id.id not in both_tax_group_ids
|
||||||
|
]
|
||||||
|
|
||||||
|
tax_totals = self.env['account.tax']._prepare_tax_totals(
|
||||||
|
base_line_vals_list,
|
||||||
|
self.currency_id,
|
||||||
|
tax_lines=tax_line_vals_list,
|
||||||
|
)
|
||||||
|
|
||||||
|
temp = self.tax_totals
|
||||||
|
if include_vat:
|
||||||
|
tax_totals['amount_total'] = temp['amount_total']
|
||||||
|
tax_totals['formatted_amount_total'] = temp['formatted_amount_total']
|
||||||
|
|
||||||
|
# RG 5614/2024: Show ARCA VAT and Other National Internal Taxes
|
||||||
|
if self.l10n_latam_document_type_id.code in ['6', '7', '8']:
|
||||||
|
|
||||||
|
# Prepare the subtotals to show in the report
|
||||||
|
currency_symbol = self.currency_id.symbol
|
||||||
|
detail_info = {
|
||||||
|
'vat_taxes': {'name': _("VAT Content %s", currency_symbol), 'tax_amount': 0.0, 'group': 'vat'},
|
||||||
|
'other_taxes': {'name': _("Other National Ind. Taxes %s", currency_symbol), 'tax_amount': 0.0,
|
||||||
|
'group': 'other'},
|
||||||
|
}
|
||||||
|
|
||||||
|
for subtotals in temp['groups_by_subtotal'].values():
|
||||||
|
for subtotal in subtotals:
|
||||||
|
tax_group_id = subtotal['tax_group_id']
|
||||||
|
if tax_group_id in nat_int_tax_groups.ids:
|
||||||
|
key = 'other_taxes'
|
||||||
|
elif tax_group_id in vat_tax_groups.ids:
|
||||||
|
key = 'vat_taxes'
|
||||||
|
else:
|
||||||
|
continue # If not belongs to the needed groups we ignore them
|
||||||
|
|
||||||
|
detail_info[key]["tax_amount"] += subtotal['tax_group_amount']
|
||||||
|
|
||||||
|
if detail_info['other_taxes']["tax_amount"] == 0.0:
|
||||||
|
detail_info.pop('other_taxes')
|
||||||
|
|
||||||
|
# Format the amounts to show in the report
|
||||||
|
for _item, values in detail_info.items():
|
||||||
|
values["formatted_amount_tax"] = formatLang(self.env, values["tax_amount"])
|
||||||
|
|
||||||
|
tax_totals["detail_ar_tax"] = list(detail_info.values())
|
||||||
|
|
||||||
|
return tax_totals
|
||||||
|
|
||||||
|
def _l10n_ar_include_vat(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return self.l10n_latam_document_type_id.l10n_ar_letter in ['B', 'C', 'X', 'R']
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountMoveLine(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.move.line'
|
||||||
|
|
||||||
|
def _l10n_ar_prices_and_taxes(self):
|
||||||
|
self.ensure_one()
|
||||||
|
invoice = self.move_id
|
||||||
|
included_taxes = self.tax_ids.filtered('tax_group_id.l10n_ar_vat_afip_code') if self.move_id._l10n_ar_include_vat() else False
|
||||||
|
price_digits = 10**self.env['decimal.precision'].precision_get('Product Price')
|
||||||
|
if not included_taxes:
|
||||||
|
price_unit = self.tax_ids.compute_all(
|
||||||
|
self.price_unit * price_digits, invoice.currency_id, 1.0, self.product_id, invoice.partner_id)
|
||||||
|
price_unit = price_unit['total_excluded'] / price_digits
|
||||||
|
price_subtotal = self.price_subtotal
|
||||||
|
else:
|
||||||
|
price_unit = included_taxes.compute_all(
|
||||||
|
self.price_unit * price_digits, invoice.currency_id, 1.0, self.product_id, invoice.partner_id)['total_included'] / price_digits
|
||||||
|
price = self.price_unit * (1 - (self.discount or 0.0) / 100.0)
|
||||||
|
price_subtotal = included_taxes.compute_all(
|
||||||
|
price, invoice.currency_id, self.quantity, self.product_id, invoice.partner_id)['total_included']
|
||||||
|
price_net = price_unit * (1 - (self.discount or 0.0) / 100.0)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'price_unit': price_unit,
|
||||||
|
'price_subtotal': price_subtotal,
|
||||||
|
'price_net': price_net,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models, api
|
||||||
|
|
||||||
|
|
||||||
|
class AccountTaxGroup(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.tax.group'
|
||||||
|
|
||||||
|
# values from http://www.afip.gob.ar/fe/documentos/otros_Tributos.xlsx
|
||||||
|
l10n_ar_tribute_afip_code = fields.Selection([
|
||||||
|
('01', '01 - National Taxes'),
|
||||||
|
('02', '02 - Provincial Taxes'),
|
||||||
|
('03', '03 - Municipal Taxes'),
|
||||||
|
('04', '04 - Internal Taxes'),
|
||||||
|
('06', '06 - VAT perception'),
|
||||||
|
('07', '07 - IIBB perception'),
|
||||||
|
('08', '08 - Municipal Taxes Perceptions'),
|
||||||
|
('09', '09 - Other Perceptions'),
|
||||||
|
('99', '99 - Others'),
|
||||||
|
], string='Tribute AFIP Code', index=True, readonly=True)
|
||||||
|
# values from http://www.afip.gob.ar/fe/documentos/OperacionCondicionIVA.xls
|
||||||
|
l10n_ar_vat_afip_code = fields.Selection([
|
||||||
|
('0', 'Not Applicable'),
|
||||||
|
('1', 'Untaxed'),
|
||||||
|
('2', 'Exempt'),
|
||||||
|
('3', '0%'),
|
||||||
|
('4', '10.5%'),
|
||||||
|
('5', '21%'),
|
||||||
|
('6', '27%'),
|
||||||
|
('8', '5%'),
|
||||||
|
('9', '2,5%'),
|
||||||
|
], string='VAT AFIP Code', index=True, readonly=True)
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
|
||||||
|
class L10nArAfipResponsibilityType(models.Model):
|
||||||
|
|
||||||
|
_name = 'l10n_ar.afip.responsibility.type'
|
||||||
|
_description = 'AFIP Responsibility Type'
|
||||||
|
_order = 'sequence'
|
||||||
|
|
||||||
|
name = fields.Char(required=True, index='trigram')
|
||||||
|
sequence = fields.Integer()
|
||||||
|
code = fields.Char(required=True, index=True)
|
||||||
|
active = fields.Boolean(default=True)
|
||||||
|
|
||||||
|
_sql_constraints = [('name', 'unique(name)', 'Name must be unique!'),
|
||||||
|
('code', 'unique(code)', 'Code must be unique!')]
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
from odoo import models, api, fields, _
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
|
class L10nLatamDocumentType(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'l10n_latam.document.type'
|
||||||
|
|
||||||
|
l10n_ar_letter = fields.Selection(
|
||||||
|
selection='_get_l10n_ar_letters',
|
||||||
|
string='Letters',
|
||||||
|
help='Letters defined by the AFIP that can be used to identify the'
|
||||||
|
' documents presented to the government and that depends on the'
|
||||||
|
' operation type, the responsibility of both the issuer and the'
|
||||||
|
' receptor of the document')
|
||||||
|
purchase_aliquots = fields.Selection(
|
||||||
|
[('not_zero', 'Not Zero'), ('zero', 'Zero')], help='Raise an error if a vendor bill is miss encoded. "Not Zero"'
|
||||||
|
' means the VAT taxes are required for the invoices related to this document type, and those with "Zero" means'
|
||||||
|
' that only "VAT Not Applicable" tax is allowed.')
|
||||||
|
|
||||||
|
def _get_l10n_ar_letters(self):
|
||||||
|
""" Return the list of values of the selection field. """
|
||||||
|
return [
|
||||||
|
('A', 'A'),
|
||||||
|
('B', 'B'),
|
||||||
|
('C', 'C'),
|
||||||
|
('E', 'E'),
|
||||||
|
('M', 'M'),
|
||||||
|
('T', 'T'),
|
||||||
|
('R', 'R'),
|
||||||
|
('X', 'X'),
|
||||||
|
('I', 'I'), # used for mapping of imports
|
||||||
|
]
|
||||||
|
|
||||||
|
def _format_document_number(self, document_number):
|
||||||
|
""" Make validation of Import Dispatch Number
|
||||||
|
* making validations on the document_number. If it is wrong it should raise an exception
|
||||||
|
* format the document_number against a pattern and return it
|
||||||
|
"""
|
||||||
|
self.ensure_one()
|
||||||
|
if self.country_id.code != "AR":
|
||||||
|
return super()._format_document_number(document_number)
|
||||||
|
|
||||||
|
if not document_number:
|
||||||
|
return False
|
||||||
|
|
||||||
|
msg = "'%s' " + _("is not a valid value for") + " '%s'.<br/>%s"
|
||||||
|
|
||||||
|
if not self.code:
|
||||||
|
return document_number
|
||||||
|
|
||||||
|
# Import Dispatch Number Validator
|
||||||
|
if self.code in ['66', '67']:
|
||||||
|
if len(document_number) != 16:
|
||||||
|
raise UserError(msg % (document_number, self.name, _('The number of import Dispatch must be 16 characters')))
|
||||||
|
return document_number
|
||||||
|
|
||||||
|
# Invoice Number Validator (For Eg: 123-123)
|
||||||
|
failed = False
|
||||||
|
args = document_number.split('-')
|
||||||
|
if len(args) != 2:
|
||||||
|
failed = True
|
||||||
|
else:
|
||||||
|
pos, number = args
|
||||||
|
if len(pos) > 5 or not pos.isdigit():
|
||||||
|
failed = True
|
||||||
|
elif len(number) > 8 or not number.isdigit():
|
||||||
|
failed = True
|
||||||
|
document_number = '{:>05s}-{:>08s}'.format(pos, number)
|
||||||
|
if failed:
|
||||||
|
raise UserError(msg % (document_number, self.name, _(
|
||||||
|
'The document number must be entered with a dash (-) and a maximum of 5 characters for the first part'
|
||||||
|
'and 8 for the second. The following are examples of valid numbers:\n* 1-1\n* 0001-00000001'
|
||||||
|
'\n* 00001-00000001')))
|
||||||
|
|
||||||
|
return document_number
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
|
||||||
|
class L10nLatamIdentificationType(models.Model):
|
||||||
|
|
||||||
|
_inherit = "l10n_latam.identification.type"
|
||||||
|
|
||||||
|
l10n_ar_afip_code = fields.Char("AFIP Code")
|
||||||
44
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/res_company.py
Normal file
44
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/res_company.py
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models, api, _
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
class ResCompany(models.Model):
|
||||||
|
|
||||||
|
_inherit = "res.company"
|
||||||
|
|
||||||
|
l10n_ar_gross_income_number = fields.Char(
|
||||||
|
related='partner_id.l10n_ar_gross_income_number', string='Gross Income Number', readonly=False,
|
||||||
|
help="This field is required in order to print the invoice report properly")
|
||||||
|
l10n_ar_gross_income_type = fields.Selection(
|
||||||
|
related='partner_id.l10n_ar_gross_income_type', string='Gross Income', readonly=False,
|
||||||
|
help="This field is required in order to print the invoice report properly")
|
||||||
|
l10n_ar_afip_responsibility_type_id = fields.Many2one(
|
||||||
|
domain="[('code', 'in', [1, 4, 6])]", related='partner_id.l10n_ar_afip_responsibility_type_id', readonly=False)
|
||||||
|
l10n_ar_company_requires_vat = fields.Boolean(compute='_compute_l10n_ar_company_requires_vat', string='Company Requires Vat?')
|
||||||
|
l10n_ar_afip_start_date = fields.Date('Activities Start')
|
||||||
|
|
||||||
|
@api.onchange('country_id')
|
||||||
|
def onchange_country(self):
|
||||||
|
""" Argentinean companies use round_globally as tax_calculation_rounding_method """
|
||||||
|
for rec in self.filtered(lambda x: x.country_id.code == "AR"):
|
||||||
|
rec.tax_calculation_rounding_method = 'round_globally'
|
||||||
|
|
||||||
|
@api.depends('l10n_ar_afip_responsibility_type_id')
|
||||||
|
def _compute_l10n_ar_company_requires_vat(self):
|
||||||
|
recs_requires_vat = self.filtered(lambda x: x.l10n_ar_afip_responsibility_type_id.code == '1')
|
||||||
|
recs_requires_vat.l10n_ar_company_requires_vat = True
|
||||||
|
remaining = self - recs_requires_vat
|
||||||
|
remaining.l10n_ar_company_requires_vat = False
|
||||||
|
|
||||||
|
def _localization_use_documents(self):
|
||||||
|
""" Argentinean localization use documents """
|
||||||
|
self.ensure_one()
|
||||||
|
return self.account_fiscal_country_id.code == "AR" or super()._localization_use_documents()
|
||||||
|
|
||||||
|
@api.constrains('l10n_ar_afip_responsibility_type_id')
|
||||||
|
def _check_accounting_info(self):
|
||||||
|
""" Do not let to change the AFIP Responsibility of the company if there is already installed a chart of
|
||||||
|
account and if there has accounting entries """
|
||||||
|
if self.env['account.chart.template'].existing_accounting(self):
|
||||||
|
raise ValidationError(_(
|
||||||
|
'Could not change the AFIP Responsibility of this company because there are already accounting entries.'))
|
||||||
19
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/res_country.py
Normal file
19
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/res_country.py
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResCountry(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'res.country'
|
||||||
|
|
||||||
|
l10n_ar_afip_code = fields.Char('AFIP Code', size=3, help='This code will be used on electronic invoice')
|
||||||
|
l10n_ar_natural_vat = fields.Char(
|
||||||
|
'Natural Person VAT', size=11, help="Generic VAT number defined by AFIP in order to recognize partners from"
|
||||||
|
" this country that are natural persons")
|
||||||
|
l10n_ar_legal_entity_vat = fields.Char(
|
||||||
|
'Legal Entity VAT', size=11, help="Generic VAT number defined by AFIP in order to recognize partners from this"
|
||||||
|
" country that are legal entity")
|
||||||
|
l10n_ar_other_vat = fields.Char(
|
||||||
|
'Other VAT', size=11, help="Generic VAT number defined by AFIP in order to recognize partners from this"
|
||||||
|
" country that are not natural persons or legal entities")
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResCurrency(models.Model):
|
||||||
|
|
||||||
|
_inherit = "res.currency"
|
||||||
|
|
||||||
|
l10n_ar_afip_code = fields.Char('AFIP Code', size=4, help='This code will be used on electronic invoice')
|
||||||
128
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/res_partner.py
Normal file
128
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/res_partner.py
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models, api, _
|
||||||
|
from odoo.exceptions import UserError, ValidationError
|
||||||
|
import stdnum.ar
|
||||||
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
l10n_ar_vat = fields.Char(
|
||||||
|
compute='_compute_l10n_ar_vat', string="VAT", help='Computed field that returns VAT or nothing if this one'
|
||||||
|
' is not set for the partner')
|
||||||
|
l10n_ar_formatted_vat = fields.Char(
|
||||||
|
compute='_compute_l10n_ar_formatted_vat', string="Formatted VAT", help='Computed field that will convert the'
|
||||||
|
' given VAT number to the format {person_category:2}-{number:10}-{validation_number:1}')
|
||||||
|
|
||||||
|
l10n_ar_gross_income_number = fields.Char('Gross Income Number')
|
||||||
|
l10n_ar_gross_income_type = fields.Selection(
|
||||||
|
[('multilateral', 'Multilateral'), ('local', 'Local'), ('exempt', 'Exempt')],
|
||||||
|
'Gross Income Type', help='Type of gross income: exempt, local, multilateral')
|
||||||
|
l10n_ar_afip_responsibility_type_id = fields.Many2one(
|
||||||
|
'l10n_ar.afip.responsibility.type', string='AFIP Responsibility Type', index='btree_not_null', help='Defined by AFIP to'
|
||||||
|
' identify the type of responsibilities that a person or a legal entity could have and that impacts in the'
|
||||||
|
' type of operations and requirements they need.')
|
||||||
|
l10n_ar_special_purchase_document_type_ids = fields.Many2many(
|
||||||
|
'l10n_latam.document.type', 'res_partner_document_type_rel', 'partner_id', 'document_type_id',
|
||||||
|
string='Other Purchase Documents', help='Set here if this partner can issue other documents further than'
|
||||||
|
' invoices, credit notes and debit notes')
|
||||||
|
|
||||||
|
@api.depends('l10n_ar_vat')
|
||||||
|
def _compute_l10n_ar_formatted_vat(self):
|
||||||
|
""" This will add some dash to the CUIT number (VAT AR) in order to show in his natural format:
|
||||||
|
{person_category}-{number}-{validation_number} """
|
||||||
|
recs_ar_vat = self.filtered('l10n_ar_vat')
|
||||||
|
for rec in recs_ar_vat:
|
||||||
|
try:
|
||||||
|
rec.l10n_ar_formatted_vat = stdnum.ar.cuit.format(rec.l10n_ar_vat)
|
||||||
|
except Exception as error:
|
||||||
|
rec.l10n_ar_formatted_vat = rec.l10n_ar_vat
|
||||||
|
_logger.runbot("Argentinean VAT was not formatted: %s", repr(error))
|
||||||
|
remaining = self - recs_ar_vat
|
||||||
|
remaining.l10n_ar_formatted_vat = False
|
||||||
|
|
||||||
|
@api.depends('vat', 'l10n_latam_identification_type_id')
|
||||||
|
def _compute_l10n_ar_vat(self):
|
||||||
|
""" We add this computed field that returns cuit (VAT AR) or nothing if this one is not set for the partner.
|
||||||
|
This Validation can be also done by calling ensure_vat() method that returns the cuit (VAT AR) or error if this
|
||||||
|
one is not found """
|
||||||
|
recs_ar_vat = self.filtered(lambda x: x.l10n_latam_identification_type_id.l10n_ar_afip_code == '80' and x.vat)
|
||||||
|
for rec in recs_ar_vat:
|
||||||
|
rec.l10n_ar_vat = stdnum.ar.cuit.compact(rec.vat)
|
||||||
|
remaining = self - recs_ar_vat
|
||||||
|
remaining.l10n_ar_vat = False
|
||||||
|
|
||||||
|
@api.constrains('vat', 'l10n_latam_identification_type_id')
|
||||||
|
def check_vat(self):
|
||||||
|
""" Since we validate more documents than the vat for Argentinean partners (CUIT - VAT AR, CUIL, DNI) we
|
||||||
|
extend this method in order to process it. """
|
||||||
|
# NOTE by the moment we include the CUIT (VAT AR) validation also here because we extend the messages
|
||||||
|
# errors to be more friendly to the user. In a future when Odoo improve the base_vat message errors
|
||||||
|
# we can change this method and use the base_vat.check_vat_ar method.s
|
||||||
|
l10n_ar_partners = self.filtered(lambda p: p.l10n_latam_identification_type_id.l10n_ar_afip_code or p.country_code == 'AR')
|
||||||
|
l10n_ar_partners.l10n_ar_identification_validation()
|
||||||
|
return super(ResPartner, self - l10n_ar_partners).check_vat()
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _commercial_fields(self):
|
||||||
|
return super()._commercial_fields() + ['l10n_ar_afip_responsibility_type_id']
|
||||||
|
|
||||||
|
def ensure_vat(self):
|
||||||
|
""" This method is a helper that returns the VAT number is this one is defined if not raise an UserError.
|
||||||
|
|
||||||
|
VAT is not mandatory field but for some Argentinean operations the VAT is required, for eg validate an
|
||||||
|
electronic invoice, build a report, etc.
|
||||||
|
|
||||||
|
This method can be used to validate is the VAT is proper defined in the partner """
|
||||||
|
self.ensure_one()
|
||||||
|
if not self.l10n_ar_vat:
|
||||||
|
raise UserError(_('No VAT configured for partner [%i] %s') % (self.id, self.name))
|
||||||
|
return self.l10n_ar_vat
|
||||||
|
|
||||||
|
def _get_validation_module(self):
|
||||||
|
self.ensure_one()
|
||||||
|
if self.l10n_latam_identification_type_id.l10n_ar_afip_code in ['80', '86']:
|
||||||
|
return stdnum.ar.cuit
|
||||||
|
elif self.l10n_latam_identification_type_id.l10n_ar_afip_code == '96':
|
||||||
|
return stdnum.ar.dni
|
||||||
|
|
||||||
|
def l10n_ar_identification_validation(self):
|
||||||
|
for rec in self.filtered('vat'):
|
||||||
|
try:
|
||||||
|
module = rec._get_validation_module()
|
||||||
|
except Exception as error:
|
||||||
|
module = False
|
||||||
|
_logger.runbot("Argentinean document was not validated: %s", repr(error))
|
||||||
|
|
||||||
|
if not module:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
module.validate(rec.vat)
|
||||||
|
except module.InvalidChecksum:
|
||||||
|
raise ValidationError(_('The validation digit is not valid for "%s"',
|
||||||
|
rec.l10n_latam_identification_type_id.name))
|
||||||
|
except module.InvalidLength:
|
||||||
|
raise ValidationError(_('Invalid length for "%s"', rec.l10n_latam_identification_type_id.name))
|
||||||
|
except module.InvalidFormat:
|
||||||
|
raise ValidationError(_('Only numbers allowed for "%s"', rec.l10n_latam_identification_type_id.name))
|
||||||
|
except Exception as error:
|
||||||
|
raise ValidationError(repr(error))
|
||||||
|
|
||||||
|
def _get_id_number_sanitize(self):
|
||||||
|
""" Sanitize the identification number. Return the digits/integer value of the identification number
|
||||||
|
If not vat number defined return 0 """
|
||||||
|
self.ensure_one()
|
||||||
|
if not self.vat:
|
||||||
|
return 0
|
||||||
|
if self.l10n_latam_identification_type_id.l10n_ar_afip_code in ['80', '86']:
|
||||||
|
# Compact is the number clean up, remove all separators leave only digits
|
||||||
|
res = int(stdnum.ar.cuit.compact(self.vat))
|
||||||
|
else:
|
||||||
|
id_number = re.sub('[^0-9]', '', self.vat)
|
||||||
|
res = int(id_number)
|
||||||
|
return res
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import models, api, _
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
import logging
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from stdnum.ar.cbu import validate as validate_cbu
|
||||||
|
except ImportError:
|
||||||
|
import stdnum
|
||||||
|
_logger.warning("stdnum.ar.cbu is avalaible from stdnum >= 1.6. The one installed is %s" % stdnum.__version__)
|
||||||
|
|
||||||
|
def validate_cbu(number):
|
||||||
|
def _check_digit(number):
|
||||||
|
"""Calculate the check digit."""
|
||||||
|
weights = (3, 1, 7, 9)
|
||||||
|
check = sum(int(n) * weights[i % 4] for i, n in enumerate(reversed(number)))
|
||||||
|
return str((10 - check) % 10)
|
||||||
|
number = stdnum.util.clean(number, ' -').strip()
|
||||||
|
if len(number) != 22:
|
||||||
|
raise ValidationError(_('Invalid Length'))
|
||||||
|
if not number.isdigit():
|
||||||
|
raise ValidationError(_('Invalid Format'))
|
||||||
|
if _check_digit(number[:7]) != number[7]:
|
||||||
|
raise ValidationError(_('Invalid Checksum'))
|
||||||
|
if _check_digit(number[8:-1]) != number[-1]:
|
||||||
|
raise ValidationError(_('Invalid Checksum'))
|
||||||
|
return number
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartnerBank(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'res.partner.bank'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_supported_account_types(self):
|
||||||
|
""" Add new account type named cbu used in Argentina """
|
||||||
|
res = super()._get_supported_account_types()
|
||||||
|
res.append(('cbu', _('CBU')))
|
||||||
|
return res
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def retrieve_acc_type(self, acc_number):
|
||||||
|
try:
|
||||||
|
validate_cbu(acc_number)
|
||||||
|
except Exception:
|
||||||
|
return super().retrieve_acc_type(acc_number)
|
||||||
|
return 'cbu'
|
||||||
9
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/uom_uom.py
Normal file
9
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/models/uom_uom.py
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class Uom(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'uom.uom'
|
||||||
|
|
||||||
|
l10n_ar_afip_code = fields.Char('AFIP Code', help='This code will be used on electronic invoice')
|
||||||
3
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/report/__init__.py
Normal file
3
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/report/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import invoice_report
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
|
||||||
|
class AccountInvoiceReport(models.Model):
|
||||||
|
|
||||||
|
_inherit = 'account.invoice.report'
|
||||||
|
|
||||||
|
l10n_ar_state_id = fields.Many2one('res.country.state', 'Delivery Province', readonly=True)
|
||||||
|
date = fields.Date(readonly=True, string="Accounting Date")
|
||||||
|
|
||||||
|
_depends = {
|
||||||
|
'account.move': ['partner_shipping_id', 'date'],
|
||||||
|
'res.partner': ['state_id'],
|
||||||
|
}
|
||||||
|
|
||||||
|
def _select(self):
|
||||||
|
return super()._select() + ", contact_partner.state_id as l10n_ar_state_id, move.date"
|
||||||
|
|
||||||
|
def _from(self):
|
||||||
|
return super()._from() + " LEFT JOIN res_partner contact_partner ON contact_partner.id = COALESCE(move.partner_shipping_id, move.partner_id)"
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_account_invoice_report_search_inherit">
|
||||||
|
<field name="name">account.invoice.report.search</field>
|
||||||
|
<field name="model">account.invoice.report</field>
|
||||||
|
<field name="inherit_id" ref="account.view_account_invoice_report_search" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search>
|
||||||
|
<field name="l10n_ar_state_id"/>
|
||||||
|
<filter name="with_document" string="With Document" domain="[('l10n_latam_document_type_id', '!=', False)]"/>
|
||||||
|
<filter name="filter_accounting_date_this_year" invisible="1" string="Accounting Date: This Year" domain="[('date', '<', (context_today() + relativedelta(years=1, month=1, day=1)).strftime('%Y-%m-%d')), ('date', '>=', (context_today() + relativedelta(month=1, day=1)).strftime('%Y-%m-%d'))]"/>
|
||||||
|
</search>
|
||||||
|
<filter name="user" position="after">
|
||||||
|
<filter string="State" name="groupby_l10n_ar_state_id" context="{'group_by': 'l10n_ar_state_id'}"/>
|
||||||
|
<filter string="Account" name="groupby_account_id" context="{'group_by':'account_id'}" groups="account.group_account_readonly" />
|
||||||
|
</filter>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_iibb_sales_by_state_and_account_pivot" model="ir.actions.act_window">
|
||||||
|
<field name="name">IIBB - Sales by jurisdiction</field>
|
||||||
|
<field name="res_model">account.invoice.report</field>
|
||||||
|
<field name="view_mode">pivot</field>
|
||||||
|
<field name="context">{'search_default_current': 1, 'search_default_customer': 1, 'search_default_with_document': 1, 'search_default_company': 1, 'search_default_groupby_l10n_ar_state_id': 2, 'search_default_groupby_account_id': 3, 'search_default_filter_accounting_date_this_year': 1}</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_iibb_sales_by_state_and_account"
|
||||||
|
action="action_iibb_sales_by_state_and_account_pivot"
|
||||||
|
parent="l10n_ar.account_reports_ar_statements_menu"
|
||||||
|
sequence="30"/>
|
||||||
|
|
||||||
|
<record id="action_iibb_purchases_by_state_and_account_pivot" model="ir.actions.act_window">
|
||||||
|
<field name="name">IIBB - Purchases by jurisdiction</field>
|
||||||
|
<field name="res_model">account.invoice.report</field>
|
||||||
|
<field name="view_mode">pivot</field>
|
||||||
|
<field name="context">{'search_default_current': 1, 'search_default_supplier': 1, 'search_default_with_document': 1, 'search_default_company': 1, 'search_default_groupby_l10n_ar_state_id': 2, 'search_default_groupby_account_id': 3, 'search_default_filter_accounting_date_this_year': 1}</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_iibb_purchases_by_state_and_account"
|
||||||
|
action="action_iibb_purchases_by_state_and_account_pivot"
|
||||||
|
parent="l10n_ar.account_reports_ar_statements_menu"
|
||||||
|
sequence="40"/>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
access_l10n_ar_afip_responsibility_type_all,l10n_ar.afip.responsibility.type.all,model_l10n_ar_afip_responsibility_type,,1,0,0,0
|
||||||
|
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,25 @@
|
||||||
|
odoo.define('l10n_ar.account_tour', function(require) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
let tour = require('web_tour.tour');
|
||||||
|
let account_tour = tour.tours.account_tour;
|
||||||
|
// Remove the step suggesting to change the name as it is done another way (document number)
|
||||||
|
account_tour.steps = _.filter(account_tour.steps, step => step.trigger != "input[name=name]");
|
||||||
|
|
||||||
|
// Configure the AFIP Responsibility
|
||||||
|
let partner_step_idx = _.findIndex(account_tour.steps, step => step.trigger == 'div[name=partner_id] input');
|
||||||
|
account_tour.steps.splice(partner_step_idx + 2, 0, {
|
||||||
|
// FIXME WOWL: this selector needs to work in both legacy and non-legacy views
|
||||||
|
trigger: "div[name=l10n_ar_afip_responsibility_type_id] input",
|
||||||
|
extra_trigger: "[name=move_type] [raw-value=out_invoice], [name=move_type][raw-value=out_invoice]",
|
||||||
|
position: "bottom",
|
||||||
|
content: "Set the AFIP Responsability",
|
||||||
|
run: "text IVA",
|
||||||
|
})
|
||||||
|
account_tour.steps.splice(partner_step_idx + 3, 0, {
|
||||||
|
trigger: ".ui-menu-item > a:contains('IVA').ui-state-active",
|
||||||
|
auto: true,
|
||||||
|
in_modal: false,
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
3
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/tests/__init__.py
Normal file
3
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/tests/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from . import common
|
||||||
|
from . import test_manual
|
||||||
778
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/tests/common.py
Normal file
778
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/tests/common.py
Normal file
|
|
@ -0,0 +1,778 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from odoo import fields
|
||||||
|
from odoo.tests.common import Form, tagged
|
||||||
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||||
|
import random
|
||||||
|
import logging
|
||||||
|
import time
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class TestAr(AccountTestInvoicingCommon):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls, chart_template_ref='l10n_ar.l10nar_ri_chart_template'):
|
||||||
|
super(TestAr, cls).setUpClass(chart_template_ref=chart_template_ref)
|
||||||
|
|
||||||
|
# ==== Company ====
|
||||||
|
cls.company_data['company'].write({
|
||||||
|
'parent_id': cls.env.ref('base.main_company').id,
|
||||||
|
'currency_id': cls.env.ref('base.ARS').id,
|
||||||
|
'name': '(AR) Responsable Inscripto (Unit Tests)',
|
||||||
|
"l10n_ar_afip_start_date": time.strftime('%Y-01-01'),
|
||||||
|
'l10n_ar_gross_income_type': 'local',
|
||||||
|
'l10n_ar_gross_income_number': '901-21885123',
|
||||||
|
})
|
||||||
|
cls.company_ri = cls.company_data['company']
|
||||||
|
|
||||||
|
cls.company_ri.partner_id.write({
|
||||||
|
'name': '(AR) Responsable Inscripto (Unit Tests)',
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_IVARI").id,
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': '30111111118',
|
||||||
|
"street": 'Calle Falsa 123',
|
||||||
|
"city": 'Rosario',
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"state_id": cls.env.ref("base.state_ar_s").id,
|
||||||
|
"zip": '2000',
|
||||||
|
"phone": '+1 555 123 8069',
|
||||||
|
"email": 'info@example.com',
|
||||||
|
"website": 'www.example.com',
|
||||||
|
})
|
||||||
|
cls.partner_ri = cls.company_ri.partner_id
|
||||||
|
|
||||||
|
# ==== Company MONO ====
|
||||||
|
cls.company_mono = cls.setup_company_data('(AR) Monotributista (Unit Tests)', chart_template=cls.env.ref('l10n_ar.l10nar_base_chart_template'))['company']
|
||||||
|
cls.company_mono.write({
|
||||||
|
'parent_id': cls.env.ref('base.main_company').id,
|
||||||
|
'currency_id': cls.env.ref('base.ARS').id,
|
||||||
|
'name': '(AR) Monotributista (Unit Tests)',
|
||||||
|
"l10n_ar_afip_start_date": time.strftime('%Y-01-01'),
|
||||||
|
'l10n_ar_gross_income_type': 'exempt',
|
||||||
|
})
|
||||||
|
cls.company_mono.partner_id.write({
|
||||||
|
'name': '(AR) Monotributista (Unit Tests)',
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_RM").id,
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': '20222222223',
|
||||||
|
"street": 'Calle Falsa 123',
|
||||||
|
"city": 'Rosario',
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"state_id": cls.env.ref("base.state_ar_s").id,
|
||||||
|
"zip": '2000',
|
||||||
|
"phone": '+1 555 123 8069',
|
||||||
|
"email": 'info@example.com',
|
||||||
|
"website": 'www.example.com',
|
||||||
|
})
|
||||||
|
cls.partner_mono = cls.company_mono.partner_id
|
||||||
|
|
||||||
|
# ==== Bank Account ====
|
||||||
|
cls.bank_account_ri = cls.env['res.partner.bank'].create({
|
||||||
|
'acc_number': '7982898111100056688080',
|
||||||
|
'partner_id': cls.company_ri.partner_id.id,
|
||||||
|
'company_id': cls.company_ri.id,
|
||||||
|
})
|
||||||
|
|
||||||
|
# ==== Partners / Customers ====
|
||||||
|
cls.partner_afip = cls.env.ref("l10n_ar.partner_afip")
|
||||||
|
cls.res_partner_adhoc = cls.env['res.partner'].create({
|
||||||
|
"name": "ADHOC SA",
|
||||||
|
"is_company": 1,
|
||||||
|
"city": "Rosario",
|
||||||
|
"zip": "2000",
|
||||||
|
"state_id": cls.env.ref("base.state_ar_s").id,
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"street": "Ovidio Lagos 41 bis",
|
||||||
|
"email": "info@adhoc.com.ar",
|
||||||
|
"phone": "(+54) (341) 208 0203",
|
||||||
|
"website": "http://www.adhoc.com.ar",
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': "30714295698",
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_IVARI").id,
|
||||||
|
})
|
||||||
|
cls.partner_cf = cls.env['res.partner'].create({
|
||||||
|
"name": "Consumidor Final Anonimo",
|
||||||
|
"l10n_latam_identification_type_id": cls.env.ref('l10n_ar.it_Sigd').id,
|
||||||
|
"l10n_ar_afip_responsibility_type_id": cls.env.ref("l10n_ar.res_CF").id,
|
||||||
|
})
|
||||||
|
cls.res_partner_gritti_mono = cls.env['res.partner'].create({
|
||||||
|
"name": "Gritti Agrimensura (Monotributo)",
|
||||||
|
"is_company": 1,
|
||||||
|
"city": "Rosario",
|
||||||
|
"zip": "2000",
|
||||||
|
"state_id": cls.env.ref("base.state_ar_s").id,
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"street": "Calle Falsa 123",
|
||||||
|
"email": "info@example.com.ar",
|
||||||
|
"phone": "(+54) (341) 111 2222",
|
||||||
|
"website": "http://www.grittiagrimensura.com",
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': "27320732811",
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_RM").id,
|
||||||
|
})
|
||||||
|
cls.res_partner_montana_sur = cls.env['res.partner'].create({
|
||||||
|
"name": "Montana Sur",
|
||||||
|
"is_company": 1,
|
||||||
|
"city": "San Martin de los Andes",
|
||||||
|
"state_id": cls.env.ref("base.state_ar_v").id,
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"street": "Ruta 3 km 26",
|
||||||
|
"email": "contacto@montanasur.com.ar.com",
|
||||||
|
"phone": "(+54) (297) 4876 123",
|
||||||
|
"website": "http://www.montanasur.com.ar/",
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': "27333333339",
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_IVA_LIB").id,
|
||||||
|
})
|
||||||
|
cls.res_partner_servicios_globales = cls.env['res.partner'].create({
|
||||||
|
"name": "Servicios Globales SRL (IVA Sujeto Exento)",
|
||||||
|
"is_company": 1,
|
||||||
|
"city": "Rosario",
|
||||||
|
"zip": "2000",
|
||||||
|
"state_id": cls.env.ref("base.state_ar_s").id,
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"street": "Bv. Oroño 789",
|
||||||
|
"email": "contacto@serviciosglobales.com.ar",
|
||||||
|
"phone": "(+54) (341) 333 4444",
|
||||||
|
"website": "http://www.serviciosglobales.com.ar/",
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': "30684679372",
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_IVAE").id,
|
||||||
|
})
|
||||||
|
cls.res_partner_barcelona_food = cls.env['res.partner'].create({
|
||||||
|
"name": "Barcelona Food",
|
||||||
|
"is_company": 1,
|
||||||
|
"city": "Barcelona",
|
||||||
|
"zip": "11002",
|
||||||
|
"country_id": cls.env.ref("base.es").id,
|
||||||
|
"street": "La gran avenida 123",
|
||||||
|
"email": "info@barcelonafoods.com",
|
||||||
|
"phone": "(+00) (11) 222 3333",
|
||||||
|
"website": "http://www.barcelonafoods.com/",
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_latam_base.it_fid").id,
|
||||||
|
'vat': "2222333344445555",
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_EXT").id,
|
||||||
|
})
|
||||||
|
cls.partner_mipyme = cls.env['res.partner'].create({
|
||||||
|
"name": "Trenes Argentinos (Mipyme)",
|
||||||
|
"is_company": 1,
|
||||||
|
"city": "Buenos Aires",
|
||||||
|
"zip": "1524",
|
||||||
|
"state_id": cls.env.ref("base.state_ar_c").id,
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"street": "Santa Cruz 4636",
|
||||||
|
"email": "mipyme@example.com",
|
||||||
|
"phone": "(123)-456-7890",
|
||||||
|
"website": "http://www.mypime-inc.com",
|
||||||
|
'l10n_latam_identification_type_id': cls.env.ref("l10n_ar.it_cuit").id,
|
||||||
|
'vat': "30714101443",
|
||||||
|
'l10n_ar_afip_responsibility_type_id': cls.env.ref("l10n_ar.res_IVARI").id,
|
||||||
|
})
|
||||||
|
cls.partner_mipyme_ex = cls.partner_mipyme.copy({'name': 'MiPyme Exento', 'l10n_ar_afip_responsibility_type_id': cls.env.ref('l10n_ar.res_IVAE').id})
|
||||||
|
|
||||||
|
# ==== Taxes ====
|
||||||
|
cls.tax_21 = cls._search_tax(cls, 'iva_21')
|
||||||
|
cls.tax_27 = cls._search_tax(cls, 'iva_27')
|
||||||
|
cls.tax_0 = cls._search_tax(cls, 'iva_0')
|
||||||
|
cls.tax_10_5 = cls._search_tax(cls, 'iva_105')
|
||||||
|
cls.tax_no_gravado = cls._search_tax(cls, 'iva_no_gravado')
|
||||||
|
cls.tax_perc_iibb = cls._search_tax(cls, 'percepcion_iibb_ba')
|
||||||
|
cls.tax_iva_exento = cls._search_tax(cls, 'iva_exento')
|
||||||
|
|
||||||
|
cls.tax_national = cls.env['account.tax'].create({
|
||||||
|
"name": "National Tax",
|
||||||
|
"description": "National Tax",
|
||||||
|
"amount": "4",
|
||||||
|
"amount_type": "percent",
|
||||||
|
"type_tax_use": "sale",
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"company_id": cls.company_ri.id,
|
||||||
|
"tax_group_id": cls.env.ref("l10n_ar.tax_group_national_taxes").id,
|
||||||
|
})
|
||||||
|
cls.tax_internal = cls.env['account.tax'].create({
|
||||||
|
"name": "Internal Tax",
|
||||||
|
"description": "Internal Tax",
|
||||||
|
"amount": "3",
|
||||||
|
"amount_type": "percent",
|
||||||
|
"type_tax_use": "sale",
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"company_id": cls.company_ri.id,
|
||||||
|
"tax_group_id": cls.env.ref("l10n_ar.tax_impuestos_internos").id,
|
||||||
|
})
|
||||||
|
cls.tax_other = cls.env['account.tax'].create({
|
||||||
|
"name": "Other Tax",
|
||||||
|
"description": "Other Tax",
|
||||||
|
"amount": "100",
|
||||||
|
"amount_type": "fixed",
|
||||||
|
"type_tax_use": "sale",
|
||||||
|
"country_id": cls.env.ref("base.ar").id,
|
||||||
|
"company_id": cls.company_ri.id,
|
||||||
|
"tax_group_id": cls.env.ref("l10n_ar.tax_group_otros_impuestos").id,
|
||||||
|
})
|
||||||
|
|
||||||
|
cls.tax_21_purchase = cls._search_tax(cls, 'iva_21', type_tax_use='purchase')
|
||||||
|
cls.tax_no_gravado_purchase = cls._search_tax(cls, 'iva_no_gravado', type_tax_use='purchase')
|
||||||
|
|
||||||
|
# ==== Products ====
|
||||||
|
uom_unit = cls.env.ref('uom.product_uom_unit')
|
||||||
|
uom_hour = cls.env.ref('uom.product_uom_hour')
|
||||||
|
|
||||||
|
cls.product_iva_21 = cls.env['product.product'].create({
|
||||||
|
'name': 'Large Cabinet (VAT 21)',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'lst_price': 320.0,
|
||||||
|
'standard_price': 800.0,
|
||||||
|
'type': "consu",
|
||||||
|
'default_code': 'E-COM07',
|
||||||
|
})
|
||||||
|
cls.service_iva_27 = cls.env['product.product'].create({
|
||||||
|
# demo 'product_product_telefonia'
|
||||||
|
'name': 'Telephone service (VAT 27)',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'lst_price': 130.0,
|
||||||
|
'standard_price': 250.0,
|
||||||
|
'type': 'service',
|
||||||
|
'default_code': 'TELEFONIA',
|
||||||
|
'taxes_id': [(6, 0, cls.tax_27.ids)],
|
||||||
|
})
|
||||||
|
cls.product_iva_cero = cls.env['product.product'].create({
|
||||||
|
# demo 'product_product_cero'
|
||||||
|
'name': 'Non-industrialized animals and vegetables (VAT Zero)',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'list_price': 160.0,
|
||||||
|
'standard_price': 200.0,
|
||||||
|
'type': 'consu',
|
||||||
|
'default_code': 'CERO',
|
||||||
|
'taxes_id': [(6, 0, cls.tax_0.ids)],
|
||||||
|
})
|
||||||
|
cls.product_iva_105 = cls.env['product.product'].create({
|
||||||
|
# demo 'product.product_product_27'
|
||||||
|
'name': 'Laptop Customized (VAT 10,5)',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'standard_price': 4500.0,
|
||||||
|
'type': 'consu',
|
||||||
|
'default_code': '10,5',
|
||||||
|
'taxes_id': [(6, 0, cls.tax_10_5.ids)],
|
||||||
|
})
|
||||||
|
cls.service_iva_21 = cls.env['product.product'].create({
|
||||||
|
# demo data product.product_product_2
|
||||||
|
'name': 'Virtual Home Staging (VAT 21)',
|
||||||
|
'uom_id': uom_hour.id,
|
||||||
|
'uom_po_id': uom_hour.id,
|
||||||
|
'list_price': 38.25,
|
||||||
|
'standard_price': 45.5,
|
||||||
|
'type': 'service',
|
||||||
|
'default_code': 'VAT 21',
|
||||||
|
'taxes_id': [(6, 0, cls.tax_21.ids)],
|
||||||
|
})
|
||||||
|
cls.product_no_gravado = cls.env['product.product'].create({
|
||||||
|
# demo data product_product_no_gravado
|
||||||
|
'name': 'Untaxed concepts (VAT NT)',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'list_price': 40.00,
|
||||||
|
'standard_price': 50.0,
|
||||||
|
'type': 'consu',
|
||||||
|
'default_code': 'NOGRAVADO',
|
||||||
|
'taxes_id': [(6, 0, cls.tax_no_gravado.ids)],
|
||||||
|
})
|
||||||
|
cls.product_iva_105_perc = cls.product_iva_105.copy({
|
||||||
|
# product.product_product_25
|
||||||
|
"name": "Laptop E5023 (VAT 10,5)",
|
||||||
|
"standard_price": 3280.0,
|
||||||
|
# agregamos percecipn aplicada y sufrida tambien
|
||||||
|
'taxes_id': [(6, 0, [cls.tax_10_5.id, cls.tax_perc_iibb.id])],
|
||||||
|
})
|
||||||
|
cls.product_iva_exento = cls.env['product.product'].create({
|
||||||
|
# demo product_product_exento
|
||||||
|
'name': 'Book: Development in Odoo (VAT Exempt)',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'standard_price': 100.0,
|
||||||
|
"list_price": 80.0,
|
||||||
|
'type': 'consu',
|
||||||
|
'default_code': 'EXENTO',
|
||||||
|
'taxes_id': [(6, 0, cls.tax_iva_exento.ids)],
|
||||||
|
})
|
||||||
|
cls.service_wo_tax = cls.env['product.product'].create({
|
||||||
|
# demo product_product_quote_despacho
|
||||||
|
'name': 'Service WO TAX',
|
||||||
|
'type': 'service',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'default_code': 'AFIP_DESPACHO',
|
||||||
|
})
|
||||||
|
cls.service_iva_no_gravado = cls.env['product.product'].create({
|
||||||
|
# demo product_product_arancel
|
||||||
|
'name': 'Server VAT Untaxed',
|
||||||
|
'type': 'service',
|
||||||
|
'uom_id': uom_unit.id,
|
||||||
|
'uom_po_id': uom_unit.id,
|
||||||
|
'default_code': 'AFIP_ARANCEL',
|
||||||
|
"supplier_taxes_id": [(6, 0, (cls.tax_no_gravado_purchase).ids)],
|
||||||
|
})
|
||||||
|
|
||||||
|
# ==== Document Types ====
|
||||||
|
cls.document_type = {
|
||||||
|
'invoice_a': cls.env.ref('l10n_ar.dc_a_f'),
|
||||||
|
'credit_note_a': cls.env.ref('l10n_ar.dc_a_nc'),
|
||||||
|
'invoice_b': cls.env.ref('l10n_ar.dc_b_f'),
|
||||||
|
'credit_note_b': cls.env.ref('l10n_ar.dc_b_nc'),
|
||||||
|
'invoice_e': cls.env.ref('l10n_ar.dc_e_f'),
|
||||||
|
'invoice_mipyme_a': cls.env.ref('l10n_ar.dc_fce_a_f'),
|
||||||
|
'invoice_mipyme_b': cls.env.ref('l10n_ar.dc_fce_b_f'),
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==== Journals ====
|
||||||
|
cls.sale_expo_journal_ri = cls.env["account.journal"].create({
|
||||||
|
'name': "Expo Sales Journal",
|
||||||
|
'company_id': cls.company_ri.id,
|
||||||
|
'type': "sale",
|
||||||
|
'code': "S0002",
|
||||||
|
'l10n_latam_use_documents': "True",
|
||||||
|
'l10n_ar_afip_pos_number': 2,
|
||||||
|
'l10n_ar_afip_pos_partner_id': cls.partner_ri.id,
|
||||||
|
'l10n_ar_afip_pos_system': "FEERCEL",
|
||||||
|
'refund_sequence': False,
|
||||||
|
})
|
||||||
|
|
||||||
|
# ==== Invoices ====
|
||||||
|
cls.demo_invoices = {}
|
||||||
|
cls.demo_credit_notes = {}
|
||||||
|
cls.demo_bills = {}
|
||||||
|
|
||||||
|
def _create_test_invoices_like_demo(self, use_current_date=True):
|
||||||
|
""" Create in the unit tests the same invoices created in demo data """
|
||||||
|
payment_term_id = self.env.ref("account.account_payment_term_end_following_month")
|
||||||
|
invoice_user_id = self.env.user
|
||||||
|
incoterm = self.env.ref("account.incoterm_EXW")
|
||||||
|
|
||||||
|
decimal_price = self.env.ref('product.decimal_price')
|
||||||
|
decimal_price.digits = 4
|
||||||
|
|
||||||
|
invoices_to_create = {
|
||||||
|
'test_invoice_1': {
|
||||||
|
"ref": "test_invoice_1: Invoice to gritti support service, vat 21",
|
||||||
|
"partner_id": self.res_partner_gritti_mono,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": "out_invoice",
|
||||||
|
"invoice_date": "2021-03-01",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_2': {
|
||||||
|
"ref": "test_invoice_2: Invoice to Servicios Globales with vat 21, 27 and 10,5",
|
||||||
|
"partner_id": self.res_partner_servicios_globales,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": "out_invoice",
|
||||||
|
"invoice_date": "2021-03-05",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 3245.0, 'quantity': 2}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_3': {
|
||||||
|
"ref": "test_invoice_3: Invoice to ADHOC with vat cero and 21",
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-01",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
{'product_id': self.product_iva_cero, 'price_unit': 200.0, 'quantity': 1}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_4': {
|
||||||
|
'ref': 'test_invoice_4: Invoice to ADHOC with vat exempt and 21',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-01",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.1234, 'quantity': 5},
|
||||||
|
{'product_id': self.product_iva_exento, 'price_unit': 100.5678, 'quantity': 1},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_5': {
|
||||||
|
'ref': 'test_invoice_5: Invoice to ADHOC with all type of taxes',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 3245.0, 'quantity': 2},
|
||||||
|
{'product_id': self.product_no_gravado, 'price_unit': 50.0, 'quantity': 10},
|
||||||
|
{'product_id': self.product_iva_cero, 'price_unit': 200.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_exento, 'price_unit': 100.0, 'quantity': 1}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_6': {
|
||||||
|
'ref': 'test_invoice_6: Invoice to Montana Sur, fiscal position changes taxes to exempt',
|
||||||
|
"partner_id": self.res_partner_montana_sur,
|
||||||
|
"journal_id": self.sale_expo_journal_ri,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-03",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_incoterm_id": incoterm,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 3245.0, 'quantity': 2},
|
||||||
|
{'product_id': self.product_no_gravado, 'price_unit': 50.0, 'quantity': 10},
|
||||||
|
{'product_id': self.product_iva_cero, 'price_unit': 200.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_exento, 'price_unit': 100.0, 'quantity': 1},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_7': {
|
||||||
|
'ref': 'test_invoice_7: Export invoice to Barcelona food, fiscal position changes tax to exempt (type 4 because it have services)',
|
||||||
|
"partner_id": self.res_partner_barcelona_food,
|
||||||
|
"journal_id": self.sale_expo_journal_ri,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-03",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_incoterm_id": incoterm,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 3245.0, 'quantity': 2},
|
||||||
|
{'product_id': self.product_no_gravado, 'price_unit': 50.0, 'quantity': 10},
|
||||||
|
{'product_id': self.product_iva_cero, 'price_unit': 200.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_exento, 'price_unit': 100.0, 'quantity': 1},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_8': {
|
||||||
|
'ref': 'test_invoice_8: Invoice to consumidor final',
|
||||||
|
"partner_id": self.partner_cf,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 642.0, 'quantity': 1},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_10': {
|
||||||
|
'ref': 'test_invoice_10; Invoice to ADHOC in USD and vat 21',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 1000.0, 'quantity': 5},
|
||||||
|
],
|
||||||
|
"currency_id": self.env.ref("base.USD"),
|
||||||
|
},
|
||||||
|
'test_invoice_11': {
|
||||||
|
'ref': 'test_invoice_11: Invoice to ADHOC with many lines in order to prove rounding error, with 4 decimals of precision for the currency and 2 decimals for the product the error apperar',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 1'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 2'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 3'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 1.12, 'quantity': 1, 'name': 'Support Services 4'},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_12': {
|
||||||
|
'ref': 'test_invoice_12: Invoice to ADHOC with many lines in order to test rounding error, it is required to use a 4 decimal precision in prodct in order to the error occur',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 15.7076, 'quantity': 1, 'name': 'Support Services 1'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 5.3076, 'quantity': 2, 'name': 'Support Services 2'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 3.5384, 'quantity': 2, 'name': 'Support Services 3'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 1.6376, 'quantity': 2, 'name': 'Support Services 4'},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_13': {
|
||||||
|
'ref': 'test_invoice_13: Invoice to ADHOC with many lines in order to test zero amount invoices y rounding error. it is required to set the product decimal precision to 4 and change 260.59 for 260.60 in order to reproduce the error',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 1'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 260.59, 'quantity': 1, 'name': 'Support Services 2'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 48.72, 'quantity': 1, 'name': 'Support Services 3'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 13.666, 'quantity': 1, 'name': 'Support Services 4'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 11.329, 'quantity': 2, 'name': 'Support Services 5'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 68.9408, 'quantity': 1, 'name': 'Support Services 6'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 4.7881, 'quantity': 2, 'name': 'Support Services 7'},
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 12.0625, 'quantity': 2, 'name': 'Support Services 8'},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_14': {
|
||||||
|
'ref': 'test_invoice_14: Export invoice to Barcelona food, fiscal position changes tax to exempt (type 1 because only products)',
|
||||||
|
"partner_id": self.res_partner_barcelona_food,
|
||||||
|
"journal_id": self.sale_expo_journal_ri,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-20",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_incoterm_id": incoterm,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_15': {
|
||||||
|
'ref': 'test_invoice_15: Export invoice to Barcelona food, fiscal position changes tax to exempt (type 2 because only service)',
|
||||||
|
"partner_id": self.res_partner_barcelona_food,
|
||||||
|
"journal_id": self.sale_expo_journal_ri,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-20",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_incoterm_id": incoterm,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_16': {
|
||||||
|
'ref': 'test_invoice_16: Export invoice to Barcelona food, fiscal position changes tax to exempt (type 1 because it have products only, used to test refund of expo)',
|
||||||
|
"partner_id": self.res_partner_barcelona_food,
|
||||||
|
"journal_id": self.sale_expo_journal_ri,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-22",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_incoterm_id": incoterm,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105, 'price_unit': 642.0, 'quantity': 5},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_17': {
|
||||||
|
'ref': 'test_invoice_17: Invoice to ADHOC with 100%% of discount',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 8', 'discount': 100},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_18': {
|
||||||
|
'ref': 'test_invoice_18: Invoice to ADHOC with 100%% of discount and with different VAT aliquots',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 8', 'discount': 100},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1, 'discount': 100},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 3245.0, 'quantity': 1},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'test_invoice_19': {
|
||||||
|
'ref': 'test_invoice_19: Invoice to ADHOC with multiple taxes and perceptions',
|
||||||
|
"partner_id": self.res_partner_adhoc,
|
||||||
|
"invoice_payment_term_id": payment_term_id,
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"invoice_date": "2021-03-13",
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 24.3, 'quantity': 3, 'name': 'Support Services 8'},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 250.0, 'quantity': 1},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 3245.0, 'quantity': 1},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, values in invoices_to_create.items():
|
||||||
|
with Form(self.env['account.move'].with_context(default_move_type=values['move_type'])) as invoice_form:
|
||||||
|
invoice_form.ref = values['ref']
|
||||||
|
invoice_form.partner_id = values['partner_id']
|
||||||
|
invoice_form.invoice_payment_term_id = values['invoice_payment_term_id']
|
||||||
|
if not use_current_date:
|
||||||
|
invoice_form.invoice_date = values['invoice_date']
|
||||||
|
if values.get('invoice_incoterm_id'):
|
||||||
|
invoice_form.invoice_incoterm_id = values['invoice_incoterm_id']
|
||||||
|
for line in values['invoice_line_ids']:
|
||||||
|
with invoice_form.invoice_line_ids.new() as line_form:
|
||||||
|
line_form.product_id = line.get('product_id')
|
||||||
|
line_form.price_unit = line.get('price_unit')
|
||||||
|
line_form.quantity = line.get('quantity')
|
||||||
|
if line.get('tax_ids'):
|
||||||
|
line_form.tax_ids = line.get('tax_ids')
|
||||||
|
line_form.name = 'xxxx'
|
||||||
|
line_form.account_id = self.company_data['default_account_revenue']
|
||||||
|
invoice = invoice_form.save()
|
||||||
|
self.demo_invoices[key] = invoice
|
||||||
|
|
||||||
|
def _create_invoice_from_dict(self, values, use_current_date=True):
|
||||||
|
if not values.get('invoice_payment_term_id'):
|
||||||
|
values['invoice_payment_term_id'] = self.env.ref("account.account_payment_term_end_following_month")
|
||||||
|
if use_current_date:
|
||||||
|
values.pop('invoice_date', False)
|
||||||
|
|
||||||
|
for key, value in values.items():
|
||||||
|
if key.endswith("_id"):
|
||||||
|
values[key] = value.id
|
||||||
|
|
||||||
|
for line in values['invoice_line_ids']:
|
||||||
|
for key, value in line.items():
|
||||||
|
if key.endswith("_id"):
|
||||||
|
line[key] = value.id
|
||||||
|
|
||||||
|
values['invoice_line_ids'] = [(0, 0, line_data) for line_data in values['invoice_line_ids']]
|
||||||
|
return self.env['account.move'].with_context(default_move_type=values['move_type']).create(values)
|
||||||
|
|
||||||
|
# Helpers
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_afip_pos_system_real_name(cls):
|
||||||
|
return {'PREPRINTED': 'II_IM'}
|
||||||
|
|
||||||
|
def _create_journal(self, afip_ws, data=None):
|
||||||
|
""" Create a journal of a given AFIP ws type.
|
||||||
|
If there is a problem because we are using a AFIP certificate that is already been in use then change the certificate and try again """
|
||||||
|
data = data or {}
|
||||||
|
afip_ws = afip_ws.upper()
|
||||||
|
pos_number = str(random.randint(0, 99999))
|
||||||
|
if 'l10n_ar_afip_pos_number' in data:
|
||||||
|
pos_number = data.get('l10n_ar_afip_pos_number')
|
||||||
|
values = {'name': '%s %s' % (afip_ws.replace('WS', ''), pos_number),
|
||||||
|
'type': 'sale',
|
||||||
|
'code': pos_number,
|
||||||
|
'l10n_ar_afip_pos_system': self._get_afip_pos_system_real_name().get(afip_ws),
|
||||||
|
'l10n_ar_afip_pos_number': pos_number,
|
||||||
|
'l10n_latam_use_documents': True,
|
||||||
|
'company_id': self.env.company.id,
|
||||||
|
'l10n_ar_afip_pos_partner_id': self.partner_ri.id,
|
||||||
|
'sequence': 1}
|
||||||
|
values.update(data)
|
||||||
|
|
||||||
|
journal = self.env['account.journal'].create(values)
|
||||||
|
_logger.info('Created journal %s for company %s', journal.name, self.env.company.name)
|
||||||
|
return journal
|
||||||
|
|
||||||
|
def _create_invoice(self, data=None, invoice_type='out_invoice'):
|
||||||
|
data = data or {}
|
||||||
|
with Form(self.env['account.move'].with_context(default_move_type=invoice_type)) as invoice_form:
|
||||||
|
invoice_form.partner_id = data.get('partner', self.partner)
|
||||||
|
if 'in_' not in invoice_type:
|
||||||
|
invoice_form.journal_id = data.get('journal', self.journal)
|
||||||
|
|
||||||
|
if data.get('document_type'):
|
||||||
|
invoice_form.l10n_latam_document_type_id = data.get('document_type')
|
||||||
|
if data.get('document_number'):
|
||||||
|
invoice_form.l10n_latam_document_number = data.get('document_number')
|
||||||
|
if data.get('incoterm'):
|
||||||
|
invoice_form.invoice_incoterm_id = data.get('incoterm')
|
||||||
|
if data.get('currency'):
|
||||||
|
invoice_form.currency_id = data.get('currency')
|
||||||
|
for line in data.get('lines', [{}]):
|
||||||
|
with invoice_form.invoice_line_ids.new() as invoice_line_form:
|
||||||
|
invoice_line_form.display_type = line.get('display_type', 'product')
|
||||||
|
if line.get('display_type') in ('line_note', 'line_section'):
|
||||||
|
invoice_line_form.name = line.get('name', 'not invoice line')
|
||||||
|
else:
|
||||||
|
invoice_line_form.product_id = line.get('product', self.product_iva_21)
|
||||||
|
invoice_line_form.quantity = line.get('quantity', 1)
|
||||||
|
invoice_line_form.price_unit = line.get('price_unit', 100)
|
||||||
|
invoice_form.invoice_date = invoice_form.date
|
||||||
|
invoice = invoice_form.save()
|
||||||
|
return invoice
|
||||||
|
|
||||||
|
def _create_invoice_product(self, data=None):
|
||||||
|
data = data or {}
|
||||||
|
return self._create_invoice(data)
|
||||||
|
|
||||||
|
def _create_invoice_service(self, data=None):
|
||||||
|
data = data or {}
|
||||||
|
newlines = []
|
||||||
|
for line in data.get('lines', [{}]):
|
||||||
|
line.update({'product': self.service_iva_27})
|
||||||
|
newlines.append(line)
|
||||||
|
data.update({'lines': newlines})
|
||||||
|
return self._create_invoice(data)
|
||||||
|
|
||||||
|
def _create_invoice_product_service(self, data=None):
|
||||||
|
data = data or {}
|
||||||
|
newlines = []
|
||||||
|
for line in data.get('lines', [{}]):
|
||||||
|
line.update({'product': self.product_iva_21})
|
||||||
|
newlines.append(line)
|
||||||
|
data.update({'lines': newlines + [{'product': self.service_iva_27}]})
|
||||||
|
return self._create_invoice(data)
|
||||||
|
|
||||||
|
def _create_credit_note(self, invoice, data=None):
|
||||||
|
data = data or {}
|
||||||
|
refund_wizard = self.env['account.move.reversal'].with_context({'active_ids': [invoice.id], 'active_model': 'account.move'}).create({
|
||||||
|
'reason': data.get('reason', 'Mercadería defectuosa'),
|
||||||
|
'refund_method': data.get('refund_method', 'refund'),
|
||||||
|
'journal_id': invoice.journal_id.id})
|
||||||
|
|
||||||
|
forced_document_type = data.get('document_type')
|
||||||
|
if forced_document_type:
|
||||||
|
refund_wizard.l10n_latam_document_type_id = forced_document_type.id
|
||||||
|
|
||||||
|
res = refund_wizard.reverse_moves()
|
||||||
|
refund = self.env['account.move'].browse(res['res_id'])
|
||||||
|
return refund
|
||||||
|
|
||||||
|
def _create_debit_note(self, invoice, data=None):
|
||||||
|
data = data or {}
|
||||||
|
debit_note_wizard = self.env['account.debit.note'].with_context(
|
||||||
|
{'active_ids': [invoice.id], 'active_model': 'account.move', 'default_copy_lines': True}).create({
|
||||||
|
'reason': data.get('reason', 'Mercadería defectuosa')})
|
||||||
|
res = debit_note_wizard.create_debit()
|
||||||
|
debit_note = self.env['account.move'].browse(res['res_id'])
|
||||||
|
return debit_note
|
||||||
|
|
||||||
|
def _search_tax(self, tax_type, type_tax_use='sale'):
|
||||||
|
res = self.env['account.tax'].with_context(active_test=False).search([
|
||||||
|
('type_tax_use', '=', type_tax_use),
|
||||||
|
('company_id', '=', self.env.company.id),
|
||||||
|
('tax_group_id', '=', self.env.ref('l10n_ar.tax_group_' + tax_type).id)], limit=1)
|
||||||
|
self.assertTrue(res, '%s Tax was not found' % (tax_type))
|
||||||
|
return res
|
||||||
|
|
||||||
|
def _search_fp(self, name):
|
||||||
|
return self.env['account.fiscal.position'].search([('company_id', '=', self.env.company.id), ('name', '=', name)])
|
||||||
|
|
||||||
|
def _post(self, invoice):
|
||||||
|
invoice.action_post()
|
||||||
|
self.assertEqual(invoice.state, 'posted')
|
||||||
|
|
||||||
|
def _prepare_multicurrency_values(self):
|
||||||
|
# Enable multi currency
|
||||||
|
self.env.user.write({'groups_id': [(4, self.env.ref('base.group_multi_currency').id)]})
|
||||||
|
# Set ARS as main currency
|
||||||
|
self._set_today_rate(self.env.ref('base.ARS'), 1.0)
|
||||||
|
# Set Rates for USD currency
|
||||||
|
self._set_today_rate(self.env.ref('base.USD'), 1.0 / 162.013)
|
||||||
|
|
||||||
|
def _set_today_rate(self, currency, value):
|
||||||
|
rate_obj = self.env['res.currency.rate']
|
||||||
|
rate = rate_obj.search([('currency_id', '=', currency.id), ('name', '=', fields.Date.to_string(fields.Date.today())),
|
||||||
|
('company_id', '=', self.env.company.id)])
|
||||||
|
if rate:
|
||||||
|
rate.rate = value
|
||||||
|
else:
|
||||||
|
rate_obj.create({'company_id': self.env.company.id, 'currency_id': currency.id, 'rate': value})
|
||||||
173
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/tests/test_manual.py
Normal file
173
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/tests/test_manual.py
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
from . import common
|
||||||
|
from odoo.tests import tagged
|
||||||
|
from odoo.tools.float_utils import float_split_str
|
||||||
|
|
||||||
|
|
||||||
|
@tagged('post_install_l10n', '-at_install', 'post_install')
|
||||||
|
class TestManual(common.TestAr):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super(TestManual, cls).setUpClass()
|
||||||
|
cls.journal = cls._create_journal(cls, 'preprinted')
|
||||||
|
cls.partner = cls.res_partner_adhoc
|
||||||
|
cls._create_test_invoices_like_demo(cls)
|
||||||
|
|
||||||
|
def test_01_create_invoice(self):
|
||||||
|
""" Create and validate an invoice for a Responsable Inscripto
|
||||||
|
|
||||||
|
* Proper set the current user company
|
||||||
|
* Properly set the tax amount of the product / partner
|
||||||
|
* Proper fiscal position (this case not fiscal position is selected)
|
||||||
|
"""
|
||||||
|
invoice = self._create_invoice()
|
||||||
|
self.assertEqual(invoice.company_id, self.company_ri, 'created with wrong company')
|
||||||
|
self.assertEqual(invoice.amount_tax, 21, 'invoice taxes are not properly set')
|
||||||
|
self.assertEqual(invoice.amount_total, 121.0, 'invoice taxes has not been applied to the total')
|
||||||
|
self.assertEqual(invoice.l10n_latam_document_type_id, self.document_type['invoice_a'], 'selected document type should be Factura A')
|
||||||
|
self._post(invoice)
|
||||||
|
self.assertEqual(invoice.state, 'posted', 'invoice has not been validate in Odoo')
|
||||||
|
self.assertEqual(invoice.name, 'FA-A %05d-00000002' % self.journal.l10n_ar_afip_pos_number, 'Invoice number is wrong')
|
||||||
|
|
||||||
|
def test_02_fiscal_position(self):
|
||||||
|
# ADHOC SA > IVA Responsable Inscripto > Without Fiscal Positon
|
||||||
|
invoice = self._create_invoice({'partner': self.partner})
|
||||||
|
self.assertFalse(invoice.fiscal_position_id, 'Fiscal position should be set to empty')
|
||||||
|
|
||||||
|
# Consumidor Final > IVA Responsable Inscripto > Without Fiscal Positon
|
||||||
|
invoice = self._create_invoice({'partner': self.partner_cf})
|
||||||
|
self.assertFalse(invoice.fiscal_position_id, 'Fiscal position should be set to empty')
|
||||||
|
|
||||||
|
# Montana Sur > IVA Liberado - Ley Nº 19.640 > Compras / Ventas Zona Franca > IVA Exento
|
||||||
|
invoice = self._create_invoice({'partner': self.res_partner_montana_sur})
|
||||||
|
self.assertEqual(invoice.fiscal_position_id, self._search_fp('Compras / Ventas Zona Franca'))
|
||||||
|
|
||||||
|
# Barcelona food > Cliente / Proveedor del Exterior > > IVA Exento
|
||||||
|
invoice = self._create_invoice({'partner': self.res_partner_barcelona_food})
|
||||||
|
self.assertEqual(invoice.fiscal_position_id, self._search_fp('Compras / Ventas al exterior'))
|
||||||
|
|
||||||
|
def test_03_corner_cases(self):
|
||||||
|
""" Mono partner of type Service and VAT 21 """
|
||||||
|
self._post(self.demo_invoices['test_invoice_1'])
|
||||||
|
|
||||||
|
def test_04_corner_cases(self):
|
||||||
|
""" Exento partner with multiple VAT types 21, 27 and 10,5' """
|
||||||
|
self._post(self.demo_invoices['test_invoice_2'])
|
||||||
|
|
||||||
|
def test_05_corner_cases(self):
|
||||||
|
""" RI partner with VAT 0 and 21 """
|
||||||
|
self._post(self.demo_invoices['test_invoice_3'])
|
||||||
|
|
||||||
|
def test_06_corner_cases(self):
|
||||||
|
""" RI partner with VAT exempt and 21 """
|
||||||
|
self._post(self.demo_invoices['test_invoice_4'])
|
||||||
|
|
||||||
|
def test_07_corner_cases(self):
|
||||||
|
""" RI partner with all type of taxes """
|
||||||
|
self._post(self.demo_invoices['test_invoice_5'])
|
||||||
|
|
||||||
|
def test_08_corner_cases(self):
|
||||||
|
""" Consumidor Final """
|
||||||
|
self._post(self.demo_invoices['test_invoice_8'])
|
||||||
|
|
||||||
|
def test_09_corner_cases(self):
|
||||||
|
""" RI partner with many lines in order to prove rounding error, with 4 decimals of precision for the
|
||||||
|
currency and 2 decimals for the product the error appear """
|
||||||
|
self._post(self.demo_invoices['test_invoice_11'])
|
||||||
|
|
||||||
|
def test_10_corner_cases(self):
|
||||||
|
""" RI partner with many lines in order to test rounding error, it is required to use a 4 decimal precision
|
||||||
|
in product in order to the error occur """
|
||||||
|
self._post(self.demo_invoices['test_invoice_12'])
|
||||||
|
|
||||||
|
def test_11_corner_cases(self):
|
||||||
|
""" RI partner with many lines in order to test zero amount invoices y rounding error. it is required to
|
||||||
|
set the product decimal precision to 4 and change 260,59 for 260.60 in order to reproduce the error """
|
||||||
|
self._post(self.demo_invoices['test_invoice_13'])
|
||||||
|
|
||||||
|
def test_12_corner_cases(self):
|
||||||
|
""" RI partner with 100%% of discount """
|
||||||
|
self._post(self.demo_invoices['test_invoice_17'])
|
||||||
|
|
||||||
|
def test_13_corner_cases(self):
|
||||||
|
""" RI partner with 100%% of discount and with different VAT aliquots """
|
||||||
|
self._post(self.demo_invoices['test_invoice_18'])
|
||||||
|
|
||||||
|
def test_14_corner_cases(self):
|
||||||
|
""" Responsable Inscripto" in USD and VAT 21 """
|
||||||
|
self._prepare_multicurrency_values()
|
||||||
|
self._post(self.demo_invoices['test_invoice_10'])
|
||||||
|
|
||||||
|
def test_15_corner_cases(self):
|
||||||
|
""" RI partner with VAT exempt and 21. Test price unit digits """
|
||||||
|
self._post(self.demo_invoices['test_invoice_4'])
|
||||||
|
decimal_price_digits_setting = self.env.ref('product.decimal_price').digits
|
||||||
|
invoice_line_ids = self.demo_invoices['test_invoice_4'].invoice_line_ids
|
||||||
|
for line in invoice_line_ids:
|
||||||
|
l10n_ar_line_prices = line._l10n_ar_prices_and_taxes()
|
||||||
|
_unitary_part, l10n_ar_price_unit_decimal_part = float_split_str(l10n_ar_line_prices['price_unit'], decimal_price_digits_setting)
|
||||||
|
len_l10n_ar_price_unit_digits = len(l10n_ar_price_unit_decimal_part)
|
||||||
|
_unitary_part, line_price_unit_decimal_part = float_split_str(line.price_unit, decimal_price_digits_setting)
|
||||||
|
len_line_price_unit_digits = len(line_price_unit_decimal_part)
|
||||||
|
if len_l10n_ar_price_unit_digits == len_line_price_unit_digits == decimal_price_digits_setting:
|
||||||
|
self.assertEqual(l10n_ar_price_unit_decimal_part, line_price_unit_decimal_part)
|
||||||
|
|
||||||
|
def _get_simple_detail_ar_tax(self, invoice):
|
||||||
|
""" Get the simple detail_ar_tax list of tuples with the vat group name and the amount
|
||||||
|
[("vat_taxes", float), ("other_taxes", float)] """
|
||||||
|
return [
|
||||||
|
(item.get('group'), item.get('tax_amount'))
|
||||||
|
for item in invoice._l10n_ar_get_invoice_totals_for_report().get('detail_ar_tax')
|
||||||
|
]
|
||||||
|
|
||||||
|
def test_16_invoice_b_tax_breakdown_1(self):
|
||||||
|
""" Display Both VAT and Other Taxes """
|
||||||
|
invoice1 = self._create_invoice_from_dict({
|
||||||
|
'ref': 'test_invoice_20: Final Consumer Invoice B with multiple vat/perceptions/internal/other/national taxes',
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"partner_id": self.partner_cf,
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_date": "2021-03-20",
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.service_iva_21, 'price_unit': 124.3, 'quantity': 3, 'name': 'Support Services 8',
|
||||||
|
'tax_ids': [(6, 0, [self.tax_21.id, self.tax_perc_iibb.id])]},
|
||||||
|
{'product_id': self.service_iva_27, 'price_unit': 2250.0, 'quantity': 1,
|
||||||
|
'tax_ids': [(6, 0, [self.tax_27.id, self.tax_national.id])]},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 1740.0, 'quantity': 1,
|
||||||
|
'tax_ids': [(6, 0, [self.tax_10_5.id, self.tax_internal.id])]},
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 10000.0, 'quantity': 1,
|
||||||
|
'tax_ids': [(6, 0, [self.tax_0.id, self.tax_other.id])]},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
self.assertEqual(self._get_simple_detail_ar_tax(invoice1), [("vat", 868.51), ("other", 142.20)])
|
||||||
|
|
||||||
|
def test_17_invoice_b_tax_breakdown_2(self):
|
||||||
|
""" Display only Other Taxes (VAT taxes are 0) """
|
||||||
|
invoice2 = self._create_invoice_from_dict({
|
||||||
|
'ref': 'test_invoice_21: inal Consumer Invoice B with 0 tax and internal tax',
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"partner_id": self.partner_cf,
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_date": "2021-03-20",
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 10000.0, 'quantity': 1,
|
||||||
|
'tax_ids': [(6, 0, [self.tax_no_gravado.id, self.tax_internal.id])]},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
self.assertEqual(self._get_simple_detail_ar_tax(invoice2), [("vat", 0.0), ("other", 300.0)])
|
||||||
|
|
||||||
|
def test_18_invoice_b_tax_breakdown_3(self):
|
||||||
|
""" Display only Other Taxes (VAT taxes are 0 and non other taxes) """
|
||||||
|
invoice3 = self._create_invoice_from_dict({
|
||||||
|
'ref': 'test_invoice_22: Final Consumer Invoice B with 0 only',
|
||||||
|
"move_type": 'out_invoice',
|
||||||
|
"partner_id": self.partner_cf,
|
||||||
|
"company_id": self.company_ri,
|
||||||
|
"invoice_date": "2021-03-20",
|
||||||
|
"invoice_line_ids": [
|
||||||
|
{'product_id': self.product_iva_105_perc, 'price_unit': 10000.0, 'quantity': 1,
|
||||||
|
'tax_ids': [(6, 0, [self.tax_no_gravado.id])]},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
self.assertEqual(self._get_simple_detail_ar_tax(invoice3), [("vat", 0.0)])
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="view_account_position_form" model="ir.ui.view">
|
||||||
|
<field name="name">account.fiscal.position.form</field>
|
||||||
|
<field name="model">account.fiscal.position</field>
|
||||||
|
<field name="inherit_id" ref="account.view_account_position_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="auto_apply" position="after">
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_ids" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('auto_apply', '!=', True)]}" groups="base.group_no_one" widget="many2many_tags"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="view_account_journal_form" model="ir.ui.view">
|
||||||
|
<field name="model">account.journal</field>
|
||||||
|
<field name="name">account.journal.form</field>
|
||||||
|
<field name="inherit_id" ref="l10n_latam_invoice_document.view_account_journal_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="l10n_latam_use_documents" position="after">
|
||||||
|
<field name="company_partner" invisible="1"/>
|
||||||
|
<field name="l10n_ar_afip_pos_system" attrs="{'invisible':['|', '|', ('country_code', '!=', 'AR'), ('l10n_latam_use_documents', '=', False), ('type', '!=', 'sale')], 'required':[('country_code', '=', 'AR'), ('l10n_latam_use_documents', '=', True), ('type', '=', 'sale')]}"/>
|
||||||
|
<field name="l10n_ar_afip_pos_number" attrs="{'invisible':['|', '|', ('country_code', '!=', 'AR'), ('l10n_latam_use_documents', '=', False), ('type', '!=', 'sale')], 'required':[('country_code', '=', 'AR'), ('l10n_latam_use_documents', '=', True), ('type', '=', 'sale')]}"/>
|
||||||
|
<field name="l10n_ar_afip_pos_partner_id" attrs="{'invisible':['|', '|', ('country_code', '!=', 'AR'), ('l10n_latam_use_documents', '=', False), ('type', '!=', 'sale')], 'required':[('country_code', '=', 'AR'), ('l10n_latam_use_documents', '=', True), ('type', '=', 'sale')]}"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="view_account_move_filter" model="ir.ui.view">
|
||||||
|
<field name="name">account.move.filter</field>
|
||||||
|
<field name="model">account.move</field>
|
||||||
|
<field name="inherit_id" ref="account.view_account_move_filter"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="partner_id" position="after">
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_id"/>
|
||||||
|
</field>
|
||||||
|
<group>
|
||||||
|
<filter string="AFIP Responsibility Type" domain="[]" name="l10n_ar_afip_responsibility_type_id_filter" context="{'group_by':'l10n_ar_afip_responsibility_type_id'}"/>
|
||||||
|
</group>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record id="view_move_form" model="ir.ui.view">
|
||||||
|
<field name="name">account.move.form</field>
|
||||||
|
<field name="model">account.move</field>
|
||||||
|
<field name="inherit_id" ref="account.view_move_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<group id="other_tab_group" position="inside">
|
||||||
|
<group name="afip_group" string="AFIP" attrs="{'invisible': [('country_code', '!=', 'AR')]}">
|
||||||
|
<field name='l10n_ar_afip_concept' attrs="{'invisible': [('l10n_latam_use_documents', '=', False)]}"/>
|
||||||
|
<label for="l10n_ar_afip_service_start" attrs="{'invisible':[('l10n_ar_afip_concept','not in',['2', '3', '4'])]}" string="Service Date"/>
|
||||||
|
<div attrs="{'invisible':[('l10n_ar_afip_concept','not in',['2', '3', '4'])]}">
|
||||||
|
<field name="l10n_ar_afip_service_start" class="oe_inline"/> to <field name="l10n_ar_afip_service_end" class="oe_inline"/>
|
||||||
|
</div>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<menuitem id="menu_afip_config" name="AFIP" parent="account.menu_finance_configuration" sequence="25"/>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="view_afip_responsibility_type_form" model="ir.ui.view">
|
||||||
|
<field name="name">afip.responsibility.type.form</field>
|
||||||
|
<field name="model">l10n_ar.afip.responsibility.type</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="AFIP Responsibility Type">
|
||||||
|
<group>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name='code'/>
|
||||||
|
<field name='active'/>
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_afip_responsibility_type_tree" model="ir.ui.view">
|
||||||
|
<field name="name">afip.responsibility.type.tree</field>
|
||||||
|
<field name="model">l10n_ar.afip.responsibility.type</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="AFIP Responsibility Type" decoration-muted="(not active)">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name='active'/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.actions.act_window" id="action_afip_responsibility_type">
|
||||||
|
<field name="name">AFIP Responsibility Types</field>
|
||||||
|
<field name="res_model">l10n_ar.afip.responsibility.type</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem name="Responsibility Types" action="action_afip_responsibility_type" id="menu_afip_responsibility_type" sequence="10" parent="menu_afip_config"/>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="view_document_type_form" model="ir.ui.view">
|
||||||
|
<field name="name">l10n_latam.document.type.form</field>
|
||||||
|
<field name="model">l10n_latam.document.type</field>
|
||||||
|
<field name="inherit_id" ref="l10n_latam_invoice_document.view_document_type_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name='doc_code_prefix' position="after">
|
||||||
|
<field name='l10n_ar_letter'/>
|
||||||
|
<field name='purchase_aliquots'/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_document_type_tree" model="ir.ui.view">
|
||||||
|
<field name="name">l10n_latam.document.type.tree</field>
|
||||||
|
<field name="model">l10n_latam.document.type</field>
|
||||||
|
<field name="inherit_id" ref="l10n_latam_invoice_document.view_document_type_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name='doc_code_prefix' position="after">
|
||||||
|
<field name='l10n_ar_letter'/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_document_type_filter" model="ir.ui.view">
|
||||||
|
<field name="name">l10n_latam.document.type.filter</field>
|
||||||
|
<field name="model">l10n_latam.document.type</field>
|
||||||
|
<field name="inherit_id" ref="l10n_latam_invoice_document.view_document_type_filter"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name='code' position="after">
|
||||||
|
<field name='l10n_ar_letter'/>
|
||||||
|
<filter string="Argentinean Documents" name="localization" domain="[('country_id', '=', %(base.ar)d)]"/>
|
||||||
|
</field>
|
||||||
|
<group>
|
||||||
|
<filter string="Document Letter" name="l10n_ar_letter" context="{'group_by':'l10n_ar_letter'}"/>
|
||||||
|
</group>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record model="ir.actions.act_window" id="action_document_type_argentina">
|
||||||
|
<field name="name">Document Types</field>
|
||||||
|
<field name="res_model">l10n_latam.document.type</field>
|
||||||
|
<field name="context">{'search_default_localization': 1}</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem action="action_document_type_argentina" id="menu_document_type_argentina" sequence="5" parent="menu_afip_config"/>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
327
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/views/report_invoice.xml
Normal file
327
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/views/report_invoice.xml
Normal file
|
|
@ -0,0 +1,327 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<!-- this header can be used on any Argentinean report, to be useful some variables should be passed -->
|
||||||
|
<template id="custom_header">
|
||||||
|
<div>
|
||||||
|
<div class="row">
|
||||||
|
<div name="left-upper-side" class="col-5" t-if="not pre_printed_report">
|
||||||
|
<img t-if="o.company_id.logo" t-att-src="image_data_uri(o.company_id.logo)" style="max-height: 45px;" alt="Logo"/>
|
||||||
|
</div>
|
||||||
|
<div name="center-upper" class="col-2 text-center" t-att-style="'color: %s;' % o.company_id.primary_color">
|
||||||
|
<span style="display: inline-block; text-align: center; line-height: 8px;">
|
||||||
|
<h1 style="line-height: 35px;">
|
||||||
|
<strong><span t-out="not pre_printed_report and document_letter or ' '"/></strong>
|
||||||
|
</h1>
|
||||||
|
<span style="font-size: x-small;" t-out="not pre_printed_report and document_legend or ' '"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div name="right-upper-side" class="col-5 text-end" style="padding-left: 0px;" t-if="not pre_printed_report">
|
||||||
|
|
||||||
|
<!-- (6) Titulo de Documento -->
|
||||||
|
<h4 t-att-style="'color: %s;' % o.company_id.primary_color"><strong>
|
||||||
|
<span t-out="report_name"/>
|
||||||
|
</strong></h4>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6" style="padding-right: 0px;">
|
||||||
|
<t t-if="not pre_printed_report">
|
||||||
|
<!-- (1) Nombre de Fantasia -->
|
||||||
|
<!-- (2) Apellido y Nombre o Razon Social -->
|
||||||
|
<span t-field="o.company_id.partner_id.name"/>
|
||||||
|
|
||||||
|
<!-- (3) Domicilio Comercial (Domicilio Fiscal is the same) -->
|
||||||
|
<br/>
|
||||||
|
<div></div>
|
||||||
|
<!-- we dont use the address widget as it adds a new line on the phone and we want to reduce at maximum lines qty -->
|
||||||
|
<t t-out="' - '.join([item for item in [
|
||||||
|
', '.join([item for item in [header_address.street, header_address.street2] if item]),
|
||||||
|
header_address.city,
|
||||||
|
header_address.state_id and header_address.state_id.name,
|
||||||
|
header_address.zip,
|
||||||
|
header_address.country_id and header_address.country_id.name] if item])"/><span t-if="header_address.phone"> - </span><span t-if="header_address.phone" style="white-space: nowrap;" t-out="'Tel: ' + header_address.phone"/>
|
||||||
|
<br/>
|
||||||
|
<span t-att-style="'color: %s;' % o.company_id.primary_color" t-out="' - '.join([item for item in [(header_address.website or '').replace('https://', '').replace('http://', ''), header_address.email] if item])"/>
|
||||||
|
</t>
|
||||||
|
</div>
|
||||||
|
<div class="col-6 text-end" style="padding-left: 0px;">
|
||||||
|
|
||||||
|
<t t-if="not pre_printed_report">
|
||||||
|
<!-- (7) Numero punto venta - (8) numero de documento -->
|
||||||
|
<span t-att-style="'color: %s;' % o.company_id.secondary_color">Nro: </span><span t-out="report_number"/>
|
||||||
|
</t>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<!-- (9) Fecha -->
|
||||||
|
<span t-att-style="'color: %s;' % o.company_id.secondary_color">Date: </span><span t-out="report_date" t-options='{"widget": "date"}'/>
|
||||||
|
|
||||||
|
<t t-if="not pre_printed_report">
|
||||||
|
<!-- (5) Condicion de IVA / Responsabilidad -->
|
||||||
|
<!-- (10) CUIT -->
|
||||||
|
<br/>
|
||||||
|
<span t-field="o.company_id.l10n_ar_afip_responsibility_type_id"/><span t-att-style="'color: %s;' % o.company_id.secondary_color"> - CUIT: </span><span t-field="o.company_id.partner_id.l10n_ar_formatted_vat"/>
|
||||||
|
|
||||||
|
<!-- (11) IIBB: -->
|
||||||
|
<!-- (12) Inicio de actividades -->
|
||||||
|
<br/><span t-att-style="'color: %s;' % o.company_id.secondary_color">IIBB: </span><span t-out="o.company_id.l10n_ar_gross_income_type == 'exempt' and 'Exento' or o.company_id.l10n_ar_gross_income_number"/><span t-att-style="'color: %s;' % o.company_id.secondary_color"> - Activities Start: </span><span t-field="o.company_id.l10n_ar_afip_start_date"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="report_invoice_document" inherit_id="account.report_invoice_document" primary="True">
|
||||||
|
<!-- custom header and footer -->
|
||||||
|
<t t-set="o" position="after">
|
||||||
|
<t t-set="custom_header" t-value="'l10n_ar.custom_header'"/>
|
||||||
|
<t t-set="report_date" t-value="o.invoice_date"/>
|
||||||
|
<t t-set="report_number" t-value="o.l10n_latam_document_number"/>
|
||||||
|
<t t-set="pre_printed_report" t-value="report_type == 'pdf' and o.journal_id.l10n_ar_afip_pos_system == 'II_IM'"/>
|
||||||
|
<t t-set="document_letter" t-value="o.l10n_latam_document_type_id.l10n_ar_letter"/>
|
||||||
|
<t t-set="document_legend" t-value="o.l10n_latam_document_type_id.code and 'Cod. %02d' % int(o.l10n_latam_document_type_id.code) or ''"/>
|
||||||
|
<t t-set="report_name" t-value="o.l10n_latam_document_type_id.report_name"/>
|
||||||
|
<t t-set="header_address" t-value="o.journal_id.l10n_ar_afip_pos_partner_id"/>
|
||||||
|
|
||||||
|
<t t-set="custom_footer">
|
||||||
|
<div class="row">
|
||||||
|
<div name="footer_left_column" class="col-8 text-start">
|
||||||
|
</div>
|
||||||
|
<div name="footer_right_column" class="col-4 text-end">
|
||||||
|
<div name="pager" t-if="report_type == 'pdf'">
|
||||||
|
Page: <span class="page"/> / <span class="topage"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
<t t-set="fiscal_bond" t-value="o.journal_id.l10n_ar_afip_pos_system in ['BFERCEL', 'BFEWS']"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<!-- remove default partner address -->
|
||||||
|
<t t-set="address" position="replace"/>
|
||||||
|
<xpath expr="//div[@name='address_not_same_as_shipping']" position="replace">
|
||||||
|
<div name="address_not_same_as_shipping"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//div[@name='address_same_as_shipping']" position="replace">
|
||||||
|
<div name="address_same_as_shipping"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//div[@name='no_shipping']" position="replace">
|
||||||
|
<div name="no_shipping"/>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<!-- remove default document title -->
|
||||||
|
<h2 position="replace"/>
|
||||||
|
|
||||||
|
<!-- NCM column for fiscal bond -->
|
||||||
|
<th name="th_description" position="after">
|
||||||
|
<th t-if="fiscal_bond" name="th_ncm_code" class="text-start"><span>NCM</span></th>
|
||||||
|
</th>
|
||||||
|
<td name="account_invoice_line_name" position="after">
|
||||||
|
<td t-if="fiscal_bond" name="ncm_code"><span t-field="line.product_id.l10n_ar_ncm_code"/></td>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<!-- use latam prices (to include/exclude VAT) -->
|
||||||
|
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal" position="before">
|
||||||
|
<t t-set="l10n_ar_values" t-value="line._l10n_ar_prices_and_taxes()"/>
|
||||||
|
</t>
|
||||||
|
<xpath expr="//span[@t-field='line.price_unit']" position="attributes">
|
||||||
|
<attribute name="t-field"></attribute>
|
||||||
|
<attribute name="t-out">l10n_ar_values['price_unit']</attribute>
|
||||||
|
<attribute name="t-options">{"widget": "float", "display_currency": o.currency_id, "decimal_precision": "Product Price"}</attribute>
|
||||||
|
</xpath>
|
||||||
|
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal" position="attributes">
|
||||||
|
<attribute name="t-value">current_subtotal + l10n_ar_values['price_subtotal']</attribute>
|
||||||
|
</t>
|
||||||
|
<!-- if b2c we still wants the latam subtotal -->
|
||||||
|
<t t-set="current_subtotal" t-value="current_subtotal + line.price_total" position="attributes">
|
||||||
|
<attribute name="t-value">current_subtotal + l10n_ar_values['price_subtotal']</attribute>
|
||||||
|
</t>
|
||||||
|
<!-- label amount for subtotal column on b2b and b2c -->
|
||||||
|
<xpath expr="//th[@name='th_subtotal']/span[@groups='account.group_show_line_subtotals_tax_included']" position="replace">
|
||||||
|
<span groups="account.group_show_line_subtotals_tax_included">Amount</span>
|
||||||
|
</xpath>
|
||||||
|
<span t-field="line.price_subtotal" position="attributes">
|
||||||
|
<attribute name="t-field"></attribute>
|
||||||
|
<attribute name="t-out">l10n_ar_values['price_subtotal']</attribute>
|
||||||
|
<attribute name="t-options">{"widget": "monetary", "display_currency": o.currency_id}</attribute>
|
||||||
|
</span>
|
||||||
|
<!-- if b2c we still wants the latam subtotal -->
|
||||||
|
<span t-field="line.price_total" position="attributes">
|
||||||
|
<attribute name="t-field"></attribute>
|
||||||
|
<attribute name="t-out">l10n_ar_values['price_subtotal']</attribute>
|
||||||
|
<attribute name="t-options">{"widget": "monetary", "display_currency": o.currency_id}</attribute>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<t t-set="tax_totals" position="attributes">
|
||||||
|
<attribute name="t-value">o._l10n_ar_get_invoice_totals_for_report()</attribute>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<!-- use column vat instead of taxes and only if vat discriminated -->
|
||||||
|
<xpath expr="//th[@name='th_taxes']" position="replace">
|
||||||
|
<th name="th_taxes"
|
||||||
|
t-attf-class="text-start {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"
|
||||||
|
t-if="not o._l10n_ar_include_vat()">
|
||||||
|
<span t-if="o.company_id.country_id.code == 'AR'">% VAT</span>
|
||||||
|
<span t-else="">Taxes</span>
|
||||||
|
</th>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<xpath expr="//span[@id='line_tax_ids']/.." position="attributes">
|
||||||
|
<attribute name="t-if">not o._l10n_ar_include_vat()</attribute>
|
||||||
|
</xpath>
|
||||||
|
<span id="line_tax_ids" position="attributes">
|
||||||
|
<attribute name="t-out">', '.join(map(lambda x: (x.description or x.name), line.tax_ids.filtered(lambda x: x.tax_group_id.l10n_ar_vat_afip_code)))</attribute>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<!-- remove payment reference that is not used in Argentina -->
|
||||||
|
<xpath expr="//span[@t-field='o.payment_reference']/../.." position="replace"/>
|
||||||
|
|
||||||
|
<!-- replace information section and usage argentinean style -->
|
||||||
|
<div id="informations" position="replace">
|
||||||
|
<div id="informations" class="row mt8 mb8">
|
||||||
|
<div class="col-6">
|
||||||
|
|
||||||
|
<!-- IDENTIFICACION (ADQUIRIENTE-LOCATARIO-PRESTARIO) -->
|
||||||
|
|
||||||
|
<!-- (14) Apellido uy Nombre: Denominicacion o Razon Soclial -->
|
||||||
|
<t t-if="o.is_sale_document(include_receipts=True)"><strong>Customer: </strong></t>
|
||||||
|
<t t-else=""><strong>Supplier: </strong></t>
|
||||||
|
<span t-field="o.partner_id.commercial_partner_id.name"/>
|
||||||
|
|
||||||
|
<!-- (15) Domicilio Comercial -->
|
||||||
|
<br/>
|
||||||
|
<span t-field="o.partner_id" t-options="{'widget': 'contact', 'fields': ['address'], 'no_marker': true, 'no_tag_br': True}"/>
|
||||||
|
|
||||||
|
<!-- (16) Responsabilidad AFIP -->
|
||||||
|
<strong>VAT Cond: </strong><span t-field="o.partner_id.l10n_ar_afip_responsibility_type_id"/>
|
||||||
|
|
||||||
|
<!-- (17) CUIT -->
|
||||||
|
<t t-if="o.partner_id.vat and o.partner_id.l10n_latam_identification_type_id and o.partner_id.l10n_latam_identification_type_id.l10n_ar_afip_code != '99'">
|
||||||
|
<br/><strong><t t-out="o.partner_id.l10n_latam_identification_type_id.name or o.company_id.account_fiscal_country_id.vat_label" id="inv_tax_id_label"/>:</strong> <span t-out="o.partner_id.l10n_ar_formatted_vat if o.partner_id.l10n_ar_vat else o.partner_id.vat"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
|
||||||
|
<t t-if="o.invoice_date_due">
|
||||||
|
<strong>Due Date: </strong>
|
||||||
|
<span t-field="o.invoice_date_due"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<t t-if="o.invoice_payment_term_id" name="payment_term">
|
||||||
|
<br/><strong>Payment Terms: </strong><span t-field="o.invoice_payment_term_id.name"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<t t-if="o.invoice_origin">
|
||||||
|
<br/><strong>Source:</strong>
|
||||||
|
<span t-field="o.invoice_origin"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<t t-if="o.ref">
|
||||||
|
<br/><strong>Reference:</strong>
|
||||||
|
<span t-field="o.ref"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<!-- (18) REMITOS -->
|
||||||
|
<!-- We do not have remitos implement yet. print here the remito number when we have it -->
|
||||||
|
|
||||||
|
<t t-if="o.invoice_incoterm_id">
|
||||||
|
<br/><strong>Incoterm:</strong><span t-field="o.invoice_incoterm_id.name"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- we remove the ml auto and also give more space to avoid multiple lines on tax detail -->
|
||||||
|
<xpath expr="//div[@id='total']/div" position="attributes">
|
||||||
|
<attribute name="t-attf-class">#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'}</attribute>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<xpath expr="//div[@id='total']/div" position="before">
|
||||||
|
<div t-attf-class="#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'}">
|
||||||
|
|
||||||
|
<t t-if="o.l10n_ar_afip_concept in ['2', '3', '4'] and o.l10n_ar_afip_service_start and o.l10n_ar_afip_service_end">
|
||||||
|
<strong>Invoiced period: </strong><span t-field="o.l10n_ar_afip_service_start"/> to <span t-field="o.l10n_ar_afip_service_end"/>
|
||||||
|
</t>
|
||||||
|
<t t-if="o.currency_id != o.company_id.currency_id">
|
||||||
|
<br/><strong>Currency: </strong><span t-out="'%s - %s' % (o.currency_id.name, o.currency_id.currency_unit_label)"/>
|
||||||
|
<br/><strong>Exchange rate: </strong> <span t-field="o.l10n_ar_currency_rate"/>
|
||||||
|
</t>
|
||||||
|
<!-- Show CBU for FACTURA DE CREDITO ELECTRONICA MiPyMEs and NOTA DE DEBITO ELECTRONICA MiPyMEs -->
|
||||||
|
<t t-if="o.l10n_latam_document_type_id.code in ['201', '206', '211', '202', '207', '212'] and o.partner_bank_id">
|
||||||
|
<br/><strong>CBU for payment: </strong><span t-out="o.partner_bank_id.acc_number or '' if o.partner_bank_id.acc_type == 'cbu' else ''"/>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<!-- Show total amount in letters for MiPyMEs document types according to the law
|
||||||
|
http://biblioteca.afip.gob.ar/dcp/LEY_C_027440_2018_05_09 article 5.f -->
|
||||||
|
<xpath expr="//div[@id='total']/div/table" position="after">
|
||||||
|
<t t-if="o.l10n_latam_document_type_id.code in ['201', '202', '203', '206', '207', '208', '211', '212', '213']">
|
||||||
|
<strong>Son: </strong><span t-out="o.currency_id.with_context(lang='es_AR').amount_to_text(o.amount_total)"/>
|
||||||
|
</t>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<!-- RG 5003: Add legend for 'A' documents that have a Monotribuista receptor -->
|
||||||
|
<div name="comment" position="after">
|
||||||
|
<p t-if="o.partner_id.l10n_ar_afip_responsibility_type_id.code in ['6', '13'] and o.l10n_latam_document_type_id.l10n_ar_letter == 'A'" >
|
||||||
|
El crédito fiscal discriminado en el presente comprobante, sólo podrá ser computado a efectos del Régimen de Sostenimiento e Inclusión Fiscal para Pequeños Contribuyentes de la Ley Nº 27.618
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<t t-call="account.document_tax_totals" position="attributes">
|
||||||
|
<attribute name="t-call">l10n_ar.document_tax_totals</attribute>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<div id="qrcode" position="after">
|
||||||
|
<!-- RG 5614/2024: Show ARCA VAT and Other National Internal Taxes -->
|
||||||
|
<div t-attf-class="#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'}">
|
||||||
|
<table class="table table-sm table-borderless" style="page-break-inside: avoid;" t-if="tax_totals.get('detail_ar_tax')">
|
||||||
|
<th class="border-black" style="border-bottom: 1px solid" colspan="2">
|
||||||
|
Fiscal Transparency Regime for the Final Consumer (Law 27.743)
|
||||||
|
</th>
|
||||||
|
<t t-foreach="tax_totals['detail_ar_tax']" t-as="detail">
|
||||||
|
<tr>
|
||||||
|
<td class="text-end"><strong t-esc="detail['name']"/></td>
|
||||||
|
<td class="text-end">
|
||||||
|
<span
|
||||||
|
t-att-class="oe_subtotal_footer_separator"
|
||||||
|
t-esc="detail['formatted_amount_tax']"
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</t>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="document_tax_totals" inherit_id="account.document_tax_totals" primary="True">
|
||||||
|
<xpath expr="//t[@t-foreach]/tr" position="attributes">
|
||||||
|
<!-- Only for the Untaxed Amount -->
|
||||||
|
<attribute name="t-if">not o._l10n_ar_include_vat()</attribute>
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- FIXME: Temp fix to allow fetching invoice_documemt in Studio Reports with localisation -->
|
||||||
|
<template id="report_invoice" inherit_id="account.report_invoice">
|
||||||
|
<xpath expr='//t[@t-call="account.report_invoice_document"]' position="after">
|
||||||
|
<t t-if="o._get_name_invoice_report() == 'l10n_ar.report_invoice_document'"
|
||||||
|
t-call="l10n_ar.report_invoice_document" t-lang="lang"/>
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="report_invoice_with_payments" inherit_id="account.report_invoice_with_payments">
|
||||||
|
<xpath expr='//t[@t-call="account.report_invoice_document"]' position="after">
|
||||||
|
<t t-if="o._get_name_invoice_report() == 'l10n_ar.report_invoice_document'"
|
||||||
|
t-call="l10n_ar.report_invoice_document" t-lang="lang"/>
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record model="ir.ui.view" id="view_company_form">
|
||||||
|
<field name="name">res.company.form.inherit</field>
|
||||||
|
<field name="inherit_id" ref="base.view_company_form"/>
|
||||||
|
<field name="model">res.company</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="vat" position="after">
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_id" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('country_code', '!=', 'AR')]}"/>
|
||||||
|
<label for="l10n_ar_gross_income_number" string="Gross Income" attrs="{'invisible': [('country_code', '!=', 'AR')]}"/>
|
||||||
|
<div attrs="{'invisible': [('country_code', '!=', 'AR')]}" name="gross_income">
|
||||||
|
<field name="l10n_ar_gross_income_type" class="oe_inline"/>
|
||||||
|
<field name="l10n_ar_gross_income_number" placeholder="Number..." class="oe_inline" attrs="{'invisible': [('l10n_ar_gross_income_type', 'in', [False, 'exempt'])], 'required': [('l10n_ar_gross_income_type', 'not in', [False, 'exempt'])]}"/>
|
||||||
|
</div>
|
||||||
|
<field name="l10n_ar_afip_start_date" attrs="{'invisible': [('country_code', '!=', 'AR')]}"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="res_config_settings_view_form">
|
||||||
|
<field name="name">res.config.settings.view.form</field>
|
||||||
|
<field name="model">res.config.settings</field>
|
||||||
|
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//div[@data-key='account']/div" position="after">
|
||||||
|
<div id="argentina_localization_section" invisible="1">
|
||||||
|
<h2 attrs="{'invisible':[('country_code', '!=', 'AR')]}">Argentinean Localization</h2>
|
||||||
|
<div class="row mt16 o_settings_container" id="argentina_localization" attrs="{'invisible':[('country_code', '!=', 'AR')]}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="view_res_country_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.country.form</field>
|
||||||
|
<field name="model">res.country</field>
|
||||||
|
<field name="inherit_id" ref="base.view_country_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="code" position="after">
|
||||||
|
<field name="l10n_ar_afip_code" groups="base.group_no_one"/>
|
||||||
|
<field name="l10n_ar_natural_vat"/>
|
||||||
|
<field name="l10n_ar_legal_entity_vat"/>
|
||||||
|
<field name="l10n_ar_other_vat"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_res_country_tree" model="ir.ui.view">
|
||||||
|
<field name="name">res.country.tree</field>
|
||||||
|
<field name="model">res.country</field>
|
||||||
|
<field name="inherit_id" ref="base.view_country_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="code" position="after">
|
||||||
|
<field name="l10n_ar_afip_code" groups="base.group_no_one"/>
|
||||||
|
<field name="l10n_ar_natural_vat"/>
|
||||||
|
<field name="l10n_ar_legal_entity_vat"/>
|
||||||
|
<field name="l10n_ar_other_vat"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_currency_form">
|
||||||
|
<field name="name">res.currency.form</field>
|
||||||
|
<field name="inherit_id" ref="base.view_currency_form"/>
|
||||||
|
<field name="model">res.currency</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="name" position="after">
|
||||||
|
<field name="l10n_ar_afip_code"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="base_view_partner_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.form</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="vat" position="after">
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_id" string="AFIP Responsibility" options="{'no_open': True, 'no_create': True}" attrs="{'readonly': [('parent_id','!=',False)]}"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_partner_property_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.form</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="account.view_partner_property_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<xpath expr="//page[@name='accounting']/group" position="inside">
|
||||||
|
<group string="Accounting Documents" name="accounting_documents">
|
||||||
|
<field name="l10n_ar_special_purchase_document_type_ids" widget="many2many_tags"/>
|
||||||
|
</group>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<field name="property_account_position_id" position="after">
|
||||||
|
<label for="l10n_ar_gross_income_number" string="Gross Income"/>
|
||||||
|
<div name="gross_income">
|
||||||
|
<field name="l10n_ar_gross_income_type" class="oe_inline"/>
|
||||||
|
<field name="l10n_ar_gross_income_number" placeholder="Number..." class="oe_inline" attrs="{'invisible': [('l10n_ar_gross_income_type', 'not in', ['multilateral', 'local'])], 'required': [('l10n_ar_gross_income_type', 'in', ['multilateral', 'local'])]}"/>
|
||||||
|
</div>
|
||||||
|
</field>
|
||||||
|
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_res_partner_filter" model="ir.ui.view">
|
||||||
|
<field name="name">view.res.partner.filter.inherit</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_res_partner_filter"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="category_id" position="after">
|
||||||
|
<field name="l10n_ar_afip_responsibility_type_id"/>
|
||||||
|
</field>
|
||||||
|
<filter name="salesperson" position="before">
|
||||||
|
<filter string="AFIP Responsibility Type" name="l10n_ar_afip_responsibility_type_id_filter" context="{'group_by': 'l10n_ar_afip_responsibility_type_id'}"/>
|
||||||
|
</filter>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
37
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/views/uom_uom_view.xml
Normal file
37
odoo-bringout-oca-ocb-l10n_ar/l10n_ar/views/uom_uom_view.xml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="product_uom_tree_view" model="ir.ui.view">
|
||||||
|
<field name="name">uom.uom.tree</field>
|
||||||
|
<field name="model">uom.uom</field>
|
||||||
|
<field name="inherit_id" ref="uom.product_uom_tree_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="l10n_ar_afip_code"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_uom_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">uom.uom.form</field>
|
||||||
|
<field name="model">uom.uom</field>
|
||||||
|
<field name="inherit_id" ref="uom.product_uom_form_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="rounding" position="after">
|
||||||
|
<field name="l10n_ar_afip_code"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="product_uom_categ_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">uom.category.form</field>
|
||||||
|
<field name="model">uom.category</field>
|
||||||
|
<field name="inherit_id" ref="uom.product_uom_categ_form_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="rounding" position="after">
|
||||||
|
<field name="l10n_ar_afip_code"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
43
odoo-bringout-oca-ocb-l10n_ar/pyproject.toml
Normal file
43
odoo-bringout-oca-ocb-l10n_ar/pyproject.toml
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
[project]
|
||||||
|
name = "odoo-bringout-oca-ocb-l10n_ar"
|
||||||
|
version = "16.0.0"
|
||||||
|
description = "Argentina - Accounting - Odoo addon"
|
||||||
|
authors = [
|
||||||
|
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||||
|
]
|
||||||
|
dependencies = [
|
||||||
|
"odoo-bringout-oca-ocb-l10n_latam_invoice_document>=16.0.0",
|
||||||
|
"odoo-bringout-oca-ocb-l10n_latam_base>=16.0.0",
|
||||||
|
"requests>=2.25.1"
|
||||||
|
]
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">= 3.11"
|
||||||
|
classifiers = [
|
||||||
|
"Development Status :: 5 - Production/Stable",
|
||||||
|
"Intended Audience :: Developers",
|
||||||
|
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
|
"Topic :: Office/Business",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
homepage = "https://github.com/bringout/0"
|
||||||
|
repository = "https://github.com/bringout/0"
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["hatchling"]
|
||||||
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
|
[tool.hatch.metadata]
|
||||||
|
allow-direct-references = true
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel]
|
||||||
|
packages = ["l10n_ar"]
|
||||||
|
|
||||||
|
[tool.rye]
|
||||||
|
managed = true
|
||||||
|
dev-dependencies = [
|
||||||
|
"pytest>=8.4.1",
|
||||||
|
]
|
||||||
49
odoo-bringout-oca-ocb-l10n_bo/README.md
Normal file
49
odoo-bringout-oca-ocb-l10n_bo/README.md
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
# Bolivia - Accounting
|
||||||
|
|
||||||
|
|
||||||
|
Bolivian accounting chart and tax localization.
|
||||||
|
|
||||||
|
Plan contable boliviano e impuestos de acuerdo a disposiciones vigentes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-ocb-l10n_bo
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
- l10n_multilang
|
||||||
|
|
||||||
|
## Manifest Information
|
||||||
|
|
||||||
|
- **Name**: Bolivia - Accounting
|
||||||
|
- **Version**: 2.0
|
||||||
|
- **Category**: Accounting/Localizations/Account Charts
|
||||||
|
- **License**: LGPL-3
|
||||||
|
- **Installable**: False
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `l10n_bo`.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This package maintains the original LGPL-3 license from the upstream Odoo project.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- Overview: doc/OVERVIEW.md
|
||||||
|
- Architecture: doc/ARCHITECTURE.md
|
||||||
|
- Models: doc/MODELS.md
|
||||||
|
- Controllers: doc/CONTROLLERS.md
|
||||||
|
- Wizards: doc/WIZARDS.md
|
||||||
|
- Install: doc/INSTALL.md
|
||||||
|
- Usage: doc/USAGE.md
|
||||||
|
- Configuration: doc/CONFIGURATION.md
|
||||||
|
- Dependencies: doc/DEPENDENCIES.md
|
||||||
|
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||||
|
- FAQ: doc/FAQ.md
|
||||||
32
odoo-bringout-oca-ocb-l10n_bo/doc/ARCHITECTURE.md
Normal file
32
odoo-bringout-oca-ocb-l10n_bo/doc/ARCHITECTURE.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Architecture
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||||
|
V --> C[Controllers]
|
||||||
|
V --> W[Wizards – Transient Models]
|
||||||
|
C --> M[Models and ORM]
|
||||||
|
W --> M
|
||||||
|
M --> R[Reports]
|
||||||
|
DX[Data XML] --> M
|
||||||
|
S[Security – ACLs and Groups] -. enforces .-> M
|
||||||
|
|
||||||
|
subgraph L10n_bo Module - l10n_bo
|
||||||
|
direction LR
|
||||||
|
M:::layer
|
||||||
|
W:::layer
|
||||||
|
C:::layer
|
||||||
|
V:::layer
|
||||||
|
R:::layer
|
||||||
|
S:::layer
|
||||||
|
DX:::layer
|
||||||
|
end
|
||||||
|
|
||||||
|
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes
|
||||||
|
- Views include tree/form/kanban templates and report templates.
|
||||||
|
- Controllers provide website/portal routes when present.
|
||||||
|
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||||
|
- Data XML loads data/demo records; Security defines groups and access.
|
||||||
3
odoo-bringout-oca-ocb-l10n_bo/doc/CONFIGURATION.md
Normal file
3
odoo-bringout-oca-ocb-l10n_bo/doc/CONFIGURATION.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
Refer to Odoo settings for l10n_bo. Configure related models, access rights, and options as needed.
|
||||||
3
odoo-bringout-oca-ocb-l10n_bo/doc/CONTROLLERS.md
Normal file
3
odoo-bringout-oca-ocb-l10n_bo/doc/CONTROLLERS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Controllers
|
||||||
|
|
||||||
|
This module does not define custom HTTP controllers.
|
||||||
5
odoo-bringout-oca-ocb-l10n_bo/doc/DEPENDENCIES.md
Normal file
5
odoo-bringout-oca-ocb-l10n_bo/doc/DEPENDENCIES.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
|
||||||
|
- [l10n_multilang](../../odoo-bringout-oca-ocb-l10n_multilang)
|
||||||
4
odoo-bringout-oca-ocb-l10n_bo/doc/FAQ.md
Normal file
4
odoo-bringout-oca-ocb-l10n_bo/doc/FAQ.md
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
# FAQ
|
||||||
|
|
||||||
|
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||||
|
- Q: How to enable? A: Start server with --addon l10n_bo or install in UI.
|
||||||
7
odoo-bringout-oca-ocb-l10n_bo/doc/INSTALL.md
Normal file
7
odoo-bringout-oca-ocb-l10n_bo/doc/INSTALL.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-ocb-l10n_bo"
|
||||||
|
# or
|
||||||
|
uv pip install odoo-bringout-oca-ocb-l10n_bo"
|
||||||
|
```
|
||||||
11
odoo-bringout-oca-ocb-l10n_bo/doc/MODELS.md
Normal file
11
odoo-bringout-oca-ocb-l10n_bo/doc/MODELS.md
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Models
|
||||||
|
|
||||||
|
Detected core models and extensions in l10n_bo.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes
|
||||||
|
- Classes show model technical names; fields omitted for brevity.
|
||||||
|
- Items listed under _inherit are extensions of existing models.
|
||||||
6
odoo-bringout-oca-ocb-l10n_bo/doc/OVERVIEW.md
Normal file
6
odoo-bringout-oca-ocb-l10n_bo/doc/OVERVIEW.md
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Overview
|
||||||
|
|
||||||
|
Packaged Odoo addon: l10n_bo. Provides features documented in upstream Odoo 16 under this addon.
|
||||||
|
|
||||||
|
- Source: OCA/OCB 16.0, addon l10n_bo
|
||||||
|
- License: LGPL-3
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue