openerp-l10n-ar-localization team mailing list archive
-
openerp-l10n-ar-localization team
-
Mailing list archive
-
Message #00237
[Merge] lp:~dariokdg/openerp-l10n-ar-localization/wsfex into lp:openerp-l10n-ar-localization
Darío De Giacomo has proposed merging lp:~dariokdg/openerp-l10n-ar-localization/wsfex into lp:openerp-l10n-ar-localization.
Requested reviews:
OpenERP - Team de Localización Argentina (openerp-l10n-ar-localization)
For more details, see:
https://code.launchpad.net/~dariokdg/openerp-l10n-ar-localization/wsfex/+merge/197217
[l10n-ar-invoice][FIX] 'product' not being considered as a type. added.
[l10n-ar-wsafip-fex][ADD] Functionality of dynamic views (common/FE/FEX) within invoice. Code cleaning. [ADD] List of currencies, countries and UoM. [FIX] Minor bugfixes. [MOD] Domain in field dst_merc so that is impossible to select a country that has not afip_code filled properly. [MOD] Various fixes.
--
https://code.launchpad.net/~dariokdg/openerp-l10n-ar-localization/wsfex/+merge/197217
Your team OpenERP - Team de Localización Argentina is requested to review the proposed merge of lp:~dariokdg/openerp-l10n-ar-localization/wsfex into lp:openerp-l10n-ar-localization.
=== modified file 'l10n_ar_account_check_debit_note/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/i18n/en_AR.mo' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/i18n/en_AR.po' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/invoice.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/invoice_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_debit_note/voucher.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/account.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/account_check_duo.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/account_check_duo_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/account_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/account_voucher.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/account_voucher_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/partner_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/report/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/report/report_check_issued.odt' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/res_partner_bank.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/security/account_check_security.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/security/ir.model.access.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_issued/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_issued/check_issued_hreject.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_issued/view_issued_check_hreject.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/check_deposit.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/check_dreject.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/check_hreject.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/check_sold.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_deposit.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_dreject.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_hreject.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_sold.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/workflow_issued.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_account_check_duo/workflow_third.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/data/res_bank.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/i18n/es_AR.po' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/l10n_ar_bank.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/l10n_ar_bank.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/l10n_ar_bank_menu.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/security/groups.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/security/ir.model.access.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/test/l10n_ar_banks_wizard.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/.directory' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/banks_def.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/cache.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/geosearch.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/strcmp.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/wiz_l10n_ar_bank.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_bank/wizard/wiz_l10n_ar_bank.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/base_vat.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_base_vat/test/l10n_ar_base_vat.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/data/account_types.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_chart_generic/i18n/es_AR.po' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/account.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/afip.py' (properties changed: +x to -x)
--- l10n_ar_invoice/afip.py 2013-11-04 16:53:48 +0000
+++ l10n_ar_invoice/afip.py 2013-11-29 14:53:16 +0000
@@ -95,14 +95,14 @@
'active': fields.boolean('Active'),
'product_types': fields.char('Product types',
help='Only use products with this product types in this journals. '
- 'Types must be a subset of adjust, consu and service separated by commas.'),
+ 'Types must be a subset of adjust, product, consu and service separated by commas.'),
}
def _check_product_types(self, cr, uid, ids, context=None):
for jc in self.browse(cr, uid, ids, context=context):
if jc.product_types:
types = set(jc.product_types.split(','))
- res = types.issubset(['adjust','consu','service'])
+ res = types.issubset(['adjust','consu','service','product'])
else:
res = True
return res
@@ -132,14 +132,14 @@
'active': fields.boolean('Active'),
'product_types': fields.char('Product types',
help='Translate this product types to this AFIP concept. '
- 'Types must be a subset of adjust, consu and service separated by commas.',required=True),
+ 'Types must be a subset of adjust, product, consu and service separated by commas.',required=True),
}
def _check_product_types(self, cr, uid, ids, context=None):
for ct in self.browse(cr, uid, ids, context=context):
if ct.product_types:
types = set(ct.product_types.split(','))
- res = types.issubset(['adjust','consu','service'])
+ res = types.issubset(['adjust','consu','service','product'])
else:
res = True
return res
=== modified file 'l10n_ar_invoice/config.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/country.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/afip.document_type.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/afip.journal_template.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/country.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/document_type.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/invoice_workflow.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/journal_class.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/partner.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/reports.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/responsability.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/data/responsability_class.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/i18n/es_AR.po' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/partner.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/report/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/report/invoice.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/report/invoice.rml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/security/ir.model.access.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/security/l10n_ar_invoice_security.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/bug_1042944.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/com_ri1.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/com_ri2.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/inv_ri2ri.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/inv_ri2rm.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/inv_rm2ri.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/test/partners.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/afip_document_type_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/afip_journal_class_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/afip_menuitem.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/afip_responsability_class_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/afip_responsability_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/country_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/invoice_config.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/journal_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_invoice/view/partner_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_partner_title/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_partner_title/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_partner_title/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_partner_title/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_partner_title/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_partner_title/data/res_partner_title.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/country.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/data/res_country_state.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_states/i18n/es_AR.po' (properties changed: +x to -x)
=== modified file 'l10n_ar_vat_reports/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_vat_reports/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_vat_reports/report/report_data.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_vat_reports/wizard/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_vat_reports/wizard/report_prompt.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_vat_reports/wizard/report_prompt.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/LICENSE' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/README' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/config.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/data/wsafip_config.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/data/wsafip_connection_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/data/wsafip_menuitem.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/data/wsafip_sequence.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/data/wsafip_server.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/data/wsafip_server_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/security/ir.model.access.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/security/wsafip_security.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/test/test_key.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/test/test_mime_signer.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/test/test_wsafip_service.yml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/wsafip_connection.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip/wsafip_server.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/AUTHORS' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/__openerp__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/config.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/afip.wsfe_error.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/invoice_workflow.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/journal_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/reports.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/wsafip_fe_config.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/wsafip_server.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/data/wsfe_error_view.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/invoice.py'
--- l10n_ar_wsafip_fe/invoice.py 2013-11-22 15:25:06 +0000
+++ l10n_ar_wsafip_fe/invoice.py 2013-11-29 14:53:16 +0000
@@ -24,6 +24,10 @@
import logging
_logger = logging.getLogger(__name__)
+<<<<<<< TREE
+=======
+
+>>>>>>> MERGE-SOURCE
# Number Filter
re_number = re.compile(r'\d{8}')
@@ -37,13 +41,28 @@
def _calc_concept(product_types):
if product_types == set(['consu']):
concept = '1'
+ elif product_types == set(['product']):
+ concept = '1'
+ elif product_types == set(['consu','product']):
+ concept = '1'
elif product_types == set(['service']):
concept = '2'
elif product_types == set(['consu','service']):
concept = '3'
+ elif product_types == set(['product','service']):
+ concept = '3'
+ elif product_types == set(['consu','product','service']):
+ concept = '3'
else:
concept = False
return concept
+
+ ####### MOD DARIO DE GIACOMO 18/11/2013 14:45hs.
+ ####### ------------------------------------------------------------------
+ ####### NO FUERON CONSIDERADOS LOS PRODUCTOS STOCKEABLES DE TYPE "product"
+ ####### PARA SER CONSIDERADOS COMO PRODUCTO DE 'afip_concept'
+ ####### FALTA AÑADIRLOS AL WIZARD DE CONFIGURACION PARA QUE SE AÑADAN
+ ####### EN EL 'Concept Type' del menu 'AFIP Configuration' en Settings.
class invoice(osv.osv):
def _get_concept(self, cr, uid, ids, name, args, context=None):
=== modified file 'l10n_ar_wsafip_fe/journal.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/report/__init__.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/report/invoice.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/report/invoice.rml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/security/ir.model.access.csv' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/security/wsafip_fe_security.xml' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/sslhttps.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fe/wsfe_error.py' (properties changed: +x to -x)
=== modified file 'l10n_ar_wsafip_fex/__openerp__.py'
--- l10n_ar_wsafip_fex/__openerp__.py 2013-11-22 15:25:53 +0000
+++ l10n_ar_wsafip_fex/__openerp__.py 2013-11-29 14:53:16 +0000
@@ -22,11 +22,18 @@
'author': 'OpenERP - Team de Localizaci\xc3\xb3n Argentina',
'category': 'Localization/Argentina',
'demo_xml': [],
- 'depends': ['l10n_ar_wsafip_fe'],
+ 'depends': ['l10n_ar_wsafip_fe',
+ 'l10n_ar_states'
+ ],
'description': '\n\nAPI e GUI para acceder a las Web Services de Factura Electr\xc3\xb3nica de Exportaci\xc3\xb3n de la AFIP\n\n',
- 'init_xml': [],
+ 'init_xml': [
+ 'data/res_country_afip_code.xml',
+ 'data/res_currency_afip_code.xml',
+ 'data/product_uom_afip_code.xml',
+ ],
'installable': True,
'license': 'AGPL-3',
+<<<<<<< TREE
'name': 'Argentina - Web Services de Factura Electr\xc3\xb3nica del AFIP',
'test': [ 'test/test_key.yml',
'test/partners.yml',
@@ -42,5 +49,18 @@
'security/wsafip_fex_security.xml',
'security/ir.model.access.csv'],
'version': '2.7.232',
+=======
+ 'name': 'Argentina - Web Services de F.E. de Exportaci\xc3\xb3n del AFIP',
+ 'update_xml': [
+ 'data/wsafip_server.xml',
+ 'data/invoice_view.xml',
+ 'data/invoice_workflow.xml',
+ 'data/journal_view.xml',
+ 'data/reports.xml',
+ 'data/wsafip_fex_config.xml',
+ 'data/res_config_view.xml',
+ ],
+ 'version': '2.7.223',
+>>>>>>> MERGE-SOURCE
'website': 'https://launchpad.net/~openerp-l10n-ar-localization'}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== modified file 'l10n_ar_wsafip_fex/config.py'
--- l10n_ar_wsafip_fex/config.py 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/config.py 2013-11-29 14:53:16 +0000
@@ -96,7 +96,7 @@
# Asigno el conector al AFIP
jou_ids = journal_obj.search(cr, uid, [('company_id','=',company.id),
- ('point_of_sale','=',ws.wsfe_point_of_sale),
+ ('point_of_sale','=',ws.wsfex_point_of_sale),
('type','=','sale')])
journal_obj.write(cr, uid, jou_ids, { 'afip_connection_id': conn_id })
@@ -111,9 +111,10 @@
else:
_logger.info("Journal '%s' cant be used." % journal.name)
- # Actualizo el código de impuestos de la AFIP en los impuestos locale.s
+ # Actualizo datos necesarios (idioma comprobante, incoterms, monedas y UoM) desde AFIP.
conn = conn_obj.browse(cr, uid, conn_id)
- conn.server_id.wsfe_update_tax(conn_id)
+ conn.server_id.wsfex_update_languages(conn_id) #######################################
+ conn.server_id.wsfex_update_incoterms(conn_id) #######################################
return True
@@ -129,6 +130,6 @@
'company_id': _default_company,
'wsfex_for_homologation': False,
}
-l10n_ar_wsafip_fe_config()
+l10n_ar_wsafip_fex_config()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== modified file 'l10n_ar_wsafip_fex/data/invoice_view.xml'
--- l10n_ar_wsafip_fex/data/invoice_view.xml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/data/invoice_view.xml 2013-11-29 14:53:16 +0000
@@ -23,43 +23,38 @@
<field name="name">account.invoice.afip.form</field>
<field name="inherit_id" ref="account.invoice_form" />
<field name="arch" type="xml">
- <field name="invoice_line" position="replace">
- <field context="{'partner_id': partner_id, 'price_type': context.get('price_type') or False, 'type': type}" name="invoice_line" on_change="onchange_invoice_line(invoice_line)">
- <tree string="Invoice lines" editable="bottom">
- <field name="product_id"
- on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
- <field name="name"/>
- <field name="company_id" invisible="1"/>
- <field name="account_id" groups="account.group_account_user"
- domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '=', 'other')]"
- on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
- <field name="account_analytic_id" groups="analytic.group_analytic_accounting"
- domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/>
- <field name="quantity"/>
- <field name="uos_id" groups="product.group_uom"
- on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
- <field name="price_unit"/>
- <field name="discount" groups="sale.group_discount_per_so_line"/>
- <field name="invoice_line_tax_id" widget="many2many_tags" context="{'type':parent.type}"
- domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]"/>
- <field name="price_subtotal"/>
- </tree>
- </field>
- </field>
-
- <notebook position="before">
- <field name='afip_concept' invisible="1"/>
- <group col="4" attrs="{'invisible':[('afip_concept','not in',['2','3'])]}">
- <field name='afip_service_start' attrs="{'required':[('afip_concept','in',['2','3'])]}"/>
- <field name='afip_service_end' attrs="{'required':[('afip_concept','in',['2','3'])]}"/>
- </group>
+ <xpath expr="/form/sheet/group/group/field[@name='date_invoice']" position="after">
+ <field name="afip_export_rspn" invisible="1"/>
+ </xpath>
+ <notebook>
+ <page string="Export Configuration" attrs="{'invisible': [('afip_export_rspn', '!=', 'EXT')]}" >
+ <group>
+ <group>
+ <field name="afip_export_concept" attrs="{'required': [('afip_export_rspn', '==', 'EXT')]}" colspan="2"/>
+ <field name="afip_export_lang_invoice" attrs="{'required': [('afip_export_rspn', '==', 'EXT')]}" colspan="2"/>
+ </group>
+ <group>
+ <field name="afip_export_incoterm" widget="selection" colspan="2" attrs="{'required': [('afip_export_rspn', '==', 'EXT'), ('afip_export_concept', '==', '1')]}"/>
+ <field name="afip_export_exist_perm" attrs="{'readonly': [('state', '!=', 'draft') ] }" on_change="onchange_permissions(afip_export_exist_perm)"/>
+ </group>
+ </group>
+ <field name="afip_export_permissions" attrs="{'readonly': [('state', '!=', 'draft')], 'required': [('afip_export_rspn', '==', 'EXT'),('afip_export_exist_perm', '==', 'S')], 'invisible': [('afip_export_exist_perm', '!=', 'S')] }">
+ <tree colors="grey:valid_permission==False; green:valid_permission==True" fonts="bold:valid_permission==True">
+ <field name="permission_code"/>
+ <field name="dst_merc"/>
+ <field name="valid_permission"/>
+ </tree>
+ <form>
+ <field name="permission_code"/>
+ <field name="dst_merc"/>
+ </form>
+ </field>
+ <button class="oe_highlight" string='Check Permissions' name='button_check_permissions' type='object' attrs="{'invisible': [('afip_export_exist_perm', '!=', 'S') or ('state', '!=', 'draft')]}"/>
+ <group>
+ <field name="afip_export_obs_com" class="oe_inline" placeholder="Observations..."/>
+ </group>
+ </page>
</notebook>
- <field name="move_id" position="after">
- <field name='afip_batch_number' invisible="1" readonly="1"/>
- <field name='afip_cae' readonly="1"/>
- <field name='afip_cae_due' readonly="1"/>
- <field name='afip_error_id' readonly="1"/>
- </field>
</field>
</record>
</data>
=== added file 'l10n_ar_wsafip_fex/data/invoice_workflow.xml'
--- l10n_ar_wsafip_fex/data/invoice_workflow.xml 1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/invoice_workflow.xml 2013-11-29 14:53:16 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C), 2012, OpenERP - Team de Localización Argentina.
+ https://launchpad.net/~openerp-l10n-ar-localization
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+ <data>
+ <record id="account.act_open" model="workflow.activity">
+ <field name="wkf_id" ref="account.wkf"/>
+ <field name="name">open</field>
+ <field name="action">afip_validation()
+action_date_assign()
+action_move_create()
+action_number()
+action_retrieve_cae()
+write({'state':'open'})</field>
+ <field name="kind">function</field>
+ </record>
+ <record id="account.t4" model="workflow.transition">
+ <field name="act_from" ref="account.act_draft"/>
+ <field name="act_to" ref="account.act_open"/>
+ <field name="condition">valid_batch()</field>
+ </record>
+ </data>
+</openerp>
+<!-- vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4
+ -->
=== modified file 'l10n_ar_wsafip_fex/data/journal_view.xml'
--- l10n_ar_wsafip_fex/data/journal_view.xml 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/data/journal_view.xml 2013-11-29 14:53:16 +0000
@@ -18,22 +18,20 @@
-->
<openerp>
<data>
- <record id="view_account_journal_afip_form" model="ir.ui.view">
+ <record id="view_account_journal_fex_form" model="ir.ui.view">
<field name="model">account.journal</field>
- <field name="name">account.journal.afip.form</field>
- <field name="inherit_id" ref="l10n_ar_invoice.view_account_journal_ar_form" />
+ <field name="name">account.journal.fex.form</field>
+ <field name="inherit_id" ref="l10n_ar_wsafip_fe.view_account_journal_afip_form" />
<field name="arch" type="xml">
- <page string="AFIP" position="inside">
- <group colspan="2" col="2">
- <separator string="Web Services" colspan="4"/>
- <field name='afip_connection_id'/>
- <field name='afip_state'/>
- <field name='afip_items_generated'/>
- </group>
- </page>
+ <xpath expr="/form/notebook/page/group/field[@name='afip_items_generated']" position="replace">
+ <field name='afip_items_generated'/>
+ </xpath>
+ <xpath expr="/form/notebook/page/group/field[@name='afip_state']" position="replace">
+ <field name='afip_state'/>
+ </xpath>
</field>
</record>
- </data>
+ </data>
</openerp>
<!-- vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4
-->
=== added file 'l10n_ar_wsafip_fex/data/product_uom_afip_code.xml'
--- l10n_ar_wsafip_fex/data/product_uom_afip_code.xml 1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/product_uom_afip_code.xml 2013-11-29 14:53:16 +0000
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+
+<!-- CATEGORIAS -->
+
+ <record id="product_uom_categ_vol_cub" model="product.uom.categ">
+ <field name="name">Volumen Cubico</field>
+ </record>
+ <record id="product_uom_categ_rad" model="product.uom.categ">
+ <field name="name">Unidad de Radiactividad</field>
+ </record>
+ <record id="product_uom_categ_other" model="product.uom.categ">
+ <field name="name">Otros (sin clasificacion)</field>
+ </record>
+
+
+
+
+
+
+<!-- UNIDAD -->
+ <record id="product.product_uom_unit" model="product.uom">
+ <field name="afip_code">7</field>
+ </record>
+ <record id="product_uom_par" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_unit"/>
+ <field name="name">Par(es)</field>
+ <field name="factor_inv" eval="12"/>
+ <field name="uom_type">bigger</field>
+ <field name="afip_code">8</field>
+ </record>
+ <record id="product.product_uom_dozen" model="product.uom">
+ <field name="afip_code">9</field>
+ </record>
+
+
+<!-- DISTANCIA -->
+
+ <record id="product_uom_mm" model="product.uom">
+ <field name="category_id" ref="product.uom_categ_length"/>
+ <field name="name">Milimetros</field>
+ <field name="factor_inv" eval="0.001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">15</field>
+ </record>
+ <record id="product.product_uom_cm" model="product.uom">
+ <field name="afip_code">20</field>
+ </record>
+ <record id="product.product_uom_meter" model="product.uom">
+ <field name="afip_code">2</field>
+ </record>
+ <record id="product.product_uom_km" model="product.uom">
+ <field name="afip_code">17</field>
+ </record>
+
+
+<!-- PESO -->
+
+<!--
+ NO SE PUEDEN INCLUIR PICOGRAMOS POR LA CANTIDAD DE DECIMALES ACEPTADOS.
+ REVISAR EN CASO DE SER NECESARIO.
+ <record id="product_uom_picog" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_kgm"/>
+ <field name="name">Picogramos</field>
+ <field name="factor_inv" eval="12"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">15</field>
+ </record>
+-->
+ <record id="product_uom_nanog" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_kgm"/>
+ <field name="name">Nanogramo(s)</field>
+ <field name="factor_inv" eval="0.000000000001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">34</field>
+ </record>
+ <record id="product_uom_microg" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_kgm"/>
+ <field name="name">Microgramo(s)</field>
+ <field name="factor_inv" eval="0.000000001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">33</field>
+ </record>
+ <record id="product_uom_milig" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_kgm"/>
+ <field name="name">Miligramo(s)</field>
+ <field name="factor_inv" eval="0.000001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">41</field>
+ </record>
+ <record id="product.product_uom_gram" model="product.uom">
+ <field name="afip_code">14</field>
+ </record>
+ <record id="product.product_uom_kgm" model="product.uom">
+ <field name="afip_code">1</field>
+ </record>
+ <record id="product.product_uom_ton" model="product.uom">
+ <field name="afip_code">29</field>
+ </record>
+
+
+
+<!-- VOLUMEN (litros) -->
+
+ <record id="product_uom_milil" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_vol"/>
+ <field name="name">Mililitro(s)</field>
+ <field name="factor_inv" eval="0.001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">47</field>
+ </record>
+ <record id="product.product_uom_litre" model="product.uom">
+ <field name="afip_code">5</field>
+ </record>
+ <record id="product_uom_hectol" model="product.uom">
+ <field name="category_id" ref="product.product_uom_categ_vol"/>
+ <field name="name">Hectolitro(s)</field>
+ <field name="factor_inv" eval="100"/>
+ <field name="uom_type">bigger</field>
+ <field name="afip_code">18</field>
+ </record>
+
+
+
+<!-- VOLUMEN (cubico) -->
+
+ <record id="product_uom_mmcub" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_vol_cub"/>
+ <field name="name">Mm Cubico(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="0.001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">16</field>
+ </record>
+ <record id="product_uom_cmcub" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_vol_cub"/>
+ <field name="name">Cm Cubico(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="0.01"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">27</field>
+ </record>
+ <record id="product_uom_metrocub" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_vol_cub"/>
+ <field name="name">Metro(s) Cubico(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">reference</field>
+ <field name="afip_code">4</field>
+ </record>
+ <record id="product_uom_damcub" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_vol_cub"/>
+ <field name="name">Dam Cubico(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="10"/>
+ <field name="uom_type">bigger</field>
+ <field name="afip_code">30</field>
+ </record>
+ <record id="product_uom_hmcub" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_vol_cub"/>
+ <field name="name">Hm Cubico(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="100"/>
+ <field name="uom_type">bigger</field>
+ <field name="afip_code">31</field>
+ </record>
+ <record id="product_uom_kmcub" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_vol_cub"/>
+ <field name="name">Km Cubico(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1000"/>
+ <field name="uom_type">bigger</field>
+ <field name="afip_code">32</field>
+ </record>
+
+
+
+<!-- RADIACTIVIDAD -->
+
+ <record id="product_uom_microcurie" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_rad"/>
+ <field name="name">Microcurie</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="0.000001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">50</field>
+ </record>
+ <record id="product_uom_milicurie" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_rad"/>
+ <field name="name">Milicurie</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="0.001"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">49</field>
+ </record>
+ <record id="product_uom_curie" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_rad"/>
+ <field name="name">Curie</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">reference</field>
+ <field name="afip_code">48</field>
+ </record>
+
+
+
+<!-- OTROS (sin clasificacion) -->
+
+ <record id="product_uom_quilates" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Quilates</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">reference</field>
+ <field name="afip_code">10</field>
+ </record>
+ <record id="product_uom_packs" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Packs</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">96</field>
+ </record>
+ <record id="product_uom_hormas" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Hormas</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">97</field>
+ </record>
+ <record id="product_uom_m2" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Metro(s) Cuadrado(s)</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">3</field>
+ </record>
+ <record id="product_uom_kWh" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">1000 kWh</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">6</field>
+ </record>
+ <record id="product_uom_bonif" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Bonificacion</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">98</field>
+ </record>
+ <record id="product_uom_ot_un" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Otras Unidades</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">99</field>
+ </record>
+ <record id="product_uom_naipes" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Paq. Mazo Naipes</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">25</field>
+ </record>
+ <record id="product_uom_millares" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Millaes</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">11</field>
+ </record>
+ <record id="product_uom_uiacthor" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Unidad Internacional Act. Hormonal</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">51</field>
+ </record>
+ <record id="product_uom_muiacthor" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">M. Unidad Internacional Act. Hormonal</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">52</field>
+ </record>
+ <record id="product_uom_kgbase" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">KG Base</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">53</field>
+ </record>
+ <record id="product_uom_gruesa" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Gruesa</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">54</field>
+ </record>
+ <record id="product_uom_kgbruto" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">KG Bruto</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">61</field>
+ </record>
+ <record id="product_uom_uiactant" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Unidad Internacional Act. Antibiotica</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">62</field>
+ </record>
+ <record id="product_uom_muiactant" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">M. Unidad Internacional Act. Antibiotica</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">63</field>
+ </record>
+ <record id="product_uom_uiactig" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Unidad Internacional Act. Inmunologica</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">64</field>
+ </record>
+ <record id="product_uom_muiactig" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">M. Unidad Internacional Act. Inmunologica</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">65</field>
+ </record>
+ <record id="product_uom_kgactivo" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">KG Activo</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">66</field>
+ </record>
+ <record id="product_uom_gactivo" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Gramo Activo</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">67</field>
+ </record>
+ <record id="product_uom_gbase" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">Gramo Base</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">68</field>
+ </record>
+ <record id="product_uom_vacio" model="product.uom">
+ <field name="category_id" ref="product_uom_categ_other"/>
+ <field name="name">No especificado</field>
+ <field name="factor" eval="1"/>
+ <field name="factor_inv" eval="1"/>
+ <field name="uom_type">smaller</field>
+ <field name="afip_code">0</field>
+ </record>
+ </data>
+</openerp>
=== added file 'l10n_ar_wsafip_fex/data/res_country_afip_code.xml'
--- l10n_ar_wsafip_fex/data/res_country_afip_code.xml 1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/res_country_afip_code.xml 2013-11-29 14:53:16 +0000
@@ -0,0 +1,665 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+ <data>
+ <record model='res.country' id='base.ad'>
+ <field name='afip_code'>404</field>
+ </record>
+ <record model='res.country' id='base.ae'>
+ <field name='afip_code'>331</field>
+ </record>
+ <record model='res.country' id='base.af'>
+ <field name='afip_code'>301</field>
+ </record>
+ <record model='res.country' id='base.ag'>
+ <field name='afip_code'>508</field>
+ </record>
+<!--
+ <record model='res.country' id='base.ai'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.al'>
+ <field name='afip_code'>401</field>
+ </record>
+ <record model='res.country' id='base.am'>
+ <field name='afip_code'>349</field>
+ </record>
+ <record model='res.country' id='base.ao'>
+ <field name='afip_code'>149</field>
+ </record>
+ <record model='res.country' id='base.as'>
+ <field name='afip_code'>506</field>
+ </record>
+ <record model='res.country' id='base.at'>
+ <field name='afip_code'>405</field>
+ </record>
+ <record model='res.country' id='base.au'>
+ <field name='afip_code'>501</field>
+ </record>
+<!--
+ <record model='res.country' id='base.aw'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.az'>
+ <field name='afip_code'>350</field>
+ </record>
+ <record model='res.country' id='base.ba'>
+ <field name='afip_code'>446</field>
+ </record>
+ <record model='res.country' id='base.bb'>
+ <field name='afip_code'>201</field>
+ </record>
+ <record model='res.country' id='base.bd'>
+ <field name='afip_code'>345</field>
+ </record>
+ <record model='res.country' id='base.be'>
+ <field name='afip_code'>406</field>
+ </record>
+ <record model='res.country' id='base.bf'>
+ <field name='afip_code'>101</field>
+ </record>
+ <record model='res.country' id='base.bg'>
+ <field name='afip_code'>407</field>
+ </record>
+ <record model='res.country' id='base.bh'>
+ <field name='afip_code'>303</field>
+ </record>
+ <record model='res.country' id='base.bi'>
+ <field name='afip_code'>104</field>
+ </record>
+ <record model='res.country' id='base.bj'>
+ <field name='afip_code'>112</field>
+ </record>
+<!--
+ <record model='res.country' id='base.bm'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.bn'>
+ <field name='afip_code'>346</field>
+ </record>
+ <record model='res.country' id='base.bo'>
+ <field name='afip_code'>202</field>
+ </record>
+ <record model='res.country' id='base.br'>
+ <field name='afip_code'>203</field>
+ </record>
+ <record model='res.country' id='base.bs'>
+ <field name='afip_code'>239</field>
+ </record>
+ <record model='res.country' id='base.bt'>
+ <field name='afip_code'>305</field>
+ </record>
+ <record model='res.country' id='base.bw'>
+ <field name='afip_code'>103</field>
+ </record>
+ <record model='res.country' id='base.by'>
+ <field name='afip_code'>439</field>
+ </record>
+ <record model='res.country' id='base.bz'>
+ <field name='afip_code'>236</field>
+ </record>
+ <record model='res.country' id='base.ca'>
+ <field name='afip_code'>204</field>
+ </record>
+<!--
+ <record model='res.country' id='base.cc'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.cf'>
+ <field name='afip_code'>107</field>
+ </record>
+ <record model='res.country' id='base.cg'>
+ <field name='afip_code'>108</field>
+ </record>
+ <record model='res.country' id='base.ch'>
+ <field name='afip_code'>430</field>
+ </record>
+ <record model='res.country' id='base.ci'>
+ <field name='afip_code'>110</field>
+ </record>
+<!--
+ <record model='res.country' id='base.ck'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.cl'>
+ <field name='afip_code'>208</field>
+ </record>
+ <record model='res.country' id='base.cm'>
+ <field name='afip_code'>105</field>
+ </record>
+ <record model='res.country' id='base.cn'>
+ <field name='afip_code'>310</field>
+ </record>
+ <record model='res.country' id='base.co'>
+ <field name='afip_code'>205</field>
+ </record>
+ <record model='res.country' id='base.cr'>
+ <field name='afip_code'>206</field>
+ </record>
+ <record model='res.country' id='base.cu'>
+ <field name='afip_code'>207</field>
+ </record>
+ <record model='res.country' id='base.cv'>
+ <field name='afip_code'>150</field>
+ </record>
+ <record model='res.country' id='base.cx'>
+ <field name='afip_code'>507</field>
+ </record>
+ <record model='res.country' id='base.cy'>
+ <field name='afip_code'>435</field>
+ </record>
+ <record model='res.country' id='base.cz'>
+ <field name='afip_code'>451</field>
+ </record>
+ <record model='res.country' id='base.de'>
+ <field name='afip_code'>438</field>
+ </record>
+ <record model='res.country' id='base.dj'>
+ <field name='afip_code'>153</field>
+ </record>
+ <record model='res.country' id='base.dk'>
+ <field name='afip_code'>409</field>
+ </record>
+ <record model='res.country' id='base.dm'>
+ <field name='afip_code'>233</field>
+ </record>
+ <record model='res.country' id='base.do'>
+ <field name='afip_code'>209</field>
+ </record>
+<!--
+ <record model='res.country' id='base.dz'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.ec'>
+ <field name='afip_code'>210</field>
+ </record>
+ <record model='res.country' id='base.ee'>
+ <field name='afip_code'>440</field>
+ </record>
+ <record model='res.country' id='base.eg'>
+ <field name='afip_code'>113</field>
+ </record>
+ <record model='res.country' id='base.er'>
+ <field name='afip_code'>160</field>
+ </record>
+ <record model='res.country' id='base.es'>
+ <field name='afip_code'>410</field>
+ </record>
+ <record model='res.country' id='base.et'>
+ <field name='afip_code'>161</field>
+ </record>
+ <record model='res.country' id='base.fi'>
+ <field name='afip_code'>411</field>
+ </record>
+ <record model='res.country' id='base.fj'>
+ <field name='afip_code'>512</field>
+ </record>
+ <record model='res.country' id='base.fm'>
+ <field name='afip_code'>515</field>
+ </record>
+ <record model='res.country' id='base.fo'>
+ <field name='afip_code'>228</field>
+ </record>
+ <record model='res.country' id='base.fr'>
+ <field name='afip_code'>412</field>
+ </record>
+ <record model='res.country' id='base.ga'>
+ <field name='afip_code'>115</field>
+ </record>
+ <record model='res.country' id='base.uk'><!-- gb -->
+ <field name='afip_code'>426</field>
+ </record>
+ <record model='res.country' id='base.gd'>
+ <field name='afip_code'>240</field>
+ </record>
+ <record model='res.country' id='base.ge'>
+ <field name='afip_code'>351</field>
+ </record>
+ <record model='res.country' id='base.gh'>
+ <field name='afip_code'>117</field>
+ </record>
+ <record model='res.country' id='base.gi'>
+ <field name='afip_code'>508</field>
+ </record>
+ <record model='res.country' id='base.gl'>
+ <field name='afip_code'>228</field>
+ </record>
+ <record model='res.country' id='base.gm'>
+ <field name='afip_code'>116</field>
+ </record>
+ <record model='res.country' id='base.gn'>
+ <field name='afip_code'>118</field>
+ </record>
+ <record model='res.country' id='base.gq'>
+ <field name='afip_code'>119</field>
+ </record>
+ <record model='res.country' id='base.gr'>
+ <field name='afip_code'>413</field>
+ </record>
+ <record model='res.country' id='base.gt'>
+ <field name='afip_code'>213</field>
+ </record>
+ <record model='res.country' id='base.gu'>
+ <field name='afip_code'>511</field>
+ </record>
+ <record model='res.country' id='base.gw'>
+ <field name='afip_code'>156</field>
+ </record>
+ <record model='res.country' id='base.gy'>
+ <field name='afip_code'>214</field>
+ </record>
+ <record model='res.country' id='base.hk'>
+ <field name='afip_code'>341</field>
+ </record>
+ <record model='res.country' id='base.hn'>
+ <field name='afip_code'>216</field>
+ </record>
+ <record model='res.country' id='base.hr'>
+ <field name='afip_code'>447</field>
+ </record>
+ <record model='res.country' id='base.ht'>
+ <field name='afip_code'>215</field>
+ </record>
+ <record model='res.country' id='base.hu'>
+ <field name='afip_code'>414</field>
+ </record>
+ <record model='res.country' id='base.id'>
+ <field name='afip_code'>316</field>
+ </record>
+ <record model='res.country' id='base.ie'>
+ <field name='afip_code'>415</field>
+ </record>
+ <record model='res.country' id='base.il'>
+ <field name='afip_code'>319</field>
+ </record>
+ <!--record model='res.country' id='base.im'>
+ <field name='afip_code'></field>
+ </record-->
+ <record model='res.country' id='base.in'>
+ <field name='afip_code'>315</field>
+ </record>
+ <record model='res.country' id='base.ir'>
+ <field name='afip_code'>318</field>
+ </record>
+ <record model='res.country' id='base.is'>
+ <field name='afip_code'>416</field>
+ </record>
+ <record model='res.country' id='base.it'>
+ <field name='afip_code'>417</field>
+ </record>
+ <record model='res.country' id='base.jm'>
+ <field name='afip_code'>217</field>
+ </record>
+ <record model='res.country' id='base.jo'>
+ <field name='afip_code'>321</field>
+ </record>
+ <record model='res.country' id='base.jp'>
+ <field name='afip_code'>320</field>
+ </record>
+ <record model='res.country' id='base.ke'>
+ <field name='afip_code'>120</field>
+ </record>
+ <record model='res.country' id='base.kg'>
+ <field name='afip_code'>353</field>
+ </record>
+ <record model='res.country' id='base.kh'>
+ <field name='afip_code'>306</field>
+ </record>
+ <record model='res.country' id='base.ki'>
+ <field name='afip_code'>514</field>
+ </record>
+ <record model='res.country' id='base.km'>
+ <field name='afip_code'>155</field>
+ </record>
+ <record model='res.country' id='base.kn'>
+ <field name='afip_code'>238</field>
+ </record>
+ <record model='res.country' id='base.kp'>
+ <field name='afip_code'>308</field>
+ </record>
+ <record model='res.country' id='base.kr'>
+ <field name='afip_code'>309</field>
+ </record>
+ <record model='res.country' id='base.kw'>
+ <field name='afip_code'>323</field>
+ </record>
+ <record model='res.country' id='base.ky'>
+ <field name='afip_code'>508</field>
+ </record>
+ <record model='res.country' id='base.kz'>
+ <field name='afip_code'>352</field>
+ </record>
+ <record model='res.country' id='base.la'>
+ <field name='afip_code'>324</field>
+ </record>
+ <record model='res.country' id='base.lb'>
+ <field name='afip_code'>325</field>
+ </record>
+ <record model='res.country' id='base.lc'>
+ <field name='afip_code'>234</field>
+ </record>
+ <record model='res.country' id='base.li'>
+ <field name='afip_code'>418</field>
+ </record>
+ <record model='res.country' id='base.lk'>
+ <field name='afip_code'>307</field>
+ </record>
+ <record model='res.country' id='base.lr'>
+ <field name='afip_code'>122</field>
+ </record>
+ <record model='res.country' id='base.ls'>
+ <field name='afip_code'>121</field>
+ </record>
+ <record model='res.country' id='base.lt'>
+ <field name='afip_code'>442</field>
+ </record>
+ <record model='res.country' id='base.lu'>
+ <field name='afip_code'>419</field>
+ </record>
+ <record model='res.country' id='base.lv'>
+ <field name='afip_code'>441</field>
+ </record>
+ <record model='res.country' id='base.ly'>
+ <field name='afip_code'>123</field>
+ </record>
+ <record model='res.country' id='base.ma'>
+ <field name='afip_code'>127</field>
+ </record>
+ <record model='res.country' id='base.mc'>
+ <field name='afip_code'>421</field>
+ </record>
+ <record model='res.country' id='base.md'>
+ <field name='afip_code'>443</field>
+ </record>
+ <record model='res.country' id='base.mg'>
+ <field name='afip_code'>124</field>
+ </record>
+ <record model='res.country' id='base.mh'>
+ <field name='afip_code'>520</field>
+ </record>
+ <record model='res.country' id='base.mk'>
+ <field name='afip_code'>450</field>
+ </record>
+ <record model='res.country' id='base.ml'>
+ <field name='afip_code'>126</field>
+ </record>
+ <record model='res.country' id='base.mm'>
+ <field name='afip_code'>304</field>
+ </record>
+ <record model='res.country' id='base.mn'>
+ <field name='afip_code'>329</field>
+ </record>
+ <record model='res.country' id='base.mo'>
+ <field name='afip_code'>344</field>
+ </record>
+ <record model='res.country' id='base.mp'>
+ <field name='afip_code'>521</field>
+ </record>
+ <record model='res.country' id='base.mr'>
+ <field name='afip_code'>129</field>
+ </record>
+ <record model='res.country' id='base.ms'>
+ <field name='afip_code'>508</field>
+ </record>
+ <record model='res.country' id='base.mt'>
+ <field name='afip_code'>420</field>
+ </record>
+ <record model='res.country' id='base.mu'>
+ <field name='afip_code'>128</field>
+ </record>
+ <record model='res.country' id='base.mv'>
+ <field name='afip_code'>327</field>
+ </record>
+ <record model='res.country' id='base.mw'>
+ <field name='afip_code'>125</field>
+ </record>
+ <record model='res.country' id='base.mx'>
+ <field name='afip_code'>218</field>
+ </record>
+ <record model='res.country' id='base.my'>
+ <field name='afip_code'>326</field>
+ </record>
+ <record model='res.country' id='base.mz'>
+ <field name='afip_code'>151</field>
+ </record>
+ <record model='res.country' id='base.na'>
+ <field name='afip_code'>158</field>
+ </record>
+ <record model='res.country' id='base.ne'>
+ <field name='afip_code'>130</field>
+ </record>
+ <record model='res.country' id='base.ng'>
+ <field name='afip_code'>131</field>
+ </record>
+ <record model='res.country' id='base.ni'>
+ <field name='afip_code'>219</field>
+ </record>
+ <!--record model='res.country' id='base.nk'>
+ <field name='afip_code'></field>
+ </record-->
+ <record model='res.country' id='base.nl'>
+ <field name='afip_code'>423</field>
+ </record>
+ <record model='res.country' id='base.no'>
+ <field name='afip_code'>422</field>
+ </record>
+ <record model='res.country' id='base.np'>
+ <field name='afip_code'>330</field>
+ </record>
+ <record model='res.country' id='base.nr'>
+ <field name='afip_code'>503</field>
+ </record>
+<!--
+ <record model='res.country' id='base.nu'>
+ <field name='afip_code'></field>
+ </record>
+-->
+ <record model='res.country' id='base.nz'>
+ <field name='afip_code'>504</field>
+ </record>
+ <record model='res.country' id='base.om'>
+ <field name='afip_code'>328</field>
+ </record>
+ <record model='res.country' id='base.pa'>
+ <field name='afip_code'>220</field>
+ </record>
+ <record model='res.country' id='base.pe'>
+ <field name='afip_code'>222</field>
+ </record>
+ <record model='res.country' id='base.pf'>
+ <field name='afip_code'>509</field>
+ </record> ACAS
+ <record model='res.country' id='base.pg'>
+ <field name='afip_code'>513</field>
+ </record>
+ <record model='res.country' id='base.ph'>
+ <field name='afip_code'>312</field>
+ </record>
+ <record model='res.country' id='base.pk'>
+ <field name='afip_code'>332</field>
+ </record>
+ <record model='res.country' id='base.pl'>
+ <field name='afip_code'>424</field>
+ </record>
+ <record model='res.country' id='base.pn'>
+ <field name='afip_code'>227</field>
+ </record>
+ <record model='res.country' id='base.pr'>
+ <field name='afip_code'>223</field>
+ </record>
+ <!--record model='res.country' id='base.ps'>
+ <field name='afip_code'></field>
+ </record-->
+ <!--record model='res.country' id='base.ps'>
+ <field name='afip_code'></field>
+ </record-->
+ <record model='res.country' id='base.pt'>
+ <field name='afip_code'>325</field>
+ </record>
+ <record model='res.country' id='base.pw'>
+ <field name='afip_code'>516</field>
+ </record>
+ <record model='res.country' id='base.py'>
+ <field name='afip_code'>221</field>
+ </record>
+ <record model='res.country' id='base.qa'>
+ <field name='afip_code'>322</field>
+ </record>
+ <record model='res.country' id='base.ro'>
+ <field name='afip_code'>427</field>
+ </record>
+ <record model='res.country' id='base.ru'>
+ <field name='afip_code'>444</field>
+ </record>
+ <record model='res.country' id='base.rw'>
+ <field name='afip_code'>133</field>
+ </record>
+ <record model='res.country' id='base.sa'>
+ <field name='afip_code'>302</field>
+ </record>
+ <record model='res.country' id='base.sb'>
+ <field name='afip_code'>518</field>
+ </record>
+ <record model='res.country' id='base.sc'>
+ <field name='afip_code'>152</field>
+ </record>
+ <record model='res.country' id='base.sd'>
+ <field name='afip_code'>138</field>
+ </record>
+ <record model='res.country' id='base.se'>
+ <field name='afip_code'>429</field>
+ </record>
+ <record model='res.country' id='base.sg'>
+ <field name='afip_code'>333</field>
+ </record>
+ <record model='res.country' id='base.sh'>
+ <field name='afip_code'>227</field>
+ </record>
+ <record model='res.country' id='base.si'>
+ <field name='afip_code'>449</field>
+ </record>
+ <record model='res.country' id='base.sl'>
+ <field name='afip_code'>135</field>
+ </record>
+ <record model='res.country' id='base.sm'>
+ <field name='afip_code'>428</field>
+ </record>
+ <record model='res.country' id='base.sn'>
+ <field name='afip_code'>134</field>
+ </record>
+ <record model='res.country' id='base.so'>
+ <field name='afip_code'>136</field>
+ </record>
+ <record model='res.country' id='base.sr'>
+ <field name='afip_code'>232</field>
+ </record>
+ <record model='res.country' id='base.st'>
+ <field name='afip_code'>157</field>
+ </record>
+ <record model='res.country' id='base.sv'>
+ <field name='afip_code'>211</field>
+ </record>
+ <record model='res.country' id='base.sy'>
+ <field name='afip_code'>334</field>
+ </record>
+ <record model='res.country' id='base.sz'>
+ <field name='afip_code'>137</field>
+ </record>
+ <record model='res.country' id='base.tc'>
+ <field name='afip_code'>508</field>
+ </record>
+ <record model='res.country' id='base.td'>
+ <field name='afip_code'>111</field>
+ </record>
+ <record model='res.country' id='base.tg'>
+ <field name='afip_code'>140</field>
+ </record>
+ <record model='res.country' id='base.th'>
+ <field name='afip_code'>335</field>
+ </record>
+ <record model='res.country' id='base.tj'>
+ <field name='afip_code'>354</field>
+ </record>
+ <record model='res.country' id='base.tk'>
+ <field name='afip_code'>510</field>
+ </record>
+ <record model='res.country' id='base.tm'>
+ <field name='afip_code'>355</field>
+ </record>
+ <record model='res.country' id='base.tn'>
+ <field name='afip_code'>141</field>
+ </record>
+ <record model='res.country' id='base.to'>
+ <field name='afip_code'>519</field>
+ </record>
+ <record model='res.country' id='base.tr'>
+ <field name='afip_code'>436</field>
+ </record>
+ <record model='res.country' id='base.tt'>
+ <field name='afip_code'>224</field>
+ </record>
+ <record model='res.country' id='base.tv'>
+ <field name='afip_code'>517</field>
+ </record>
+ <record model='res.country' id='base.tw'>
+ <field name='afip_code'>313</field>
+ </record>
+ <record model='res.country' id='base.tz'>
+ <field name='afip_code'>139</field>
+ </record>
+ <record model='res.country' id='base.ua'>
+ <field name='afip_code'>445</field>
+ </record>
+ <record model='res.country' id='base.ug'>
+ <field name='afip_code'>142</field>
+ </record>
+ <record model='res.country' id='base.us'>
+ <field name='afip_code'>212</field>
+ </record>
+ <record model='res.country' id='base.uy'>
+ <field name='afip_code'>225</field>
+ </record>
+ <record model='res.country' id='base.uz'>
+ <field name='afip_code'>356</field>
+ </record>
+ <record model='res.country' id='base.va'>
+ <field name='afip_code'>431</field>
+ </record>
+ <record model='res.country' id='base.vc'>
+ <field name='afip_code'>235</field>
+ </record>
+ <record model='res.country' id='base.ve'>
+ <field name='afip_code'>226</field>
+ </record>
+ <record model='res.country' id='base.vg'>
+ <field name='afip_code'>508</field>
+ </record>
+ <record model='res.country' id='base.vn'>
+ <field name='afip_code'>337</field>
+ </record>
+ <record model='res.country' id='base.vu'>
+ <field name='afip_code'>505</field>
+ </record>
+ <record model='res.country' id='base.ws'>
+ <field name='afip_code'>506</field>
+ </record>
+ <record model='res.country' id='base.ye'>
+ <field name='afip_code'>348</field>
+ </record>
+ <record model='res.country' id='base.za'>
+ <field name='afip_code'>159</field>
+ </record>
+ <record model='res.country' id='base.zm'>
+ <field name='afip_code'>144</field>
+ </record>
+ <record model='res.country' id='base.zw'>
+ <field name='afip_code'>132</field>
+ </record>
+ </data>
+</openerp>
+
=== added file 'l10n_ar_wsafip_fex/data/res_currency_afip_code.xml'
--- l10n_ar_wsafip_fex/data/res_currency_afip_code.xml 1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/res_currency_afip_code.xml 2013-11-29 14:53:16 +0000
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+<!-- UNIDADES DE MAYOR NECESIDAD -->
+
+ <!-- ARGENTINA -->
+ <record id="base.ARS" model="res.currency">
+ <field name="afip_code">PES</field>
+ </record>
+
+ <!-- EE.UU. -->
+ <record id="base.USD" model="res.currency">
+ <field name="afip_code">DOL</field>
+ </record>
+
+ <!-- MEXICO -->
+ <record id="base.MXN" model="res.currency">
+ <field name="afip_code">010</field>
+ </record>
+
+ <!-- URUGUAY -->
+ <record id="base.UYU" model="res.currency">
+ <field name="afip_code">011</field>
+ </record>
+
+ <!-- PARAGUAY -->
+ <record id="base.PYG" model="res.currency">
+ <field name="afip_code">029</field>
+ </record>
+
+ <!-- CANADA -->
+ <record id="base.CAD" model="res.currency">
+ <field name="afip_code">018</field>
+ </record>
+
+ <!-- JAPON -->
+ <record id="base.JPY" model="res.currency">
+ <field name="afip_code">019</field>
+ </record>
+
+ <!-- VENEZUELA -->
+ <record id="base.VEF" model="res.currency">
+ <field name="afip_code">021</field>
+ </record>
+
+ <!-- REINO UNIDO -->
+ <record id="base.GBP" model="res.currency">
+ <field name="afip_code">023</field>
+ </record>
+
+ <!-- AUSTRALIA -->
+ <record id="base.AUD" model="res.currency">
+ <field name="afip_code">026</field>
+ </record>
+
+ <!-- BOLIVIA -->
+ <record id="base.BOB" model="res.currency">
+ <field name="afip_code">031</field>
+ </record>
+
+ <!-- COLOMBIA -->
+ <record id="base.COP" model="res.currency">
+ <field name="afip_code">032</field>
+ </record>
+
+ <!-- CHILE -->
+ <record id="base.CLP" model="res.currency">
+ <field name="afip_code">033</field>
+ </record>
+
+ <!-- ECUADOR -->
+ <record id="base.ECS" model="res.currency">
+ <field name="afip_code">036</field>
+ </record>
+
+ <!-- BRASIL -->
+ <record id="base.BRL" model="res.currency">
+ <field name="afip_code">012</field>
+ </record>
+
+ <!-- PERU -->
+ <record id="base.PEN" model="res.currency">
+ <field name="afip_code">035</field>
+ </record>
+
+ <!-- EURO -->
+ <record id="base.EUR" model="res.currency">
+ <field name="afip_code">060</field>
+ </record>
+
+
+
+
+
+
+<!-- UNIDADES DE MEDIANA NECESIDAD -->
+
+
+ <!-- RAND SUDAFRICANO -->
+ <record id="base.ZAR" model="res.currency">
+ <field name="afip_code">034</field>
+ </record>
+
+ <!-- HONG KONG DOLAR -->
+ <record id="base.HKD" model="res.currency">
+ <field name="afip_code">051</field>
+ </record>
+
+ <!-- ISRAEL SHEKEL -->
+ <record id="base.ILS" model="res.currency">
+ <field name="afip_code">030</field>
+ </record>
+
+
+
+
+
+
+<!-- UNIDADES DE BAJA NECESIDAD -->
+
+
+
+ <!-- CORONAS DANESAS -->
+ <record id="base.DKK" model="res.currency">
+ <field name="afip_code">014</field>
+ </record>
+
+ <!-- CORONAS NORUEGAS -->
+ <record id="base.NOK" model="res.currency">
+ <field name="afip_code">015</field>
+ </record>
+
+ <!-- CORONAS SUECAS -->
+ <record id="base.SEK" model="res.currency">
+ <field name="afip_code">016</field>
+ </record>
+
+ <!-- CORONA CHECA -->
+ <record id="base.CZK" model="res.currency">
+ <field name="afip_code">024</field>
+ </record>
+
+ <!-- DINAR YUGOSLAVO -->
+ <record id="base.YUM" model="res.currency">
+ <field name="afip_code">025</field>
+ </record>
+
+ <!-- FLORIN (ANTILLAS HOLANDESAS) -->
+ <record id="base.ANG" model="res.currency">
+ <field name="afip_code">028</field>
+ </record>
+
+ <!-- DOLAR DE SINGAPUR -->
+ <record id="base.SGD" model="res.currency">
+ <field name="afip_code">052</field>
+ </record>
+
+ <!-- DOLAR DE JAMAICA -->
+ <record id="base.JMD" model="res.currency">
+ <field name="afip_code">053</field>
+ </record>
+
+ <!-- DOLAR DE TAIWAN -->
+ <record id="base.TWD" model="res.currency">
+ <field name="afip_code">054</field>
+ </record>
+
+ <!-- FORINT (Hungría) -->
+ <record id="base.HUF" model="res.currency">
+ <field name="afip_code">056</field>
+ </record>
+
+ <!-- BAHT TAILANDÉS -->
+ <record id="base.THB" model="res.currency">
+ <field name="afip_code">057</field>
+ </record>
+
+ <!-- DINAR KUWAITI -->
+ <record id="base.KWD" model="res.currency">
+ <field name="afip_code">059</field>
+ </record>
+
+ <!-- LEI RUMANO -->
+ <record id="base.RON" model="res.currency">
+ <field name="afip_code">040</field>
+ </record>
+
+ <!-- PESO DOMINICANO -->
+ <record id="base.DOP" model="res.currency">
+ <field name="afip_code">042</field>
+ </record>
+
+ <!-- BALBOAS PANAMEÑAS -->
+ <record id="base.PAB" model="res.currency">
+ <field name="afip_code">043</field>
+ </record>
+
+ <!-- CORDOBA NICARAGUENSE -->
+ <record id="base.NIO" model="res.currency">
+ <field name="afip_code">044</field>
+ </record>
+
+ <!-- DIRHAM MARROQUI -->
+ <record id="base.MAD" model="res.currency">
+ <field name="afip_code">045</field>
+ </record>
+
+ <!-- LIBRA EGIPCIA -->
+ <record id="base.EGP" model="res.currency">
+ <field name="afip_code">046</field>
+ </record>
+
+ <!-- RIYAL SAUDITA -->
+ <record id="base.SAR" model="res.currency">
+ <field name="afip_code">047</field>
+ </record>
+
+ <!-- ZLOTY POLACO -->
+ <record id="base.PLN" model="res.currency">
+ <field name="afip_code">061</field>
+ </record>
+
+ <!-- RUPIA HINDU -->
+ <record id="base.INR" model="res.currency">
+ <field name="afip_code">062</field>
+ </record>
+
+ <!-- LEMPIRA HONDUREÑA -->
+ <record id="base.HNL" model="res.currency">
+ <field name="afip_code">063</field>
+ </record>
+
+ <!-- YUAN (CHINA) -->
+ <record id="base.CNY" model="res.currency">
+ <field name="afip_code">064</field>
+ </record>
+
+ <!-- FRANCO SUIZO -->
+ <record id="base.CHF" model="res.currency">
+ <field name="afip_code">009</field>
+ </record>
+
+
+ </data>
+</openerp>
=== added file 'l10n_ar_wsafip_fex/data/wsafip_fex_config.xml'
--- l10n_ar_wsafip_fex/data/wsafip_fex_config.xml 1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/wsafip_fex_config.xml 2013-11-29 14:53:16 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C), 2012, OpenERP - Team de Localización Argentina.
+ https://launchpad.net/~openerp-l10n-ar-localization
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+ <data>
+
+ <!-- Generate request -->
+
+ <record id="view_wsafip_fex_config" model="ir.ui.view">
+ <field name="name">l10n_ar_wsafip_fex.config.form</field>
+ <field name="model">l10n_ar_wsafip_fex.config</field>
+ <field name="inherit_id" ref="base.res_config_view_base"/>
+ <field name="arch" type="xml">
+ <data>
+ <form position="attributes" version="7.0">
+ <attribute name="string">AFIP Web service Configuration - Request Generation</attribute>
+ </form>
+ <group string="res_config_contents" position="replace">
+ <group colspan="8">
+ <field name="company_id" widget="selection" on_change="update_data(company_id)"/>
+ <field name="wsfex_certificate_id" widget="selection"/>
+ <field name="wsfex_for_homologation"/>
+ <field name="wsfex_point_of_sale"/>
+ </group>
+ </group>
+ </data>
+ </field>
+ </record>
+
+ <record id="action_wsafip_fex_config" model="ir.actions.act_window">
+ <field name="name">Export Electronic Invoice Configuration</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">l10n_ar_wsafip_fex.config</field>
+ <field name="view_id" ref="view_wsafip_fex_config"/>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+ <record id="wsafip_fex_config_todo" model="ir.actions.todo">
+ <field name="name">AFIP Export Electronic Invoice Web service Configuration - Setting POS</field>
+ <field name="action_id" ref="action_wsafip_fex_config"/>
+ <field name="sequence">40</field>
+ <field name="type">automatic</field>
+ </record>
+
+ </data>
+</openerp>
+<!-- vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+ -->
=== modified file 'l10n_ar_wsafip_fex/data/wsafip_server.xml'
--- l10n_ar_wsafip_fex/data/wsafip_server.xml 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/data/wsafip_server.xml 2013-11-29 14:53:16 +0000
@@ -17,7 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<openerp>
- <data>
+ <data noupdate="1">
<record model='wsafip.server' id='wsfex_prod'>
<field name='name'>Factura Electrónica de Exportación</field>
=== removed directory 'l10n_ar_wsafip_fex/i18n'
=== removed file 'l10n_ar_wsafip_fex/i18n/es_AR.po'
--- l10n_ar_wsafip_fex/i18n/es_AR.po 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/i18n/es_AR.po 1970-01-01 00:00:00 +0000
@@ -1,288 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * l10n_ar_wsafip
-# Cristian S. Rocha <cristian.rocha@xxxxxxxxxxxxxxxxxxxxxxxx>, 2013.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 7.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-25 13:25+0000\n"
-"PO-Revision-Date: 2013-09-25 10:37-0300\n"
-"Last-Translator: Cristian S. Rocha <cristian.rocha@xxxxxxxxxxxxxxxxxxxxx."
-"ar>\n"
-"Language-Team: Español Argentina <cristian.rocha@xxxxxxxxxxxxxxxxxxxxxxxx>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,city:0
-msgid "City"
-msgstr "Ciudad"
-
-#. module: l10n_ar_wsafip
-#: model:res.groups,name:l10n_ar_wsafip.group_wsafip_admin
-msgid "AFIP WebService Manager"
-msgstr "Administrador del WebService"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.act_wsafip_auth
-msgid "AFIP Connections"
-msgstr "Conexiones AFIP"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,cuit:0
-msgid "CUIT"
-msgstr "CUIT"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Invalid"
-msgstr "Inválido"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,state_id:0
-msgid "State"
-msgstr "Estado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,certificate:0
-msgid "Certificate Signer"
-msgstr "Firmante del Certificado"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.action_wsafip_loadcert_config
-#: view:l10n_ar_wsafip.loadcert_config:0
-msgid "AFIP Web service Configuration - Load Certificate"
-msgstr "Configuración del WebService del AFIP - Carga del Certificado"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,department:0
-msgid "Department"
-msgstr "Departamento\t"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_l10n_ar_wsafip_loadcert_config
-msgid "l10n_ar_wsafip.loadcert_config"
-msgstr "Configuración del WebService del AFIP - Carga del Certificado"
-
-#. module: l10n_ar_wsafip
-#: view:wsafip.connection:0
-msgid "AFIP Authorization"
-msgstr "Autorización del AFIP"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_wsafip_server
-msgid "wsafip.server"
-msgstr "Servidor"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,name:0 field:wsafip.connection,name:0
-#: field:wsafip.server,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,state:0
-msgid "Status"
-msgstr "Estado"
-
-#. module: l10n_ar_wsafip
-#: model:res.groups,name:l10n_ar_wsafip.group_wsafip_user
-msgid "AFIP WebService User"
-msgstr "Usuario del Webservice del AFIP"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,server_id:0
-msgid "Service Server"
-msgstr "Servidor"
-
-#. module: l10n_ar_wsafip
-#: model:ir.module.category,description:l10n_ar_wsafip.module_category_l10n_ar_wsafip
-msgid "Argentine Web Service Localization"
-msgstr "Localización Argentina de WebService"
-
-#. module: l10n_ar_wsafip
-#: model:ir.ui.menu,name:l10n_ar_wsafip.menu_action_wsafip_auth
-msgid "Sessions"
-msgstr "Sesiones"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.loadcert_config,request_string:0
-msgid "Certificate string"
-msgstr "Texto del certificado"
-
-#. module: l10n_ar_wsafip
-#: view:wsafip.server:0
-msgid "AFIP server"
-msgstr "Servidor del AFIP"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_wsafip_connection
-msgid "wsafip.connection"
-msgstr "Conexión"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.action_wsafip_keygen_config
-#: view:l10n_ar_wsafip.keygen_config:0
-msgid "AFIP Web service Configuration - Request Generation"
-msgstr "Configuración del WebService del AFIP - Generación del Requerimiento"
-
-#. module: l10n_ar_wsafip
-#: view:l10n_ar_wsafip.keygen_config:0 view:l10n_ar_wsafip.loadcert_config:0
-msgid "res_config_contents"
-msgstr "Contenidos"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Connected"
-msgstr "Conectado"
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:174
-#, python-format
-msgid "Please check if your VAT is an Argentina one before continue."
-msgstr "Verifique que su CUIT es de Argentina antes de continuar."
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:174
-#, python-format
-msgid "Error in VATs"
-msgstr "Error en el CUIT"
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:186
-#, python-format
-msgid "Certificate Error"
-msgstr "Error en el Certificado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.server,class:0
-msgid "Class"
-msgstr "Clase"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,generationtime:0
-msgid "Generation Time"
-msgstr "Fecha de Generación"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Disconnected"
-msgstr "Desconectado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.server,url:0
-msgid "URL"
-msgstr "URL"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,country_id:0
-msgid "Country"
-msgstr "País"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.server,class:0
-msgid "Homologation"
-msgstr "Homologación"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,token:0
-msgid "Token"
-msgstr "Token"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_l10n_ar_wsafip_keygen_config
-msgid "l10n_ar_wsafip.keygen_config"
-msgstr "Generación de Clave"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,batch_sequence_id:0
-msgid "Batch Sequence"
-msgstr "Secuencia de Lote"
-
-#. module: l10n_ar_wsafip
-#: view:wsafip.connection:0
-msgid "Login"
-msgstr "Login"
-
-#. module: l10n_ar_wsafip
-#: model:ir.module.category,name:l10n_ar_wsafip.module_category_l10n_ar_wsafip
-#: model:ir.ui.menu,name:l10n_ar_wsafip.menu_wsafip
-msgid "AFIP Web Services"
-msgstr "Servicios Web del AFIP"
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:190
-#, python-format
-msgid "AFIP Message"
-msgstr "Mensaje del AFIP"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.server,code:0
-msgid "Code"
-msgstr "Código"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Clock shifted"
-msgstr "Reloj desincronizado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,uniqueid:0
-msgid "Unique ID"
-msgstr "Identificación única"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.act_wsafip_server
-#: view:wsafip.connection:0 view:wsafip.server:0
-msgid "AFIP Servers"
-msgstr "Servidores"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,expirationtime:0
-msgid "Expiration Time"
-msgstr "Fecha de Expiración"
-
-#. module: l10n_ar_wsafip
-#: model:ir.ui.menu,name:l10n_ar_wsafip.menu_action_wsafip_server
-msgid "Servers"
-msgstr "Servidores"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.server,class:0
-msgid "Production"
-msgstr "Producción"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.loadcert_config,request_id:0
-msgid "Certificate Request"
-msgstr "Requerimiento de Certificación"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,sign:0
-msgid "Sign"
-msgstr "Firma"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,partner_id:0
-msgid "Partner"
-msgstr "Razón Social"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,logging_id:0
-msgid "Authorization Server"
-msgstr "Servidor de Autorización"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,company_id:0
-msgid "Company"
-msgstr "Compañia"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.loadcert_config,response_string:0
-msgid "Response string"
-msgstr "Texto de respuesta"
=== modified file 'l10n_ar_wsafip_fex/invoice.py'
--- l10n_ar_wsafip_fex/invoice.py 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/invoice.py 2013-11-29 14:53:16 +0000
@@ -28,16 +28,24 @@
# Number Filter
re_number = re.compile(r'\d{8}')
-def _calc_concept(product_types):
- if product_types == set(['consu']):
- concept = '1'
- elif product_types == set(['service']):
- concept = '2'
- elif product_types == set(['consu','service']):
- concept = '4'
- else:
- concept = False
- return concept
+#~ def _calc_concept(product_types):
+ #~ if product_types == set(['consu']):
+ #~ concept = '1'
+ #~ elif product_types == set(['product']):
+ #~ concept = '1'
+ #~ elif product_types == set(['consu','product']):
+ #~ concept = '1'
+ #~ elif product_types == set(['service']):
+ #~ concept = '2'
+ #~ elif product_types == set(['consu','service']):
+ #~ concept = '4'
+ #~ elif product_types == set(['product','service']):
+ #~ concept = '4'
+ #~ elif product_types == set(['product','consu','service']):
+ #~ concept = '4'
+ #~ else:
+ #~ concept = False
+ #~ return concept
class invoice(osv.osv):
@@ -51,15 +59,152 @@
_inherit = "account.invoice"
_columns = {
+ 'afip_export_id': fields.integer('ID', size=15),
+ #~ 'afip_export_concept': fields.function(_get_concept,
+ #~ type="selection",
+ #~ selection=[('1','Exportacion Definitiva de Bienes'),
+ #~ ('2','Servicios'),
+ #~ ('4','Otros')],
+ #~ method=True,
+ #~ string="AFIP Export concept",
+ #~ readonly=1),
+ 'afip_export_concept': fields.selection([('1','Exportacion Definitiva de Bienes'),
+ ('2','Servicios'),
+ ('4','Otros')],
+ 'AFIP Export concept',
+ select=True,
+ required=True),
+ 'afip_export_lang_invoice': fields.selection([('1','Español'),
+ ('2','Ingles'),
+ ('3','Portugues')],
+ 'AFIP Invoice Language',
+ select=True,
+ required=True),
+ 'afip_export_obs_com': fields.text('Trade Observations'),
+ 'afip_export_incoterm': fields.many2one('afip.incoterms', 'Incoterm'),
+ 'afip_export_exist_perm' : fields.selection([('S','Yes'),
+ ('N','No')],
+ 'Has export permissions',
+ select=True,
+ required=True),
+ 'afip_export_permissions': fields.one2many('afip.export.permissions', 'invoice_id', 'Permisos'),
+ 'afip_export_rsp': fields.related('partner_id', 'responsability_id', string='Customer Responsability Relation'),
+ 'afip_export_rspn': fields.related('afip_export_rsp', 'code', type='char', store=True, string='AFIP Responsability CODE'),
}
_defaults = {
+ 'afip_export_exist_perm': 'N',
}
+ def onchange_partner_id(self, cr, uid, ids, type, partner_id, date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
+ result = {}
+ result = super(invoice,self).onchange_partner_id(cr, uid, ids, type, partner_id, date_invoice, payment_term, partner_bank_id, company_id)
+ if partner_id:
+ partner = self.pool.get('res.partner').browse(cr, uid, partner_id)
+ if partner:
+ rsp_code = partner.responsability_id.code
+ if rsp_code:
+ result['value']['afip_export_rspn'] = rsp_code
+ return result
+
+ def get_item(self, cr, uid, ids, *args):
+ r = {}
+ _ids = [ids] if isinstance(ids, int) else ids
+
+ for inv in self.browse(cr, uid, _ids):
+ r[inv.id] = []
+ ##Pro_codigo --> NOT REQUIRED. CODIGO INTERNO DEL PRODUCTO/SERVICIO.
+ for item in inv.invoice_line:
+ uom = item.uos_id.afip_code
+ if uom in [0, 97, 99]:
+ r[inv.id].append({
+ 'Pro_codigo': '',
+ 'Pro_ds': item.name,
+ 'Pro_qty': 0,
+ 'Pro_umed': item.uos_id.afip_code,
+ 'Pro_precio_uni': 0,
+ 'Pro_bonificacion': 0,
+ 'Pro_total_item': item.price_subtotal,
+ })
+ else:
+ r[inv.id].append({
+ 'Pro_codigo': '',
+ 'Pro_ds': item.name,
+ 'Pro_qty': item.quantity,
+ 'Pro_umed': item.uos_id.afip_code,
+ 'Pro_precio_uni': item.price_unit,
+ 'Pro_bonificacion': (item.price_unit/100)*item.discount,
+ 'Pro_total_item': item.price_subtotal,
+ })
+
+ return r[ids] if isinstance(ids, int) else r
+
+ def get_permiso(self, cr, uid, ids, *args):
+ r = {}
+ _ids = [ids] if isinstance(ids, int) else ids
+
+ for inv in self.browse(cr, uid, _ids):
+ r[inv.id] = []
+ if inv.afip_export_exist_perm == "N":
+ return
+ for item in inv.afip_export_permissions:
+ if not item.valid_permission:
+ continue
+ r[inv.id].append({
+ 'Id_permiso': item.permission_code,
+ 'Dst_merc': item.dst_merc.afip_code,
+ })
+
+ return r[ids] if isinstance(ids, int) else r
+
+ def get_existepermiso(self, cr, uid, ids, *args):
+
+ _ids = [ids] if isinstance(ids, int) else ids
+
+ inv = self.browse(cr, uid, _ids)[0]
+ if inv.afip_export_exist_perm == "N":
+ tipo_expo = inv.afip_export_concept
+ comprobante = inv.journal_id.journal_class_id.afip_code
+ if int(tipo_expo) in [2, 4]:
+ return ''
+ elif int(comprobante) in [20, 21]:
+ return ''
+ else:
+ return 'N'
+ elif inv.afip_export_exist_perm == "S":
+ return 'S'
+ else:
+ return ''
+
+ def get_related_invoices(self, cr, uid, ids, *args):
+ """
+ List related invoice information to fill CbtesAsoc
+ """
+ r = {}
+ _ids = [ids] if isinstance(ids, int) else ids
+
+ for inv in self.browse(cr, uid, _ids):
+ r[inv.id] = []
+ rel_inv_ids = self.search(cr, uid, [('number','=',inv.origin),
+ ('state','not in',['draft','proforma','proforma2','cancel'])])
+ for rel_inv in self.browse(cr, uid, rel_inv_ids):
+ journal = rel_inv.journal_id
+ r[inv.id].append({
+ 'Cbte_tipo': journal.journal_class_id.afip_code,
+ 'Cbte_punto_vta': journal.point_of_sale,
+ 'Cbte_nro': rel_inv.invoice_number,
+ 'Cbte_cuit': '', #COMPLETAR
+ })
+
+ return r[ids] if isinstance(ids, int) else r
+
def copy(self, cr, uid, id, default=None, context=None):
default = default or {}
default.update({
- 'state':'draft',
+ 'afip_export_id': False,
+ 'afip_export_permissions': False,
+ 'afip_export_exist_perm': 'N',
+ 'state': 'draft',
'afip_error_id': False,
'afip_batch_number': False,
'afip_cae_due': False,
@@ -69,6 +214,61 @@
'date_due': default.get('date_due', False)
})
return super(invoice, self).copy(cr, uid, id, default, context)
+
+ def onchange_permissions(self, cr, uid, ids, afip_export_exist_perm, context=None):
+
+ if ids:
+ if afip_export_exist_perm:
+ if afip_export_exist_perm == 'S':
+ return True
+ else:
+ cr.execute('DELETE FROM afip_export_permissions WHERE invoice_id=%s',(ids))
+ return {'value': {'afip_export_permissions': False}}
+ else:
+ cr.execute('DELETE FROM afip_export_permissions WHERE invoice_id=%s',(ids))
+ return {'value': {'afip_export_permissions': False}}
+ else:
+ return True
+
+ def button_check_permissions(self, cr, uid, ids, context=None):
+
+ result = ""
+ list_of_permissions = self.pool.get('account.invoice').browse(cr, uid, ids)[0].afip_export_permissions
+ for permission in list_of_permissions:
+ if not permission.dst_merc:
+ raise osv.except_osv(_(u'Error!'),
+ _(u'Primero debe elegir el pais de destino.'))
+ if not permission.permission_code or len(permission.permission_code) < 16:
+ raise osv.except_osv(_(u'Error!'),
+ _(u'El codigo del permiso debe estar completo.'))
+ inv = self.browse(cr, uid, ids)[0]
+ conn = inv.journal_id.afip_connection_id
+ if not conn:
+ raise osv.except_osv(_(u'Connection Error'),
+ _(u'No hay una conexión definida! Cree/seleccione una sesión válida o hable con su administrador del sistema.'))
+
+ if conn and conn.server_id.code == 'wsfex':
+ try:
+ result = conn.server_id.wsfex_check_permissions(conn.id, permission.permission_code, permission.dst_merc.afip_code, context)
+ if result.get(conn.server_id.id) != 'OK':
+ raise osv.except_osv(_(u'Error!'),
+ _(u'El permiso "'+permission.permission_code+'" no es valido!'))
+ else:
+ permission.write({'valid_permission': True})
+ except:
+ result = False
+ raise osv.except_osv(_(u'Error!'),
+ _(u'No se pudo chequear el permiso.'))
+
+ if result == "":
+ raise osv.except_osv(_(u'Error!'),
+ _(u'Chequee que el diario elegido sea el correcto.'))
+ if result.get(conn.server_id.id) == 'OK':
+ #~
+ return True
+ else:
+ raise osv.except_osv(_(u'Error!'),
+ _(u'Uno o más permisos son inválidos. Verifique.'))
def action_retrieve_cae(self, cr, uid, ids, context=None):
@@ -83,7 +283,9 @@
conn_obj = self.pool.get('wsafip.connection')
serv_obj = self.pool.get('wsafip.server')
currency_obj = self.pool.get('res.currency')
+
+ next_id = 0
Servers = {}
Requests = {}
Inv2id = {}
@@ -102,52 +304,64 @@
# Take the last number of the "number".
# Could not work if your number have not 8 digits.
invoice_number = int(re_number.search(inv.number).group())
+
+ last_id = serv_obj.wsfex_get_last_id(cr, uid, [conn.server_id.id], conn.id)
+ if not last_id:
+ raise osv.except_osv(_(u'Error!'),
+ _(u'No se pudo obtener el ultimo ID realizado. Verifique la conexion al servidor.'))
+ next_id = last_id + 1
_f_date = lambda d: d and d.replace('-','')
-
+
+ if journal.journal_class_id.afip_code not in [19, 20, 21]:
+ raise osv.except_osv(_(u'Error!'),
+ _(u'El comprobante debe estar entre los permitidos por WSFEX'))
+
# Build request dictionary
if conn.id not in Requests: Requests[conn.id] = {}
Requests[conn.id][inv.id]=dict( (k,v) for k,v in {
- 'Id': journal.point_of_sale, ######## EDIT (AVERIGUAR ID)
- 'CbteFch': _f_date(inv.date_invoice),
- 'CbteTipo': journal.journal_class_id.afip_code,
- 'PtoVta': journal.point_of_sale,
- 'CbteNro': journal.point_of_sale, ########## BUSCAR NUMERO (00000103 por ej)
- 'TipoExpo': inv.afip_concept, ############## EDITAR PARA QUE SEA TIPO_EXPO DIFERENTE AL DE LA WSFE
+ 'Id': next_id,
+ 'Fecha_cbte': _f_date(inv.date_invoice),
+ 'Cbte_Tipo': journal.journal_class_id.afip_code,
+ 'Punto_vta': journal.point_of_sale,
+ 'Cbte_nro': invoice_number,
+ 'Tipo_expo': inv.afip_export_concept,
+ 'Permiso_existente': self.get_existepermiso(cr, uid, inv.id),
'Permisos': { 'Permiso': self.get_permiso(cr, uid, inv.id) },
- 'DstCmp': inv.partner_id.country_id.afip_code,
+ 'Dst_cmp': inv.partner_id.country_id.afip_code,
'Cliente': inv.partner_id.name,
- 'CuitPaisCliente': inv.partner_id.country_id.cuit_juridica if inv.partner_id.is_company == True else inv.partner_id.country_id.cuit_fisica,
- 'DomicilioCliente': inv.partner_id.street+", "+inv.partner_id.city,
- 'IdImpositivo': ######### AVERIGUAR COMO COMPLETAR ESTE CAMPO
-
- 'MonId': inv.currency_id.afip_code,
- 'MonCotiz': currency_obj.compute(cr, uid, inv.currency_id.id, inv.company_id.currency_id.id, 1.),
-
- 'ObsComerciales': inv.comment, ####### NECESARIO HACER UN CAMPO NUEVO LLAMADO OBS COMERCIALES?
- 'ImpTotal': inv.amount_total,
+ 'Cuit_pais_cliente': inv.partner_id.country_id.cuit_juridica if inv.partner_id.is_company == True else inv.partner_id.country_id.cuit_fisica,
+ 'Domicilio_cliente': inv.partner_id.street+", "+inv.partner_id.city,
+ 'Id_impositivo': None, # AVERIGUAR COMO COMPLETAR ESTE CAMPO. AUN NO ES NECESARIO PORQUE YA TENEMOS CuitPaisCliente, NOT REQUIRED
+
+ 'Moneda_Id': inv.currency_id.afip_code,
+ 'Moneda_ctz': currency_obj.compute(cr, uid, inv.currency_id.id, inv.company_id.currency_id.id, 1.),
+
+ 'Obs_comerciales': inv.afip_export_obs_com,
+ 'Imp_total': inv.amount_total,
'Obs': inv.comment,
- 'CbtesAsoc': {'CbteAsoc': self.get_related_invoices(cr, uid, inv.id) },
-
- 'FormaPago': inv.payment_term,
- 'Incoterms': inv.payment_term, ####### HACER FUNCIONALIDAD DE INCOTERMS
- 'IncotermsDs': inv.payment_term, ####### HACER FUNCIONALIDAD DE INCOTERMS DESCRIPTION (VACIO WHEN Incoterms == None)
- 'IdiomaCbte': inv.payment_term, ####### HACER FUNCIONALIDAD IDIOMAS (son solo 3, necesario hacer una tabla?)
-
- 'Items': { 'Item': self.get_item(cr, uid, inv.id) }, ####### HACER FUNCIONALIDAD ITEMS
+ 'Cmps_asoc': {'Cmp_asoc': self.get_related_invoices(cr, uid, inv.id) },
+
+ 'Forma_pago': inv.payment_term.name,
+ 'Incoterms': inv.afip_export_incoterm.afip_export_incoterm_code,
+ 'Incoterms_Ds': inv.afip_export_incoterm.afip_export_incoterm_desc if inv.afip_export_incoterm.afip_export_incoterm_code else "", # MODIFICAR A QUE SEA ESCRITO POR EL USUARIO. ESTA TEMPORALMENTE DEFINIDO COMO SU PROPIA DESCRIPCION
+ 'Idioma_cbte': inv.afip_export_lang_invoice,
+
+ 'Items': { 'Item': self.get_item(cr, uid, inv.id) },
}.iteritems() if v is not None)
Inv2id[invoice_number] = inv.id
for c_id, req in Requests.iteritems():
conn = conn_obj.browse(cr, uid, c_id)
- res = serv_obj.wsfex_get_cae(cr, uid, [conn.server_id.id], c_id, req) # TODO:
+ res = serv_obj.wsfex_get_cae(cr, uid, [conn.server_id.id], c_id, req)
for k, v in res.iteritems():
if 'CAE' in v:
self.write(cr, uid, Inv2id[k], {
+ 'afip_export_id': next_id,
'afip_cae': v['CAE'],
'afip_cae_due': v['CAEFchVto'],
})
@@ -162,4 +376,53 @@
invoice()
+
+
+############## INCOTERMS
+
+class afip_incoterms(osv.osv):
+
+ _name = "afip.incoterms"
+ _rec_name = 'afip_export_incoterm_code'
+ _columns = {
+ 'afip_export_incoterm_code': fields.char('INCOTERM AFIP Code', size=3, required=True),
+ 'afip_export_incoterm_desc': fields.char('INCOTERM Description', size=20, required=True),
+ }
+
+ #wsfex_update_incoterms <-- se actualiza mediante esa funcion en wsafip_server
+
+afip_incoterms()
+
+
+
+############### Units of Measure
+
+class product_uom(osv.osv):
+
+ _name = 'product.uom'
+ _inherit = "product.uom"
+ _columns = {
+ 'afip_code': fields.integer('UoM AFIP Code', size=2, required=True),
+ }
+
+ #wsfex_update_uom <-- se actualiza mediante esa funcion en wsafip_server
+
+product_uom()
+
+
+
+############### EXPORT PERMISSIONS
+
+class afip_export_permissions(osv.osv):
+ _name = "afip.export.permissions"
+ _columns = {
+ 'invoice_id': fields.many2one('account.invoice', 'Invoice ID'),
+ 'permission_code': fields.char('Codigo Despacho/Permiso de Embarque', size=16),
+ 'dst_merc': fields.many2one('res.country', 'Pais destino de la mercaderia', domain="[('afip_code','!=',None)]"),
+ 'valid_permission': fields.boolean('Valid Permission')
+ }
+
+afip_export_permissions()
+
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== modified file 'l10n_ar_wsafip_fex/journal.py'
--- l10n_ar_wsafip_fex/journal.py 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/journal.py 2013-11-29 14:53:16 +0000
@@ -21,23 +21,72 @@
from openerp.osv import fields, osv
from openerp.tools.translate import _
import logging
+import urllib2
_logger = logging.getLogger(__name__)
+_schema = logging.getLogger(__name__ + '.schema')
class account_journal(osv.osv):
- #TODO: aqui deberia estar el _get_afip_items_generated para WSFEX.
- def _get_afip_items_generated(self, cr, uid, ids, fields_name, arg, context=None):
- if context is None:
- context={}
- glin = lambda conn, ps, jc: conn.server_id.wsfex_get_last_invoice_number(conn.id, ps, jc)[conn.server_id.id]
+ def _get_fex_afip_state(self, cr, uid, ids, fields_name, arg, context=None):
+
+ if context is None:
+ context={}
+ r={}
+ for journal in self.browse(cr, uid, ids):
+ conn = journal.afip_connection_id
+ if not conn:
+ r[journal.id] = 'not available'
+ elif conn.server_id.code != 'wsfex':
+ r[journal.id] = 'connection_service_error'
+ else:
+ # Try to login just one time.
+ try:
+ conn.login()
+ if conn.state not in [ 'connected', 'clockshifted' ]:
+ r[journal.id] = 'connection_error'
+ else:
+ authserver, appserver, dbserver = conn.server_id.wsfex_get_status(conn.id)[conn.server_id.id]
+ if authserver == 'OK':
+ r[journal.id] = 'connected'
+ else:
+ if appserver != 'OK':
+ r[journal.id] = 'connected_but_appserver_error'
+ elif dbserver != 'OK':
+ r[journal.id] = 'connected_but_dbserver_error'
+ else:
+ r[journal.id] = 'connected_but_servers_error'
+ except urllib2.URLError as e:
+ if e[0][0] == 101:
+ r[journal.id] = 'network_down'
+ if e[0][0] == 104:
+ r[journal.id] = 'connection_rejected'
+ elif e[0][0] == -2:
+ r[journal.id] = 'unknown_service'
+ else:
+ r[journal.id] = 'something_wrong'
+ except Exception as e:
+ r[journal.id] = 'something_wrong'
+ _logger.debug("Connection return: %s" % r[journal.id])
+ return r
+
+ def _get_fex_afip_items_generated(self, cr, uid, ids, fields_name, arg, context=None):
+ if context is None:
+ context={}
+ glinx = lambda conn, ps, jc: conn.server_id.wsfex_get_last_invoice_number(conn.id, ps, jc)[conn.server_id.id]
+ glin = lambda conn, ps, jc: conn.server_id.wsfe_get_last_invoice_number(conn.id, ps, jc)[conn.server_id.id]
r={}
for journal in self.browse(cr, uid, ids):
r[journal.id] = False
conn = journal.afip_connection_id
if conn and conn.server_id.code == 'wsfex':
try:
+ r[journal.id] = glinx(conn, journal.point_of_sale, journal.journal_class_id.afip_code)
+ except:
+ r[journal.id] = False
+ if conn and conn.server_id.code == 'wsfe':
+ try:
r[journal.id] = glin(conn, journal.point_of_sale, journal.journal_class_id.afip_code)
except:
r[journal.id] = False
@@ -46,7 +95,22 @@
_inherit = "account.journal"
_columns = {
- 'afip_items_generated': fields.function(_get_afip_items_generated, type='integer', string='Number of Invoices Generated',method=True,
+ 'afip_state': fields.function(_get_fex_afip_state, type='selection', string='Connection state',
+ method=True, readonly=True,
+ selection=[
+ ('connected','Connected'),
+ ('connection_error','Connection Error'),
+ ('connected_but_appserver_error','Application service has troubles'),
+ ('connected_but_dbserver_error','Database service is down'),
+ ('connected_but_authserver_error','Authentication service is down'),
+ ('connected_but_servers_error','Services are down'),
+ ('network_down','Network is down'),
+ ('unknown_service','Unknown service'),
+ ('connection_rejection','Connection reseted by host'),
+ ('something_wrong','Not identified error'),
+ ],
+ help="Connect to the AFIP and check service status."),
+ 'afip_items_generated': fields.function(_get_fex_afip_items_generated, type='integer', string='Number of Invoices Generated',method=True,
help="Connect to the AFIP and check how many invoices was generated.", readonly=True),
}
=== modified file 'l10n_ar_wsafip_fex/report/invoice.py'
--- l10n_ar_wsafip_fex/report/invoice.py 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/report/invoice.py 2013-11-29 14:53:16 +0000
@@ -36,9 +36,9 @@
})
report_sxw.report_sxw(
- 'report.account.invoice_fe',
+ 'report.account.invoice_fex',
'account.invoice',
- 'addons/l10n_ar_wsafip_fe/report/invoice.rml',
+ 'addons/l10n_ar_wsafip_fex/report/invoice.rml',
parser=fe_account_invoice,
header=False
)
=== removed directory 'l10n_ar_wsafip_fex/security'
=== removed file 'l10n_ar_wsafip_fex/security/ir.model.access.csv'
--- l10n_ar_wsafip_fex/security/ir.model.access.csv 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_afip_wsfex_error_manager","afip.wsfex_error.manager","model_afip_wsfex_error","group_wsafip_fex_admin",1,1,1,1
-"access_afip_wsfex_error_user","afip.wsfex_error.user","model_afip_wsfex_error","group_wsafip_fex_user",1,0,0,0
=== removed directory 'l10n_ar_wsafip_fex/test'
=== removed file 'l10n_ar_wsafip_fex/test/com_ri1.yml'
--- l10n_ar_wsafip_fex/test/com_ri1.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/com_ri1.yml 1970-01-01 00:00:00 +0000
@@ -1,80 +0,0 @@
-- Setup wizard to select argentine chart
-- !record {model: account.installer, id: acc_wiz_ivari }:
- company_id: com_ivari
- charts: l10n_ar_chart_generic
-
-- Execute wizard to create generic chart.
-- !python {model: account.installer }: |
- self.view_init(cr, uid, [ref("acc_wiz_ivari")], {})
- self.execute(cr, uid, [ref("acc_wiz_ivari")], {})
-
-- Setup wizard to create generic chart.
-- !record {model: wizard.multi.charts.accounts, id: cha_wiz_ivari }:
- chart_template_id: l10n_ar_chart_generic.ri_l10nAR_chart_template
- company_id: com_ivari
- bank_accounts_id: []
- code_digits: 8
- currency_id: 1
-
-- Execute wizard to create generic chart.
-- !python {model: wizard.multi.charts.accounts }: |
- self.view_init(cr, uid, [ref("acc_wiz_ivari")], {})
- r = self.onchange_company_id(cr, uid, [ref("cha_wiz_ivari")], ref("com_ivari"))
- self.write(cr, uid, [ref("cha_wiz_ivari")], r['value'])
- r = self.onchange_chart_template_id(cr, uid, [ref("cha_wiz_ivari")], ref("l10n_ar_chart_generic.ri_l10nAR_chart_template"))
- self.write(cr, uid, [ref("cha_wiz_ivari")], r['value'])
- self.execute(cr, uid, [ref("cha_wiz_ivari")], {})
-
-- Check if chart has been created.
-- !assert {model: wizard.multi.charts.accounts, id: cha_wiz_ivari, string: Select VAT taxes }:
- - sale_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_ventas")
- - purchase_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_compras")
-
-- Setup wizard to create journals for responsable inscripto
-- !record {model: l10n_ar_invoice.config, id: inv_wiz_ivari }:
- company_id: com_ivari
- cuit: 30712007288
- iibb: 1248845-03
- start_date: 2011-09-01
- responsability_id: !ref {model: afip.responsability, search: "[('name','=','IVA Responsable Inscripto')]"}
- do_export: False
- remove_old_journals: True
- point_of_sale: 1
-
-- Execute Wizard to create journals for responsable inscripto
-- !python {model: l10n_ar_invoice.config }: |
- self.view_init(cr, uid, [ref("inv_wiz_ivari")], {})
- self.update_journals(cr, uid, [ref("inv_wiz_ivari")], {})
- self.execute(cr, uid, [ref("inv_wiz_ivari")], {})
-
-- Check if exists journals associated to this company
-- !python {model: account.journal }: |
- journal_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- expected_journals = 3 * 3 * 2 + 2
- # # tipos de documentos, # Clase de Journals, Ventas y Compras, u'Miscellaneous Journal', u'Opening Entries Journal'
- if (len(journal_ids)!=expected_journals):
- print [ a.name for a in self.browse(cr, uid, journal_ids) ]
- raise AssertionError, 'Error in journals creation for Resp. Insc.. Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-- Check if exists periods associated to this company
-- !python {model: account.period }: |
- period_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- expected_periods=13
- if (len(period_ids)!=expected_periods):
- print [ a.name for a in self.browse(cr, uid, period_ids) ]
- raise AssertionError, 'Error in period creation for Resp. Insc.. Expected %i, exists %i.' % (expected_periods, len(period_ids))
-
-- Setup Wizard to connect to journals to webservice.
-- !record {model: l10n_ar_wsafip_fe.config, id: inv_wiz_ivari_fe }:
- company_id: com_ivari
- wsfe_certificate_id: cert_ar_0
- wsfe_for_homologation: True
- wsfe_point_of_sale: '1'
-
-- Execute Wizard to connect to journals to webservice.
-- !python {model: l10n_ar_wsafip_fe.config }: |
- self.execute(cr, uid, [ref("inv_wiz_ivari_fe")], {})
-
-#
-# El responsable inscripto esta listo para facturar electronicamente !!!
-#
=== removed file 'l10n_ar_wsafip_fex/test/com_ri2.yml'
--- l10n_ar_wsafip_fex/test/com_ri2.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/com_ri2.yml 1970-01-01 00:00:00 +0000
@@ -1,85 +0,0 @@
-- Setup wizard to select argentine chart
-- !record {model: account.installer, id: acc_wiz_ivari2 }:
- company_id: com_ivari2
- charts: l10n_ar_chart_generic
-
-- Execute wizard to create generic chart.
-- !python {model: account.installer }: |
- self.view_init(cr, uid, [ref("acc_wiz_ivari2")], {})
- self.execute(cr, uid, [ref("acc_wiz_ivari2")], {})
-
-- Setup wizard to create generic chart.
-- !record {model: wizard.multi.charts.accounts, id: cha_wiz_ivari2 }:
- chart_template_id: l10n_ar_chart_generic.ri_l10nAR_chart_template
- company_id: com_ivari2
- bank_accounts_id: []
- code_digits: 8
- currency_id: 1
-
-- Execute wizard to create generic chart.
-- !python {model: wizard.multi.charts.accounts }: |
- r = self.onchange_company_id(cr, uid, [ref("cha_wiz_ivari2")], ref("com_ivari2"))
- self.write(cr, uid, [ref("cha_wiz_ivari2")], r['value'])
- r = self.onchange_chart_template_id(cr, uid, [ref("cha_wiz_ivari2")], ref("l10n_ar_chart_generic.ri_l10nAR_chart_template"))
- self.write(cr, uid, [ref("cha_wiz_ivari2")], r['value'])
- self.execute(cr, uid, [ref("cha_wiz_ivari2")], {})
-
-- Check if chart has been created.
-- !assert {model: wizard.multi.charts.accounts, id: cha_wiz_ivari2, string: Select VAT taxes }:
- - sale_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_ventas")
- - purchase_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_compras")
-
-- Setup wizard to create journals for responsable inscripto
-- !record {model: l10n_ar_invoice.config, id: inv_wiz_ivari2 }:
- company_id: com_ivari2
- cuit: 30573652084
- iibb: 1248845-03
- start_date: 2011-09-01
- responsability_id: !ref {model: afip.responsability, search: "[('name','=','IVA Responsable Inscripto')]"}
- do_export: True
- remove_old_journals: True
- point_of_sale: 1
-
-- Execute Wizard to create journals for responsable inscripto
-- !python {model: l10n_ar_invoice.config }: |
- self.view_init(cr, uid, [ref("inv_wiz_ivari2")], {})
- self.update_journals(cr, uid, [ref("inv_wiz_ivari2")], {})
- self.execute(cr, uid, [ref("inv_wiz_ivari2")], {})
-
-- Check if exists journals associated to this company
-- !python {model: account.journal }: |
- journal_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- expected_journals = 3 * 3 * 2 + 2 # # tipos de documentos, # Clase de Journals, Ventas y Compras, u'Miscellaneous Journal', u'Opening Entries Journal'
- if (len(journal_ids)!=expected_journals):
- print [ a.name for a in self.browse(cr, uid, journal_ids) ]
- raise AssertionError, 'Error in journals creation for Resp. Insc.. Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
- journal_ids = self.search(cr, uid, [('company_id.name','=','Cablevision SA.')])
- expected_journals = 3 * 3 * 2 + 3 + 2 # # tipos de documentos, # Clase de Journals, Ventas y Compras, Ventas de Exportación, u'Miscellaneous Journal', u'Opening Entries Journal'
- if (len(journal_ids)!=expected_journals):
- print [ a.name for a in self.browse(cr, uid, journal_ids) ]
- raise AssertionError, 'Error in journals creation for Resp. Insc.. Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-- Check if exists periods associated to this company
-- !python {model: account.period }: |
- period_ids = self.search(cr, uid, [('company_id.name','=','Cablevision SA.')])
- expected_periods=13
- if (len(period_ids)!=expected_periods):
- print [ a.name for a in self.browse(cr, uid, period_ids) ]
- raise AssertionError, 'Error in period creation for Resp. Insc.. Expected %i, exists %i.' % (expected_periods, len(period_ids))
-
-#- Setup Wizard to connect to journals to webservice.
-#- !record {model: l10n_ar_wsafip_fe.config, id: inv_wiz_ivari2_fe }:
-# company_id: com_ivari2
-# wsfe_certificate_id: cert_ar_0
-# wsfe_for_homologation: True
-# wsfe_point_of_sale: '1'
-#
-#- Execute Wizard to connect to journals to webservice.
-#- !python {model: l10n_ar_wsafip_fe.config }: |
-# self.execute(cr, uid, [ref("inv_wiz_ivari2_fe")], {})
-
-
-#
-# El responsable inscripto esta listo para facturar !!!
-#
=== removed file 'l10n_ar_wsafip_fex/test/com_rm1.yml'
--- l10n_ar_wsafip_fex/test/com_rm1.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/com_rm1.yml 1970-01-01 00:00:00 +0000
@@ -1,72 +0,0 @@
-#
-# Wizard que selecciona la contabilidad argentina
-#
-- !record {model: account.installer, id: acc_wiz_rm }:
- company_id: com_rm
- charts: l10n_ar_chart_generic
-
-
-- !python {model: account.installer }: |
- self.view_init(cr, uid, [ref("acc_wiz_rm")], {})
- self.execute(cr, uid, [ref("acc_wiz_rm")], {})
-
-#
-# Wizard que selecciona el plan contable. NOTAR QUE USO EL DE RESPONSABLE INSCRIPTO PORQUE EL DE MONOTRIBUTO NO FUNCIONA!
-#
-- !record {model: wizard.multi.charts.accounts, id: cha_wiz_rm }:
- chart_template_id: l10n_ar_chart_generic.ri_l10nAR_chart_template
- company_id: com_rm
- bank_accounts_id: []
- code_digits: 8
- currency_id: 1
-
-- !python {model: wizard.multi.charts.accounts }: |
- self.view_init(cr, uid, [ref("acc_wiz_rm")], {})
- r = self.onchange_company_id(cr, uid, [ref("cha_wiz_rm")], ref("com_rm"))
- self.write(cr, uid, [ref("cha_wiz_rm")], r['value'])
- r = self.onchange_chart_template_id(cr, uid, [ref("cha_wiz_rm")], ref("l10n_ar_chart_generic.ri_l10nAR_chart_template"))
- self.write(cr, uid, [ref("cha_wiz_rm")], r['value'])
- self.execute(cr, uid, [ref("cha_wiz_rm")], {})
-
-- !assert {model: wizard.multi.charts.accounts, id: cha_wiz_rm, string: Select VAT taxes }:
- - sale_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_ventas")
- - purchase_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_compras")
-
-#
-# Wizard que crea los journals para un responsable inscripto
-#
-- !record {model: l10n_ar_invoice.config, id: inv_wiz_rm }:
- company_id: com_rm
- cuit: 23250954549
- iibb: 0-0
- start_date: 2011-09-01
- responsability_id: l10n_ar_invoice.res_RM
- do_export: False
- remove_old_journals: True
- point_of_sale: 1
-
-- !python {model: l10n_ar_invoice.config }: |
- self.view_init(cr, uid, [ref("inv_wiz_rm")], {})
- self.update_journals(cr, uid, [ref("inv_wiz_rm")], {})
- self.execute(cr, uid, [ref("inv_wiz_rm")], {})
-
-- Check if exists journals associated to this company
-- !python {model: account.journal }: |
- journal_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- expected_journals = 3 * 3 * 2 + 2 # # tipos de documentos, # Clase de Journals, Ventas y Compras, u'Miscellaneous Journal', u'Opening Entries Journal'
- if (len(journal_ids)!=expected_journals):
- print [ a.name for a in self.browse(cr, uid, journal_ids) ]
- raise AssertionError, 'Error in journals creation for Monotributista Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-- Check if exists periods associated to this company
-- !python {model: account.period }: |
- period_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- expected_periods=13
- if (len(period_ids)!=expected_periods):
- print [ a.name for a in self.browse(cr, uid, period_ids) ]
- raise AssertionError, 'Error in period creation for Resp. Insc.. Expected %i, exists %i.' % (expected_periods, len(period_ids))
-
-#
-# El responsable monotributo esta listo para facturar !!!
-#
-
=== removed file 'l10n_ar_wsafip_fex/test/inv_2iva.yml'
--- l10n_ar_wsafip_fex/test/inv_2iva.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/inv_2iva.yml 1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-#
-# Create an invoice from Resp Inscr to Resp Inscr.
-# For two products with different vat
-#
-- Create a simple invoice type A
-- !record {model: account.invoice, id: inv_ri2ri_2iva}:
- company_id: com_ivari
- partner_id: par_ivari2
- journal_id: !ref {model: account.journal, search: "[('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- period_id: !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- invoice_line:
- - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- name: '[PC3] Medium PC'
- price_unit: 900.0
- quantity: 10.0
- product_id: prod_iva21
- uos_id: product.product_uom_unit
- invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003004:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- name: '[PC4] Big PC'
- price_unit: 1900.0
- quantity: 3.0
- product_id: prod_iva10
- uos_id: product.product_uom_unit
- invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-
-- Compute amount
-- !python {model: account.invoice}: |
- inv_id = [ref('inv_ri2ri_2iva')]
- self.view_init(cr, uid, inv_id, {})
- self.button_compute(cr, uid, inv_id)
-
-- Validate invoice
-- !workflow {model: account.invoice, action: invoice_open, ref: inv_ri2ri_2iva}
-
-- Check CAE invoice number
-- !assert {model: account.invoice, id: inv_ri2ri_2iva, string: CAE has been assigned}:
- - afip_cae != ''
- - afip_cae_due != ''
-
=== removed file 'l10n_ar_wsafip_fex/test/inv_2prod.yml'
--- l10n_ar_wsafip_fex/test/inv_2prod.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/inv_2prod.yml 1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-#
-# Create an invoice from Resp Inscr to Resp Inscr.
-# For two products with vat
-#
-- Create a simple invoice type B
-- !record {model: account.invoice, id: inv_ri2rm_2prod}:
- company_id: com_ivari
- partner_id: par_rm
- journal_id: !ref {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- period_id: !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- invoice_line:
- - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- name: '[PC3] Medium PC'
- price_unit: 900.0
- quantity: 10.0
- product_id: prod_iva21
- uos_id: product.product_uom_unit
- invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- name: '[PC4] Big PC'
- price_unit: 1900.0
- quantity: 3.0
- product_id: prod_iva21
- uos_id: product.product_uom_unit
- invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-
-- Compute amount
-- !python {model: account.invoice}: |
- inv_id = [ref('inv_ri2rm_2prod')]
- self.view_init(cr, uid, inv_id, {})
- self.button_compute(cr, uid, inv_id)
-
-- Validate invoice
-- !workflow {model: account.invoice, action: invoice_open, ref: inv_ri2rm_2prod}
-
-- Check CAE invoice number
-- !assert {model: account.invoice, id: inv_ri2rm_2prod, string: CAE has been assigned}:
- - afip_cae != ''
- - afip_cae_due != ''
-
=== removed file 'l10n_ar_wsafip_fex/test/invoice.yml'
--- l10n_ar_wsafip_fex/test/invoice.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/invoice.yml 1970-01-01 00:00:00 +0000
@@ -1,33 +0,0 @@
-#
-# Create an invoice from Resp Inscr to Resp Inscr.
-#
-- Create a simple invoice type B
-- !record {model: account.invoice, id: inv_ri2rm}:
- company_id: com_ivari
- partner_id: par_rm
- journal_id: !ref {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- period_id: !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- invoice_line:
- - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
- name: '[PC3] Medium PC'
- price_unit: 900.0
- quantity: 10.0
- product_id: prod_iva21
- uos_id: product.product_uom_unit
- invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-
-- Compute amount
-- !python {model: account.invoice}: |
- inv_id = [ref('inv_ri2rm')]
- self.view_init(cr, uid, inv_id, {})
- self.button_compute(cr, uid, inv_id)
-
-- Validate invoice
-- !workflow {model: account.invoice, action: invoice_open, ref: inv_ri2rm}
-
-- Check CAE invoice number
-- !assert {model: account.invoice, id: inv_ri2rm, string: CAE has been assigned}:
- - afip_cae != ''
- - afip_cae_due != ''
-
=== removed file 'l10n_ar_wsafip_fex/test/journal.yml'
--- l10n_ar_wsafip_fex/test/journal.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/journal.yml 1970-01-01 00:00:00 +0000
@@ -1,51 +0,0 @@
-#
-# Preparando Authorización
-#
-- Batch Sequence
-- !record {model: ir.sequence, id: fe_sequence_0}:
- name: FE Web Service AFIP Sequence
- code: ws_afip_sequence
-
-- In order to test afip webservices append an FE service instance
-- !record {model: wsafip.connection, id: connection_ar_0}:
- name: Moldeo Interactive FE
- partner_id: par_ivari
- logging_id: l10n_ar_wsafip.wsaa_homo
- server_id: wsfe_homo
- certificate: cert_ar_0
- batch_sequence_id: fe_sequence_0
-
-#
-# Preparando Journal
-#
-- Update journal for Electronic Invoice. Invoice type A.
-- !python {model: account.journal}: |
- journal_id = self.search(cr, uid, [('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- self.write(cr, uid, journal_id, {'afip_connection_id': ref("connection_ar_0")})
- journal_id = self.search(cr, uid, [('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- self.write(cr, uid, journal_id, {'afip_connection_id': ref("connection_ar_0")})
-
-- Check status of connection.
-- !python {model: account.journal}: |
- journal_id = self.search(cr, uid, [('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- data = self.read(cr, uid, journal_id)
-
-- Check status of connection.
-- !assert {model: account.journal, search: "[('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Connection must happen}:
- - afip_state == 'connected'
- - afip_items_generated >= 0
-
-- Check status of connection.
-- !python {model: account.journal}: |
- journal_id = self.search(cr, uid, [('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
- data = self.read(cr, uid, journal_id)
-
-- Check status of connection.
-- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Connection must happen}:
- - afip_state == 'connected'
- - afip_items_generated >= 0
-
-#- Test
-#- !python {model: account.journal }: |
-# import pdb; pdb.set_trace()
-
=== removed file 'l10n_ar_wsafip_fex/test/partners.yml'
--- l10n_ar_wsafip_fex/test/partners.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/partners.yml 1970-01-01 00:00:00 +0000
@@ -1,247 +0,0 @@
-#
-# Consumidor final mas de 1000 $
-#
-- !record {model: res.partner, id: par_cf_gm }:
- name: Cristian Sebastian Rocha
- responsability_id: l10n_ar_invoice.res_CF
- document_type_id: l10n_ar_invoice.dt_DNI
- document_number: 25095454
- street: Av. Rivadavia
- city: Capital Federal
- state_id: l10n_ar_states.C
- country_id: base.ar
- zip: 1407
-
-#
-# IVA exento
-#
-- Create partner
-- !record {model: res.partner, id: par_ivae }:
- name: ASOCIACION DOCENTES DE LA UNIVERSIDAD NACIONAL DE BUENOS AIRES
- responsability_id: l10n_ar_invoice.res_IVAE
- document_type_id: l10n_ar_invoice.dt_CUIT
- document_number: 30681521077
- vat: ar30681521077
- street: Azcuenaga 770
- city: Capital Federal
- state_id: l10n_ar_states.C
- country_id: base.ar
- zip: 1029
-
-- Create company
-- !record {model: res.company, id: com_ivae }:
- name: ASOCIACION DOCENTES DE LA UNIVERSIDAD NACIONAL DE BUENOS AIRES
- partner_id: par_ivae
- rml_header1: .
- rml_header2: Web - Tel -
- rml_header3: CUIT -
- currency_id: base.ARS
-
-#
-# IVA responsable inscripto
-#
-- Create partner
-- !record {model: res.partner, id: par_ivari }:
- name: Coop. Trab. Moldeo Interactive Ltda.
- responsability_id: l10n_ar_invoice.res_IVARI
- document_type_id: l10n_ar_invoice.dt_CUIT
- document_number: 30712007288
- vat: ar30712007288
- street: Castillo 1336 12A
- city: Capital Federal
- state_id: l10n_ar_states.C
- country_id: base.ar
- zip: 1414
-
-- Create company
-- !record {model: res.company, id: com_ivari }:
- name: Coop. Trab. Moldeo Interactive Ltda.
- partner_id: par_ivari
- rml_header1: .
- rml_header2: Web - Tel -
- rml_header3: CUIT -
- currency_id: base.ARS
-
-- Create account company
-- !record {model: ir.property, id: prop_paec_ivari}:
- company_id: com_ivari
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- Create partner company
-- !record {model: ir.property, id: prop_paic_ivari}:
- company_id: com_ivari
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-#
-# IVA responsable inscripto
-#
-- Create partner
-- !record {model: res.partner, id: par_ivari2 }:
- name: Cablevision SA.
- responsability_id: l10n_ar_invoice.res_IVARI
- document_type_id: l10n_ar_invoice.dt_CUIT
- document_number: 30573652084
- vat: ar30573652084
- street: Hornos 690
- city: Capital Federal
- state_id: l10n_ar_states.C
- country_id: base.ar
- zip: 1414
-
-- Create company
-- !record {model: res.company, id: com_ivari2 }:
- name: Cablevision SA.
- partner_id: par_ivari2
- rml_header1: .
- rml_header2: Web - Tel -
- rml_header3: CUIT -
- currency_id: base.ARS
-
-- Create account company
-- !record {model: ir.property, id: prop_paec_ivari2}:
- company_id: com_ivari2
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- Create partner company
-- !record {model: ir.property, id: prop_paic_ivari2}:
- company_id: com_ivari2
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-- Property
-- !record {model: ir.property, id: prop_paec_ivari2}:
- company_id: com_ivari2
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- Property
-- !record {model: ir.property, id: prop_paic_ivari2}:
- company_id: com_ivari2
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-# IVA responsable no inscripto
-#
-- Create partner
-- !record {model: res.partner, id: par_ivarni }:
- name: FUNDACION UNIVERSIDAD NACIONAL
- responsability_id: l10n_ar_invoice.res_IVARNI
- document_type_id: l10n_ar_invoice.dt_CUIT
- document_number: 30642332771
- vat: ar30642332771
- street: Roca Julio A. Pte. Av. 733, 5
- city: Capital Federal
- state_id: l10n_ar_states.C
- country_id: base.ar
- zip: 1067
-
-- Create company
-- !record {model: res.company, id: com_ivarni }:
- name: FUNDACION UNIVERSIDAD NACIONAL
- partner_id: par_ivarni
- rml_header1: .
- rml_header2: Web - Tel -
- rml_header3: CUIT -
- currency_id: base.ARS
-
-- Set account company properties
-- !record {model: ir.property, id: prop_paec_ivarni}:
- company_id: com_ivarni
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- !record {model: ir.property, id: prop_paic_ivarni}:
- company_id: com_ivarni
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-# IVA no responsable, no alcanzado
-#
-- Create partner
-- !record {model: res.partner, id: par_ivanr }:
- name: CONSORCIO DE PROPIETARIOS EDIFICIO UNIVERSIDAD
- responsability_id: l10n_ar_invoice.res_IVANR
- document_type_id: l10n_ar_invoice.dt_CUIT
- document_number: 33707348629
- vat: ar33707348629
- street: Urquiza 494
- city: Parana
- state_id: l10n_ar_states.E
- country_id: base.ar
- zip: 3100
-
-- Create company
-- !record {model: res.company, id: com_ivanr }:
- name: CONSORCIO DE PROPIETARIOS EDIFICIO UNIVERSIDAD
- partner_id: par_ivanr
- rml_header1: .
- rml_header2: Web - Tel -
- rml_header3: CUIT -
- currency_id: base.ARS
-
-- Set account company properties
-- !record {model: ir.property, id: prop_paec_ivanr}:
- company_id: com_ivanr
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- !record {model: ir.property, id: prop_paic_ivanr}:
- company_id: com_ivanr
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-# Responsable monotributo
-#
-- Create partner
-- !record {model: res.partner, id: par_rm }:
- name: Cristian S. Rocha
- responsability_id: l10n_ar_invoice.res_RM
- document_type_id: l10n_ar_invoice.dt_CUIT
- document_number: 23250954549
- vat: ar23250954549
- street: Av. Rivadavia
- city: Capital Federal
- state_id: l10n_ar_states.C
- country_id: base.ar
- zip: 1407
-
-- Create company
-- !record {model: res.company, id: com_rm }:
- name: Cristian S. Rocha
- partner_id: par_rm
- rml_header1: .
- rml_header2: Web - Tel -
- rml_header3: CUIT -
- currency_id: base.ARS
-
-- Set account company properties
-- !record {model: ir.property, id: prop_paec_rm}:
- company_id: com_rm
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- !record {model: ir.property, id: prop_paic_rm}:
- company_id: com_rm
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-
=== removed file 'l10n_ar_wsafip_fex/test/products.yml'
--- l10n_ar_wsafip_fex/test/products.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/products.yml 1970-01-01 00:00:00 +0000
@@ -1,46 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-#
-# Los siguientes productos son necesarios para calcular correctamente los
-# impuestos en las facturas.
-#
-#-----------------------------------------------------------------------------
-- Create product with IVA 0%
-- !record {model: product.product, id: prod_iva0 }:
- name: Producto IVA 0%
- taxes_id: !ref {model: account.tax, search: "[('name','=','01003000:V')]"}
-
-- Create product with IVA 10.5%
-- !record {model: product.product, id: prod_iva10 }:
- name: Producto IVA 10.5%
- taxes_id: !ref {model: account.tax, search: "[('name','=','01003004:V')]"}
-
-- Create product with IVA 21%
-- !record {model: product.product, id: prod_iva21 }:
- name: Producto IVA 21%
- taxes_id: !ref {model: account.tax, search: "[('name','=','01003005:V')]"}
-
-- Create product with IVA 27%
-- !record {model: product.product, id: prod_iva27 }:
- name: Producto IVA 27%
- taxes_id: !ref {model: account.tax, search: "[('name','=','01003006:V')]"}
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== removed file 'l10n_ar_wsafip_fex/test/test_key.yml'
--- l10n_ar_wsafip_fex/test/test_key.yml 2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/test_key.yml 1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
--
- # Clave privada y Certificado asignado por AFIP.
-
- # En este registro hay que cargar la clave de testing de Homologacion
- # recibido desde la AFIP. Ver última sección de:
-
- # http://www.afip.gob.ar/ws/WSAA/WSAA.ObtenerCertificado.pdf
-
- # Nota: Para el caso del entorno de Testing, envíelo por e-mail a webservices@xxxxxxxxxxx
- # aclarando a qué WS "de negocio" (por ej.: "wsfe", "wsseg", etc.)
- # pretende acceder usando este certificado. El certificado le será devuelto por e-mail.
-
- Private key
--
- !record {model: crypto.pairkey, id: pkey_ar_0}:
- name: Clave de Homologacion (Testing)
- state: confirmed
- key: |
- -----BEGIN RSA PRIVATE KEY-----
- MIICWwIBAAKBgQCrJtlRocuiWqRpjpuWXmcmH+nvRDonQb0OvtdLOp01knuzBDK5
- OT/F7rxyqibP+/ryD1uRDpP+SVCdfbimJuKiLuRwt8xoGvSrf9VEhvMu/iWLLbSh
- 6aj52kPqX4Bvlu84CZQcvGkrIn8M+tCxGGaWvaPTSrIf2ehRsdgFtnuf3QIDAQAB
- AoGAXoTg5W0mCW5neAgSsrNF4c8kIUgbmYx7fUY1nc0r/ub7u3xpCtOr/YJ/vg9r
- ydbN2ppSpkRXxMn2ZFOHAvNcmu9j9wwG8uGxL8KEyFhJMtGVnqpu1eFu0pi3Ac9a
- 4kNO6iaeIgWD5rgo6Hv35YNtTqi10U+D5Mfhg540h3anOp0CQQDXFUYFdUFKOmeo
- dZee486Vxpr+GRSkaq3zvVUVK8Lf9Xa49lAB3UVN0rgW7hpa736Cm93uqtEc9Y4h
- 727nS5x3AkEAy7YVCBFKVRZ1+mkVbwFxEQyY8eInenFizLfsClzsucvq6JiW3mwY
- VTlWkxBrcVvj+xYIsCt2sGX7kAVLYSi/SwJAOQGAb43mYiAcvT99kjVa2cOr7NEE
- 8Zb8x+9Uj6nrmqRadSeDiRr2dWv2Ms2k2plDdKaPKeTIS96hb0kgodkefQJARDzF
- BMPN83ynnm8O5/VCq6Rdo0DPWpuardq6Lap8/avKD4n1l6H78KhZUMACTaGrV5NE
- 68ZTZrlysAal/nDIywJAHyl5r0gQOZu6lgkf/O4hTkNzUUXg2hnDGoTggxggzqlD
- C0hJio5saIsiAa5EQnFns7vxe312lpnh6/Wpke1cMw==
- -----END RSA PRIVATE KEY-----
-
--
- Certificate
--
- !record {model: crypto.certificate, id: cert_ar_0}:
- name: Certificado de Homologacion (Testing)
- state: confirmed
- pairkey_id: pkey_ar_0
- crt: |
- -----BEGIN CERTIFICATE-----
- MIIDuDCCAqCgAwIBAgIICZB6jxDNsZowDQYJKoZIhvcNAQEFBQAwQzElMCMGA1UE
- AwwcQUZJUCBUZXN0aW5nIENvbXB1dGFkb3JlcyBDQTENMAsGA1UECgwEQUZJUDEL
- MAkGA1UEBhMCQVIwHhcNMTIwMzAxMTM0MTExWhcNMTQxMTI2MTM0MTExWjBWMQ8w
- DQYDVQQDDAZtb2xkZW8xGTAXBgNVBAUTEENVSVQgMzA3MTIwMDcyODgxGzAZBgNV
- BAoMEk1vbGRlbyBJbnRlcmFjdGl2ZTELMAkGA1UEBhMCQVIwgZ8wDQYJKoZIhvcN
- AQEBBQADgY0AMIGJAoGBAKsm2VGhy6JapGmOm5ZeZyYf6e9EOidBvQ6+10s6nTWS
- e7MEMrk5P8XuvHKqJs/7+vIPW5EOk/5JUJ19uKYm4qIu5HC3zGga9Kt/1USG8y7+
- JYsttKHpqPnaQ+pfgG+W7zgJlBy8aSsifwz60LEYZpa9o9NKsh/Z6FGx2AW2e5/d
- AgMBAAGjggEfMIIBGzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNV
- HQ4EFgQU2XV8B8HtxbDobe/BNlkJ5kAPt1MwHwYDVR0jBBgwFoAURHTutJwm31bh
- wQ3rVwuQGTY9lgEwgboGA1UdIASBsjCBrzCBrAYOKwYBBAGBu2MBAgECAQEwgZkw
- gZYGCCsGAQUFBwICMIGJHoGGAEMAZQByAHQAaQBmAGkAYwBhAGQAbwAgAHAAYQBy
- AGEAIABjAG8AbQBwAHUAdABhAGQAbwByAGUAcwAgAHMAbwBsAG8AIAB2AGEAbABp
- AGQAbwAgAGUAbgAgAGUAbgB0AG8AcgBuAG8AcwAgAGQAZQAgAGQAZQBzAGEAcgBy
- AG8AbABsAG8wDQYJKoZIhvcNAQEFBQADggEBAIDXCIVRQy65rts923TgwD/BX6hq
- jpTc73CeMxD09vJlB135WWX7EhIVOpkl6c3Ag54YLPQnzfyt9CKhwnHfH8loi0EU
- aq79T4hQOL+rWFpzY6MzeLhOAFuDLQ9z9LSrJIBxwwkFh2aUAC2Awv6sllI6DTya
- mBYDom4pcCgRfiH++i+bKrcy+On116aAtG/9STTG7XhgeDZ2ceUsrh9h0anpRHMm
- rrPvtK9VllyaAd6So1mKhhCobZD1EJ6ZqoGCgiKT3Cja1Q6FrEneeM93Uds0Wbvz
- SxMgzy/J4dB2ypBayBIFKIG4AuoscCIAXgjagsbq5HyFYuDrj9iLOBhDJuI=
- -----END CERTIFICATE-----
-
=== modified file 'l10n_ar_wsafip_fex/wsafip_server.py'
--- l10n_ar_wsafip_fex/wsafip_server.py 2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/wsafip_server.py 2013-11-29 14:53:16 +0000
@@ -25,7 +25,52 @@
import sys
from sslhttps import HttpsTransport
-# logging.getLogger('suds.transport').setLevel(logging.DEBUG)
+#~ logging.getLogger('suds.transport').setLevel(logging.DEBUG)
+_logger = logging.getLogger(__name__)
+
+def _update_incoterms(pool, cr, uid, model_name, remote_list, can_create=True, domain=[]):
+ #~ import pdb; pdb.set_trace()
+ model_obj = pool.get(model_name)
+
+ # Build set of AFIP codes
+ rem_afip_code_set = set([ i['afip_export_incoterm_code'] for i in remote_list ])
+
+ # Take exists instances
+ sto_ids = model_obj.search(cr, uid, domain)
+ sto_list = model_obj.read(cr, uid, sto_ids, ['afip_export_incoterm_code'])
+ sto_afip_code_set = set([ i['afip_export_incoterm_code'] for i in sto_list ])
+
+ # Append new afip_code
+ to_append = rem_afip_code_set - sto_afip_code_set
+ if to_append and can_create:
+ for item in [ i for i in remote_list if i['afip_export_incoterm_code'] in to_append ]:
+ model_obj.create(cr, uid, item)
+ elif to_append and not can_create:
+ _logger.warning('New items of type %s in WS. Wont be created.' % model_name)
+
+ # Update active document types
+ to_update = rem_afip_code_set & sto_afip_code_set
+ update_dict = dict( [ (i['afip_export_incoterm_code'], i['active']) for i in remote_list
+ if i['afip_export_incoterm_code'] in to_update ])
+ to_active = [ k for k,v in update_dict.items() if v ]
+ if to_active:
+ model_ids = model_obj.search(cr, uid, [('afip_export_incoterm_code','in',to_active),('active','in',['f',False])])
+ model_obj.write(cr, uid, model_ids, {'active':True})
+
+ to_deactive = [ k for k,v in update_dict.items() if not v ]
+ if to_deactive:
+ model_ids = model_obj.search(cr, uid, [('afip_export_incoterm_code','in',to_deactive),('active','in',['t',True])])
+ model_obj.write(cr, uid, model_ids, {'active':False})
+
+ # To disable exists local afip_code but not in remote
+ #~ to_inactive = sto_afip_code_set - rem_afip_code_set
+ #~ if to_inactive:
+ #~ model_ids = model_obj.search(cr, uid, [('afip_export_incoterm_code','in',list(to_inactive))])
+ #~ model_obj.write(cr, uid, model_ids, {'active':False})
+
+ _logger.info('Updated %s items' % model_name)
+
+ return True
class wsafip_server(osv.osv):
_name = "wsafip.server"
@@ -132,102 +177,22 @@
# Take list of available Incoterms
incoterms_list = [
- {'afip_incoterm_code': res.Inc_Id,
- 'incoterm_dsc': res.Inc_Ds }
+ {'afip_export_incoterm_code': res.Inc_Id,
+ 'afip_export_incoterm_desc': res.Inc_Ds }
for res in response.FEXResultGet.ClsFEXResponse_Inc ]
except Exception as e:
_logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
raise osv.except_osv(_(u'AFIP Web service error'),
_(u'System return error %i: %s') % (e[0], e[1]))
- _update(self.pool, cr, uid,
- 'afip.fex_incoterms',
+ _update_incoterms(self.pool, cr, uid,
+ 'afip.incoterms',
incoterms_list,
can_create=True
)
return
- def wsfex_update_currency(self, cr, uid, ids, conn_id, context=None):
- """
- Update currency. This function must be called from connection model.
-
- AFIP Description: Recupera el listado de monedas y su codigo utilizables en servicio de autorizacion (FEXGetPARAM_MON)
- """
- conn_obj = self.pool.get('wsafip.connection')
-
- for srv in self.browse(cr, uid, ids, context=context):
- # Ignore servers without code WSFEX.
- if srv.code != 'wsfex': continue
-
- # Take the connection, continue if connected or clockshifted
- conn = conn_obj.browse(cr, uid, conn_id, context=context)
- conn.login() # Login if necessary.
- if conn.state not in [ 'connected', 'clockshifted' ]: continue
-
- try:
- _logger.info('Updating currency from AFIP Web service')
- srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
- response = srvclient.service.FEXGetPARAM_MON(Auth=conn.get_auth())
-
- # Take list of currency
- currency_list = [
- { 'afip_code': c.Mon_Id,
- 'name': c.Mon_Ds }
- for c in response.FEXResultGet.ClsFEXResponse_Mon
- ]
- except Exception as e:
- _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
- raise osv.except_osv(_(u'AFIP Web service error'),
- _(u'System return error %i: %s') % (e[0], e[1]))
-
- _update(self.pool, cr, uid,
- 'res.currency',
- currency_list,
- can_create=False
- )
- return True
-
- def wsfex_update_uom(self, cr, uid, ids, conn_id, context=None):
- """
- Update UoM. This function must be called from connection model.
-
- AFIP Description: Recupera el listado de las unidades de medida y su codigo utilizables en servicio de autorizacion (FEXGetPARAM_UMed)
- """
- conn_obj = self.pool.get('wsafip.connection')
-
- for srv in self.browse(cr, uid, ids, context=context):
- # Ignore servers without code WSFEX.
- if srv.code != 'wsfex': continue
-
- # Take the connection, continue if connected or clockshifted
- conn = conn_obj.browse(cr, uid, conn_id, context=context)
- conn.login() # Login if necessary.
- if conn.state not in [ 'connected', 'clockshifted' ]: continue
-
- try:
- _logger.info('Updating UoM from AFIP Web service')
- srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
- response = srvclient.service.FEXGetPARAM_UMed(Auth=conn.get_auth())
-
- # Take list of UoM available
- uom_list = [
- { 'afip_code': c.Umed_Id,
- 'name': c.Umed_Ds }
- for c in response.FEXResultGet.ClsFEXResponse_UMed
- ]
- except Exception as e:
- _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
- raise osv.except_osv(_(u'AFIP Web service error'),
- _(u'System return error %i: %s') % (e[0], e[1]))
-
- _update(self.pool, cr, uid,
- 'product.uom',
- uom_list,
- can_create=True
- )
- return True
-
def wsfex_get_last_invoice_number(self, cr, uid, ids, conn_id, ptoVta, cbteTipo, context=None):
"""
Get last invoice number from AFIP
@@ -235,7 +200,7 @@
AFIP Description: Recupera el ultimo comprobante autorizado (FEXGetLast_CMP)
"""
conn_obj = self.pool.get('wsafip.connection')
-
+ #~ import pdb; pdb.set_trace()
r={}
for srv in self.browse(cr, uid, ids, context=context):
@@ -250,9 +215,13 @@
continue
try:
+ #~ import pdb; pdb.set_trace()
_logger.info('Take last invoice number from AFIP Web service')
srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
- response = srvclient.service.FEXGetLast_CMP(Auth=conn.get_auth(), PtoVta=ptoVta, CbteTipo=cbteTipo)
+ auth = conn.get_auth()
+ auth['Cbte_Tipo'] = cbteTipo
+ auth['Pto_venta'] = ptoVta
+ response = srvclient.service.FEXGetLast_CMP(auth)
except Exception as e:
_logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
@@ -261,24 +230,22 @@
u'Pueda que esté intente realizar esta operación'
u'desde el servidor de homologación.'
u'Intente desde el servidor de producción.') % (e[0], e[1]))
-
- if hasattr(response, 'Errors'):
- for e in response.Errors.Err:
- code = e.Code
- _logger.error('AFIP Web service error!: (%i) %s' % (e.Code, e.Msg))
+ if (response.FEXErr.ErrCode != 0):
+ # Existe Error!
+ _logger.error('AFIP Web service error!: (%i) %s' % (response.FEXErr.ErrCode, response.FEXErr.ErrMsg))
r[srv.id] = False
else:
- r[srv.id] = int(response.FEXGetLast_CMPResult.FEXResult_LastCMP.CbteNro)
+ r[srv.id] = int(response.FEXResult_LastCMP.Cbte_nro)
return r
def wsfex_get_last_id(self, cr, uid, ids, conn_id, context=None):
"""
Get Last ID number from AFIP.
- AFIP Description: Recupera el ultimo ID y su fecha (FEXGetLast_ID)
+ AFIP Description: Recupera el ultimo ID (FEXGetLast_ID)
"""
conn_obj = self.pool.get('wsafip.connection')
-
+ #~ import pdb; pdb.set_trace()
for srv in self.browse(cr, uid, ids, context=context):
# Ignore servers without code WSFEX.
if srv.code != 'wsfex': continue
@@ -291,7 +258,7 @@
continue
try:
- _logger.info('Take last invoice number from AFIP Web service')
+ _logger.info('Take last ID number from AFIP Web service')
srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
response = srvclient.service.FEXGetLast_ID(Auth=conn.get_auth())
@@ -302,17 +269,16 @@
u'Pueda que esté intente realizar esta operación'
u'desde el servidor de homologación.'
u'Intente desde el servidor de producción.') % (e[0], e[1]))
-
- if hasattr(response, 'Errors'):
- for e in response.Errors.Err:
- code = e.Code
- _logger.error('AFIP Web service error!: (%i) %s' % (e.Code, e.Msg))
- r[srv.id] = False
+
+ if (response.FEXErr.ErrCode != 0):
+ # Existe Error!
+ _logger.error('AFIP Web service error!: (%i) %s' % (response.FEXErr.ErrCode, response.FEXErr.ErrMsg))
+ r = False
else:
- r[srv.id] = int(response.FEXGetLast_IDResult.FEXResultGet.Id)
+ r = int(response.FEXResultGet.Id)
return r
- def wsfex_check_permissions(client, token, sign, cuit, id_permiso, dst_merc):
+ def wsfex_check_permissions(self, cr, uid, ids, conn_id, id_permiso, dst_merc, context=None):
"""
Check shipment/destination country permissions from AFIP
@@ -352,7 +318,7 @@
_logger.error('AFIP Web service error!: (%i) %s' % (e.Code, e.Msg))
r[srv.id] = False
else:
- r[srv.id] = str(response.FEXCheck_PermisoResult.FEXResultGet.Status)
+ r[srv.id] = str(response.FEXResultGet.Status)
return r
def wsfex_get_cae(self, cr, uid, ids, conn_id, invoice_request, context=None):
@@ -378,35 +344,35 @@
try:
srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
first = invoice_request.keys()[0]
+ #~ import pdb; pdb.set_trace()
response = srvclient.service.FEXAuthorize(Auth=conn.get_auth(),
Cmp = [dict([(k,v) for k,v in req.iteritems()]) for req in invoice_request.itervalues()]
)
- except WebFault as e:
- #~ import pdb; pdb.set_trace()
- _logger.error('WebFault Error!: %s' % (e))
- raise osv.except_osv(_(u'WebFault Error!'),
- _(u'Error: %s') % (e))
except Exception as e:
_logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
raise osv.except_osv(_(u'AFIP Web service error'),
_(u'System return error %i: %s') % (e[0], e[1]))
- for resp in response.FEXAuthorizeResult.FEXResultAuth:
- if resp.Resultado == 'R':
- # Existe Error!
- _logger.error('Rejected invoice: %s' % (resp,))
- r[int(resp.Id)]={
- 'Eventos': [ (o.EventCode, unicode(o.EventMsg)) for o in response.FEXAuthorizeResult.FEXEvents ]
- if hasattr(response.FEXAuthorizeResult, 'FEXEvents') else [],
- 'Errores': [ (e.ErrCode, unicode(e.ErrMsg)) for e in response.FEXAuthorizeResult.FEXErr ]
- if hasattr(response.FEXAuthorizeResult, 'FEXErr') else [],
- }
- else:
- # Todo bien!
- r[int(resp.Id)]={
- 'CAE': resp.Cae,
- 'CAEFchVto': resp.Fch_venc_Cae,
- }
+
+ soapmessage = [dict([(k,v) for k,v in req.iteritems()]) for req in invoice_request.itervalues()]
+ cbte_nro = soapmessage[0].get('Cbte_nro')
+
+ #~ import pdb; pdb.set_trace()
+
+ if (response.FEXErr.ErrCode != 0):
+ # Existe Error!
+ _logger.error('Rejected invoice!')
+
+ r[cbte_nro]={
+ 'Eventos': [ (o[0], unicode(o[1])) for o in response.FEXEvents ] if (hasattr(response, 'FEXEvents') and response.FEXEvents.EventCode != 0) else [],
+ 'Errores': [ (e[0], unicode(e[1])) for e in response.FEXErr ] if (hasattr(response, 'FEXErr') and response.FEXErr.ErrCode != 0) else [],
+ }
+ else:
+ # Todo bien!
+ r[cbte_nro]={
+ 'CAE': response.FEXResultAuth.Cae,
+ 'CAEFchVto': response.FEXResultAuth.Fch_venc_Cae,
+ }
return r