Merge lp:~vauxoo/openerp-venezuela-localization/miguel-update-partner-info-seniat-fr into lp:~openerp-venezuela/openerp-venezuela-localization/6.0-trunk

Proposed by Miguel Delgado (Vauxoo)
Status: Merged
Merged at revision: 420
Proposed branch: lp:~vauxoo/openerp-venezuela-localization/miguel-update-partner-info-seniat-fr
Merge into: lp:~openerp-venezuela/openerp-venezuela-localization/6.0-trunk
Diff against target: 373 lines (+121/-78)
11 files modified
bank_management/__openerp__.py (+1/-1)
l10n_ve_fiscal_requirements/partner.py (+80/-6)
l10n_ve_fiscal_requirements/res_company.py (+6/-0)
l10n_ve_fiscal_requirements/view/partner_view.xml (+16/-1)
l10n_ve_fiscal_requirements/view/res_company_view.xml (+16/-0)
l10n_ve_withholding_iva/__init__.py (+0/-1)
l10n_ve_withholding_iva/__openerp__.py (+0/-1)
l10n_ve_withholding_iva/partner.py (+2/-3)
l10n_ve_withholding_iva/partner_view.xml (+0/-3)
l10n_ve_withholding_iva/res_company.py (+0/-42)
l10n_ve_withholding_iva/res_company_view.xml (+0/-20)
To merge this branch: bzr merge lp:~vauxoo/openerp-venezuela-localization/miguel-update-partner-info-seniat-fr
Reviewer Review Type Date Requested Status
Javier Duran (community) Approve
Review via email: mp+78466@code.launchpad.net

Description of the change

[ADD] the functionality to update fiscal partner information in the module l10n_ve_fiscal_requirements
for put together all fiscal functionality
[IMP] Change the position of update fiscal information button and vat field to principal view of partner
[ADD] Added a field (vat_apply) in Account page of partner form to know if a partner can be applied VAT

To post a comment you must log in.
Revision history for this message
Nhomar - Vauxoo (nhomar) wrote :

HEllo.

Good job.. I didn't try yet,

But.

One idea that in the backlog wasn't mentioned by me is:

The buton "Update from Seniat" should be as close as possible to VAT field.

If before this merge proposal it can be done, it should be great.

Regards.

414. By Miguel Delgado (Vauxoo)

[IMP] remove the line asociated to include data demo file in __openerp__.py

Revision history for this message
Javier Duran (javieredm) wrote :

Merged en la rama trunk:

