Merge lp:~vauxoo/openerp-mexico-localization/7.0-oml_l10n_mx_attachment_try_in_signal_cancel_dev_ernesto into lp:openerp-mexico-localization/7.0

Status: Merged
Merged at revision: 327
Proposed branch: lp:~vauxoo/openerp-mexico-localization/7.0-oml_l10n_mx_attachment_try_in_signal_cancel_dev_ernesto
Merge into: lp:openerp-mexico-localization/7.0
Diff against target: 124 lines (+59/-53)
1 file modified
l10n_mx_ir_attachment_facturae/ir_attachment_facturae.py (+59/-53)
To merge this branch: bzr merge lp:~vauxoo/openerp-mexico-localization/7.0-oml_l10n_mx_attachment_try_in_signal_cancel_dev_ernesto
Reviewer Review Type Date Requested Status
Luis Ernesto García Medina - http://www.vauxoo.com Pending
Isaac López Zúñiga Pending
Review via email: mp+194962@code.launchpad.net

Description of the change

Se agrega un Try para evitar que runbot marque error de open en caso de que una factura no sea cancelada

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'l10n_mx_ir_attachment_facturae/ir_attachment_facturae.py'
2--- l10n_mx_ir_attachment_facturae/ir_attachment_facturae.py 2013-10-09 23:46:53 +0000
3+++ l10n_mx_ir_attachment_facturae/ir_attachment_facturae.py 2013-11-13 00:08:15 +0000
4@@ -458,61 +458,67 @@
5 return self.write(cr, uid, ids, {'state': 'done'}, context=context)
6
7 def signal_cancel(self, cr, uid, ids, context=None):
8- invoice_obj = self.pool.get('account.invoice')
9- attach_obj = self.pool.get('ir.attachment')
10- wf_service = netsvc.LocalService("workflow")
11- inv_cancel_status = False
12- for ir_attach_facturae_mx_id in self.browse(cr, uid, ids, context=context):
13- msj = ''
14- invoice = ir_attach_facturae_mx_id.invoice_id
15- if 'cfdi' in ir_attach_facturae_mx_id.type:
16- if not ir_attach_facturae_mx_id.state in ['cancel', 'draft', 'confirmed']:
17- type__fc = self.get_driver_fc_cancel()
18- if ir_attach_facturae_mx_id.type in type__fc.keys():
19- cfdi_cancel = res = type__fc[ir_attach_facturae_mx_id.type](
20- cr, uid, [
21- ir_attach_facturae_mx_id.id], context=context
22- )
23- msj += tools.ustr(cfdi_cancel.get('message', False))
24- # TODO, validate cfdi_cancel True or False
25- if cfdi_cancel.get('status', True):
26- wf_service.trg_validate(
27- uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
28- if invoice.state != 'cancel':
29- inv_cancel_status = invoice_obj.action_cancel(
30- cr, uid, [invoice.id], context=context)
31- else:
32- inv_cancel_status = True
33+ try:
34+ invoice_obj = self.pool.get('account.invoice')
35+ attach_obj = self.pool.get('ir.attachment')
36+ wf_service = netsvc.LocalService("workflow")
37+ inv_cancel_status = False
38+ for ir_attach_facturae_mx_id in self.browse(cr, uid, ids, context=context):
39+ msj = ''
40+ invoice = ir_attach_facturae_mx_id.invoice_id
41+ if 'cfdi' in ir_attach_facturae_mx_id.type:
42+ if not ir_attach_facturae_mx_id.state in ['cancel', 'draft', 'confirmed']:
43+ type__fc = self.get_driver_fc_cancel()
44+ if ir_attach_facturae_mx_id.type in type__fc.keys():
45+ cfdi_cancel = res = type__fc[ir_attach_facturae_mx_id.type](
46+ cr, uid, [
47+ ir_attach_facturae_mx_id.id], context=context
48+ )
49+ msj += tools.ustr(cfdi_cancel.get('message', False))
50+ # TODO, validate cfdi_cancel True or False
51+ if cfdi_cancel.get('status', True):
52+ wf_service.trg_validate(
53+ uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
54+ if invoice.state != 'cancel':
55+ inv_cancel_status = invoice_obj.action_cancel(
56+ cr, uid, [invoice.id], context=context)
57+ else:
58+ inv_cancel_status = True
59+ else:
60+ msj += _("Unknow cfdi driver for %s" % (ir_attach_facturae_mx_id.type))
61 else:
62- msj += _("Unknow cfdi driver for %s" % (ir_attach_facturae_mx_id.type))
63+ wf_service.trg_validate(
64+ uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
65+ if invoice.state != 'cancel':
66+ inv_cancel_status = invoice_obj.action_cancel(
67+ cr, uid, [invoice.id], context=context)
68+ else:
69+ inv_cancel_status = True
70+ msj = 'cancelled'
71+ elif 'cfd' in ir_attach_facturae_mx_id.type and not 'cfdi' in ir_attach_facturae_mx_id.type:
72+ wf_service.trg_validate(
73+ uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
74+ inv_cancel_status = invoice_obj.action_cancel(cr, uid, [invoice.id], context=context)
75+ msj = 'cancelled'
76+ inv_cancel_status = True
77+ elif 'cbb' in ir_attach_facturae_mx_id.type:
78+ wf_service.trg_validate(
79+ uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
80+ inv_cancel_status = invoice_obj.action_cancel(cr, uid, [invoice.id], context=context)
81+ msj = 'cancelled'
82+ inv_cancel_status = True
83 else:
84- wf_service.trg_validate(
85- uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
86- if invoice.state != 'cancel':
87- inv_cancel_status = invoice_obj.action_cancel(
88- cr, uid, [invoice.id], context=context)
89- else:
90- inv_cancel_status = True
91- msj = 'cancelled'
92- elif 'cfd' in ir_attach_facturae_mx_id.type and not 'cfdi' in ir_attach_facturae_mx_id.type:
93- wf_service.trg_validate(
94- uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
95- inv_cancel_status = invoice_obj.action_cancel(cr, uid, [invoice.id], context=context)
96- msj = 'cancelled'
97- inv_cancel_status = True
98- elif 'cbb' in ir_attach_facturae_mx_id.type:
99- wf_service.trg_validate(
100- uid, self._name, ir_attach_facturae_mx_id.id, 'action_cancel', cr)
101- inv_cancel_status = invoice_obj.action_cancel(cr, uid, [invoice.id], context=context)
102- msj = 'cancelled'
103- inv_cancel_status = True
104- else:
105- raise osv.except_osv(_("Type Electronic Invoice Unknow!"), _(
106- "The Type Electronic Invoice:" + (ir_attach_facturae_mx_id.type or '')))
107- self.write(cr, uid, ids, {
108- 'last_date': time.strftime('%Y-%m-%d %H:%M:%S'),
109- 'msj': msj,
110- })
111+ raise osv.except_osv(_("Type Electronic Invoice Unknow!"), _(
112+ "The Type Electronic Invoice:" + (ir_attach_facturae_mx_id.type or '')))
113+ self.write(cr, uid, ids, {
114+ 'last_date': time.strftime('%Y-%m-%d %H:%M:%S'),
115+ 'msj': msj,
116+ })
117+ except Exception, e:
118+ error = tools.ustr( traceback.format_exc() )
119+ self.write(cr, uid, ids, {'msj': error}, context=context)
120+ _logger.error( error )
121+ return False
122 return inv_cancel_status
123
124 def action_cancel(self, cr, uid, ids, context=None):