revno: 420 [merge]
revision-id: javier@squezee-vir-20111006181340-ljk4dnt5t24ti2uk

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bank_management/__openerp__.py'
2--- bank_management/__openerp__.py 2011-10-05 00:08:13 +0000
3+++ bank_management/__openerp__.py 2011-10-06 18:14:24 +0000
4@@ -80,7 +80,7 @@
5 'bank/data/industrial_data.xml',
6 'bank/data/mercantil_bank_data.xml',
7 'bank/data/venezuela_bank_data.xml',
8- 'check/demo/demo.xml',
9+# 'check/demo/demo.xml',
10 ],
11 'demo_xml': [],
12 'test': [],
13
14=== modified file 'l10n_ve_fiscal_requirements/partner.py'
15--- l10n_ve_fiscal_requirements/partner.py 2011-10-04 03:19:01 +0000
16+++ l10n_ve_fiscal_requirements/partner.py 2011-10-06 18:14:24 +0000
17@@ -2,7 +2,17 @@
18 ##############################################################################
19 #
20 #
21+# Programmed by: Alexander Olivares <olivaresa@gmail.com>
22+# Juan Márquez <jmarquez@tecvemar.com.ve>
23+#
24+# This the script to connect with Seniat website
25+# for consult the rif asociated with a partner was taken from:
26 #
27+# http://siv.cenditel.gob.ve/svn/sigesic/ramas/sigesic-1.1.x/sigesic/apps/comun/seniat.py
28+#
29+# This script was modify by:
30+# Javier Duran <javier@vauxoo.com>
31+# Miguel Delgado <miguel@openerp.com.ve>
32 #
33 # This program is free software: you can redistribute it and/or modify
34 # it under the terms of the GNU Affero General Public License as
35@@ -21,6 +31,9 @@
36
37 from osv import fields, osv
38 from tools.translate import _
39+import urllib
40+from xml.dom.minidom import parseString
41+import netsvc
42
43 class res_partner_address(osv.osv):
44 _inherit='res.partner.address'
45@@ -50,6 +63,10 @@
46
47 class res_partner(osv.osv):
48 _inherit = 'res.partner'
49+ logger = netsvc.Logger()
50+ _columns = {
51+ 'vat_apply': fields.boolean('Vat Apply', help="This field indicate if partner is subject to vat apply "),
52+ }
53
54 '''
55 Required Invoice Address
56@@ -57,7 +74,6 @@
57 def _check_partner_invoice_addr(self,cr,uid,ids,context={}):
58 partner_obj = self.browse(cr,uid,ids[0])
59 if partner_obj.vat and partner_obj.vat[:2].upper() == 'VE':
60- #~ if hasattr(partner_obj, 'address') and partner_obj.address:
61 if hasattr(partner_obj, 'address'):
62 res = [addr for addr in partner_obj.address if addr.type == 'invoice']
63
64@@ -70,17 +86,13 @@
65 return True
66 return True
67
68-
69 _constraints = [
70 (_check_partner_invoice_addr, 'Error ! The partner does not have an invoice address. ', [])
71 ]
72-
73
74-
75 def vat_change_fiscal_requirements(self, cr, uid, ids, value, context=None):
76 warning = {'Tittle':'Vat Error !','Message':'You try to put a VAT already existant !'}
77 res = self.pool.get('res.partner').search(cr, uid, [('vat', '=', value)])
78- print "esto es el len",len(res)
79 if len(res)>=1:
80 raise osv.except_osv(_('Vat Error !'),_('Invalid VAT. This vat is alredy used'))
81 else:
82@@ -97,6 +109,68 @@
83 return False
84 return True
85
86+# Update Partner Information
87+
88+ def _load_url(self,retries,url):
89+ str_error= '404 Not Found'
90+ while retries > 0:
91+ try:
92+ s = urllib.urlopen(url)
93+ r = s.read()
94+ ok = not('404 Not Found' in r)
95+ if ok:
96+ self.logger.notifyChannel("info", netsvc.LOG_INFO,
97+ "Url Loaded correctly %s" % url)
98+ return r
99+ except:
100+ self.logger.notifyChannel("warning", netsvc.LOG_WARNING,
101+ "Url could not be loaded %s" % str_error)
102+ pass
103+ retries -= 1
104+ return str_error
105+
106+ def _parse_dom(self,dom,rif,url_seniat):
107+ name = dom.childNodes[0].childNodes[0].firstChild.data
108+ vat_apply = dom.childNodes[0].childNodes[2].firstChild.data.upper()=='SI' and True or False
109+ self.logger.notifyChannel("info", netsvc.LOG_INFO,
110+ "RIF: %s Found" % rif)
111+ return {'name':name,'vat_apply':vat_apply}
112+
113+ def _print_error(self, error, msg):
114+ raise osv.except_osv(error,msg)
115+
116+ def _eval_seniat_data(self,xml_data,context={}):
117+ if xml_data.find('450')>=0:
118+ if not 'all_rif' in context:
119+ self._print_error(_('Vat Error !'),_('Invalid VAT!'))
120+ else:
121+ return True
122+ if xml_data.find('452')>=0:
123+ if not 'all_rif' in context:
124+ self._print_error(_('Vat Error !'),_('Unregistered VAT!'))
125+ else:
126+ return True
127+ if xml_data.find("404")>=0:
128+ if not 'all_rif' in context:
129+ self._print_error(_('No Connection !'),_("Could not connect! Check the URL "))
130+ else:
131+ return True
132+
133+ def update_rif(self, cr, uid, ids, context={}):
134+ for partner in self.browse(cr,uid,ids):
135+ url1=partner.company_id.url_seniat1_company+'%s'
136+ url2=partner.company_id.url_seniat2_company+'%s'
137+ if partner.vat:
138+ xml_data = self._load_url(3,url1 %partner.vat[2:])
139+ if not self._eval_seniat_data(xml_data,context):
140+ dom = parseString(xml_data)
141+ self.write(cr,uid,partner.id,self._parse_dom(dom,partner.vat[2:],url2))
142+ else:
143+ return False
144+ else:
145+ if not 'all_rif' in context:
146+ self._print_error(_('Vat Error !'),_('The field vat is empty'))
147+ return True
148+
149 res_partner()
150-
151 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
152
153=== modified file 'l10n_ve_fiscal_requirements/res_company.py'
154--- l10n_ve_fiscal_requirements/res_company.py 2011-10-05 05:53:31 +0000
155+++ l10n_ve_fiscal_requirements/res_company.py 2011-10-06 18:14:24 +0000
156@@ -36,6 +36,12 @@
157 _columns = {
158 'jour_id': fields.many2one('account.journal', 'Journal',required=False,help="Default journal for damaged invoices"),
159 'acc_id': fields.many2one('account.account', 'Account',required=False,help="Default account used for invoices and lines from damaged invoices"),
160+ 'url_seniat1_company':fields.char('URL Seniat for Partner Information',size=64, required=True, readonly=False,help='In this field enter the URL from Seniat for search the fiscal information from partner'),
161+ 'url_seniat2_company':fields.char('URL Seniat for Retention Rate',size=64, required=True, readonly=False,help='In this field enter the URL from Seniat for search the retention rate from partner'),
162 }
163+ _defaults = {
164+ 'url_seniat1_company':'http://contribuyente.seniat.gob.ve/getContribuyente/getrif?rif=',
165+ 'url_seniat2_company':'http://contribuyente.seniat.gob.ve/BuscaRif/BuscaRif.jsp?p_rif=',
166+ }
167 res_company()
168
169
170=== modified file 'l10n_ve_fiscal_requirements/view/partner_view.xml'
171--- l10n_ve_fiscal_requirements/view/partner_view.xml 2011-10-04 03:19:01 +0000
172+++ l10n_ve_fiscal_requirements/view/partner_view.xml 2011-10-06 18:14:24 +0000
173@@ -1,15 +1,30 @@
174 <?xml version="1.0"?>
175 <openerp>
176 <data>
177+
178 <record id="view_partner_form2" model="ir.ui.view">
179 <field name="name">res.partner.vat.inherit2</field>
180 <field name="model">res.partner</field>
181 <field name="inherit_id" ref="base_vat.view_partner_form"/>
182 <field name="arch" type="xml">
183 <field name="vat" position="replace">
184- <field name="vat" on_change="vat_change_fiscal_requirements(vat)" colspan="4" />
185+ <field name="vat_apply"/>
186 </field>
187 </field>
188 </record>
189+
190+ <record id="view_partner_form3" model="ir.ui.view">
191+ <field name="name">res.partner.vat.inherit3</field>
192+ <field name="model">res.partner</field>
193+ <field name="type">form</field>
194+ <field name="inherit_id" ref="base.view_partner_form"/>
195+ <field name="arch" type="xml">
196+ <xpath expr='/form/group/group/field[@name="lang"]' position='after'>
197+ <field name="vat" on_change="vat_change_fiscal_requirements(vat)" colspan="2"/>
198+ <button name="update_rif" string="Update Fiscal Information" type="object" icon="gtk-execute" colspan="2"/>
199+ </xpath>
200+ </field>
201+ </record>
202+
203 </data>
204 </openerp>
205
206=== modified file 'l10n_ve_fiscal_requirements/view/res_company_view.xml'
207--- l10n_ve_fiscal_requirements/view/res_company_view.xml 2011-10-05 05:53:31 +0000
208+++ l10n_ve_fiscal_requirements/view/res_company_view.xml 2011-10-06 18:14:24 +0000
209@@ -1,6 +1,7 @@
210 <?xml version="1.0" encoding="utf-8"?>
211 <openerp>
212 <data>
213+
214 <record id="il_company_invoice_damaged" model="ir.ui.view">
215 <field name="name">il_company_invoice_damaged</field>
216 <field name="model">res.company</field>
217@@ -15,6 +16,21 @@
218 </page>
219 </field>
220 </record>
221+
222+ <record model="ir.ui.view" id="view_res_company_wh_iva_form_inherit">
223+ <field name="name">res.company.form.inherit</field>
224+ <field name="model">res.company</field>
225+ <field name="type">form</field>
226+ <field name="inherit_id" ref="base.view_company_form"/>
227+ <field name="arch" type="xml">
228+ <xpath expr="/form/notebook/page[@string='Configuration']" position="inside">
229+ <separator string="Fiscal Information" colspan="4"/>
230+ <field name="url_seniat1_company" />
231+ <field name="url_seniat2_company" />
232+ </xpath>
233+ </field>
234+ </record>
235+
236 </data>
237 </openerp>
238
239
240=== modified file 'l10n_ve_withholding_iva/__init__.py'
241--- l10n_ve_withholding_iva/__init__.py 2011-10-04 21:06:55 +0000
242+++ l10n_ve_withholding_iva/__init__.py 2011-10-06 18:14:24 +0000
243@@ -24,7 +24,6 @@
244 import partner
245 import generate_txt
246 import report
247-import res_company
248 import installer
249 import wizard
250
251
252=== modified file 'l10n_ve_withholding_iva/__openerp__.py'
253--- l10n_ve_withholding_iva/__openerp__.py 2011-10-04 21:06:55 +0000
254+++ l10n_ve_withholding_iva/__openerp__.py 2011-10-06 18:14:24 +0000
255@@ -37,7 +37,6 @@
256 'security/ir.model.access.csv',
257 'generate_txt_view.xml',
258 'txt_wh_report.xml',
259- 'res_company_view.xml',
260 'account_invoice_view.xml',
261 'account_view.xml',
262 'partner_view.xml',
263
264=== modified file 'l10n_ve_withholding_iva/partner.py'
265--- l10n_ve_withholding_iva/partner.py 2011-10-05 05:47:07 +0000
266+++ l10n_ve_withholding_iva/partner.py 2011-10-06 18:14:24 +0000
267@@ -89,13 +89,12 @@
268 return 0.0
269
270 def _parse_dom(self,dom,rif,url_seniat):
271- name = dom.childNodes[0].childNodes[0].firstChild.data
272 wh_agent = dom.childNodes[0].childNodes[1].firstChild.data.upper()=='SI' and True or False
273- vat_apply = dom.childNodes[0].childNodes[2].firstChild.data.upper()=='SI' and True or False
274 wh_rate = self._buscar_porcentaje(rif,url_seniat)
275 self.logger.notifyChannel("info", netsvc.LOG_INFO,
276 "RIF: %s Found" % rif)
277- return {'name':name, 'wh_iva_agent':wh_agent,'vat_subjected':vat_apply,'wh_iva_rate':wh_rate}
278+ data = {'wh_iva_agent':wh_agent,'wh_iva_rate':wh_rate}
279+ return dict(data.items() + super(res_partner,self)._parse_dom(dom,rif,url_seniat).items())
280
281 def _print_error(self, error, msg):
282 raise osv.except_osv(error,msg)
283
284=== modified file 'l10n_ve_withholding_iva/partner_view.xml'
285--- l10n_ve_withholding_iva/partner_view.xml 2011-09-26 19:13:06 +0000
286+++ l10n_ve_withholding_iva/partner_view.xml 2011-10-06 18:14:24 +0000
287@@ -24,14 +24,11 @@
288 <field name="wh_iva_rate"/>
289 <field name="property_wh_iva_payable"/>
290 <field name="property_wh_iva_receivable"/>
291- <button name="update_rif" string="Update Data Vat" type="object" icon="gtk-execute"/>
292 </group>
293 </page>
294 </notebook>
295 </page>
296 </field>
297 </record>
298-
299-
300 </data>
301 </openerp>
302
303=== removed file 'l10n_ve_withholding_iva/res_company.py'
304--- l10n_ve_withholding_iva/res_company.py 2011-09-27 16:59:13 +0000
305+++ l10n_ve_withholding_iva/res_company.py 1970-01-01 00:00:00 +0000
306@@ -1,42 +0,0 @@
307-# -*- encoding: utf-8 -*-
308-##############################################################################
309-# Copyright (c) 2011 OpenERP Venezuela (http://openerp.com.ve)
310-# All Rights Reserved.
311-# Programmed by: Miguel Delgado <miguel@openerp.com.ve>
312-#
313-# WARNING: This program as such is intended to be used by professional
314-# programmers who take the whole responsability of assessing all potential
315-# consequences resulting from its eventual inadequacies and bugs
316-# End users who are looking for a ready-to-use solution with commercial
317-# garantees and support are strongly adviced to contract a Free Software
318-# Service Company
319-#
320-# This program is Free Software; you can redistribute it and/or
321-# modify it under the terms of the GNU General Public License
322-# as published by the Free Software Foundation; either version 2
323-# of the License, or (at your option) any later version.
324-#
325-# This program is distributed in the hope that it will be useful,
326-# but WITHOUT ANY WARRANTY; without even the implied warranty of
327-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
328-# GNU General Public License for more details.
329-#
330-# You should have received a copy of the GNU General Public License
331-# along with this program; if not, write to the Free Software
332-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
333-###############################################################################
334-from osv import osv
335-from osv import fields
336-from tools.translate import _
337-
338-class url_seniat_company(osv.osv):
339- _inherit = 'res.company'
340- _columns = {
341- 'url_seniat1_company':fields.char('URL Seniat for Partner Information',size=64, required=True, readonly=False,help='In this field enter the URL from Seniat for search the fiscal information from partner'),
342- 'url_seniat2_company':fields.char('URL Seniat for Retention Rate',size=64, required=True, readonly=False,help='In this field enter the URL from Seniat for search the retention rate from partner'),
343- }
344- _defaults = {
345- 'url_seniat1_company':'http://contribuyente.seniat.gob.ve/getContribuyente/getrif?rif=',
346- 'url_seniat2_company':'http://contribuyente.seniat.gob.ve/BuscaRif/BuscaRif.jsp?p_rif=',
347- }
348-url_seniat_company()
349
350=== removed file 'l10n_ve_withholding_iva/res_company_view.xml'
351--- l10n_ve_withholding_iva/res_company_view.xml 2011-09-27 16:59:13 +0000
352+++ l10n_ve_withholding_iva/res_company_view.xml 1970-01-01 00:00:00 +0000
353@@ -1,20 +0,0 @@
354-<?xml version="1.0"?>
355-<openerp>
356- <data>
357-
358- <record model="ir.ui.view" id="view_res_company_wh_iva_form_inherit">
359- <field name="name">res.company.form.inherit</field>
360- <field name="model">res.company</field>
361- <field name="type">form</field>
362- <field name="inherit_id" ref="base.view_company_form"/>
363- <field name="arch" type="xml">
364- <xpath expr="/form/notebook/page[@string='Configuration']" position="inside">
365- <separator string="Fiscal Information" colspan="4"/>
366- <field name="url_seniat1_company" />
367- <field name="url_seniat2_company" />
368- </xpath>
369- </field>
370- </record>
371-
372- </data>
373-</openerp>