Merge lp:~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio into lp:openerp-mexico-localization/7.0

Proposed by Julio Serna-http://www.vauxoo.com
Status: Merged
Merged at revision: 305
Proposed branch: lp:~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio
Merge into: lp:openerp-mexico-localization/7.0
Diff against target: 161 lines (+93/-37)
1 file modified
l10n_mx_invoice_datetime/invoice.py (+93/-37)
To merge this branch: bzr merge lp:~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio
Reviewer Review Type Date Requested Status
Julio Serna-http://www.vauxoo.com Needs Resubmitting
Isaac López Zúñiga Pending
Moisés López - http://www.vauxoo.com Pending
Review via email: mp+184706@code.launchpad.net

Description of the change

Modifica función que calcula la fecha de la factura dependiendo si el dato que llega es date o datetime

To post a comment you must log in.
Revision history for this message
Moisés López - http://www.vauxoo.com (moylop260) wrote :
Download full text (4.7 KiB)

¿Porque se usa la fecha de vencimiento en este if?
if inv.date_due and inv.invoice_datetime:

Hay 4 posibilidades de como pueden llegar los datos, estas considerando
todas las solicitadas?
 El 09/09/2013 18:10, "Julio Serna-http://www.vauxoo.com" <email address hidden>
escribió:

> Julio Serna-http://www.vauxoo.com has proposed merging
> lp:~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio
> into lp:openerp-mexico-localization/7.0.
>
> Requested reviews:
> Moisés López - http://www.vauxoo.com (moylop260)
>
> For more details, see:
>
> https://code.launchpad.net/~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio/+merge/184706
>
> Modifica función que calcula la fecha de la factura dependiendo si el dato
> que llega es date o datetime
> --
>
> https://code.launchpad.net/~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio/+merge/184706
> You are requested to review the proposed merge of
> lp:~vauxoo/openerp-mexico-localization/7.0-oml-datetime_invoice-dev-julio
> into lp:openerp-mexico-localization/7.0.
>
> === modified file 'l10n_mx_invoice_datetime/invoice.py'
> --- l10n_mx_invoice_datetime/invoice.py 2013-09-08 04:28:04 +0000
> +++ l10n_mx_invoice_datetime/invoice.py 2013-09-10 01:09:50 +0000
> @@ -104,14 +104,16 @@
> res = self.assigned_datetime(cr, uid, vals, context=context)
> if res:
> vals.update(res)
> - return super(account_invoice, self).write(cr, uid, ids, vals,
> context=context)
> + return super(account_invoice, self).write(cr, uid, ids, vals,
> + context=context)
>
> def assigned_datetime(self, cr, uid, values, context=None):
> if context is None:
> context = {}
> res = {}
> if 'date_invoice' in values:
> - if values['date_invoice']:
> + if values['date_invoice'] and not\
> + values.get('invoice_datetime', False):
> date_ts = tools.server_to_local_timestamp(values[
> 'date_invoice'], tools.DEFAULT_SERVER_DATETIME_FORMAT,
> tools.DEFAULT_SERVER_DATETIME_FORMAT, context.get(
> @@ -123,8 +125,13 @@
> dt_invoice = datetime.datetime.combine(
> date_invoice, time_invoice).strftime('%Y/%m/%d
> %H:%M:%S')
> res['invoice_datetime'] = dt_invoice
> - if 'invoice_datetime' in values:
> - if values['invoice_datetime']:
> + date_invoice = datetime.datetime.strptime(
> + dt_invoice, '%Y/%m/%d
> %H:%M:%S').date().strftime('%Y/%m/%d')
> + res['date_invoice'] = date_invoice
> + return res
> + elif 'invoice_datetime' in values:
> + if values['invoice_datetime'] and not\
> + values.get('date_invoice', False):
> date_ts = tools.server_to_local_timestamp(values[
> 'invoice_datetime'],
> tools.DEFAULT_SERVER_DATETIME_FORMAT,
> tools.DEFAULT_SERVER_DATETIME_FORMAT, context.get(
> @@ -132,17 +139,25 @@
> date_invoice = d...

Read more...

283. By Julio Serna-http://www.vauxoo.com

[IMP] modified function assigned_datetime to diferent cases of datetime

284. By Julio Serna-http://www.vauxoo.com

[IMP] resolved error in test of invoice

285. By Julio Serna-http://www.vauxoo.com

[REF] modified message when date diferent

Revision history for this message
Julio Serna-http://www.vauxoo.com (hearthebreaker) wrote :

Modifique función para considerar los 4 posibles casos para las fechas de factura

review: Needs Resubmitting
286. By Julio Serna-http://www.vauxoo.com

[MERGE] merge 7.0-oml

287. By Julio Serna-http://www.vauxoo.com

[IMP] active function action_move_create

288. By Julio Serna-http://www.vauxoo.com

[IMP]added validation when date and dateinvoce empty

Revision history for this message
Julio Serna-http://www.vauxoo.com (hearthebreaker) wrote :

se corrige que cuando no se ponía ninguna fecha en la factura mostraba diferentes fechas en el campo date y en el datetime por el timezone, se validad ahora cuando las dos fechas vienen vacías tome la de la hora actual y las dos las pase por la función para que tomen el mismo timezone.

review: Needs Resubmitting
289. By Julio Serna-http://www.vauxoo.com

[MERGE] merge and resolved conflict

290. By Julio Serna-http://www.vauxoo.com

[IMP] modified write and function to get datetime of invoice

291. By Julio Serna-http://www.vauxoo.com

[IMP] added function tat get number of hour of diferent by time zone of user

Revision history for this message
Julio Serna-http://www.vauxoo.com (hearthebreaker) wrote :

Crea fecha datetime con time en 00:00:00 cuando solo se captura la fecha de tipo date, se calcula con función que obtiene diferencia de horas con respecto a la zona horaria de usuario

review: Needs Resubmitting
292. By Julio Serna-http://www.vauxoo.com

[IMP] added new value to datetime in defcreate

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'l10n_mx_invoice_datetime/invoice.py'
2--- l10n_mx_invoice_datetime/invoice.py 2013-09-21 20:04:41 +0000
3+++ l10n_mx_invoice_datetime/invoice.py 2013-10-01 16:50:49 +0000
4@@ -31,7 +31,9 @@
5 from openerp import netsvc
6 from openerp import release
7 import datetime
8+from pytz import timezone
9 import pytz
10+from dateutil.relativedelta import relativedelta
11
12 import time
13 import os
14@@ -101,56 +103,110 @@
15 def write(self, cr, uid, ids, vals, context=None):
16 if context is None:
17 context = {}
18- res = self.assigned_datetime(cr, uid, vals, context=context)
19+ res = {}
20+ if vals.get('date_invoice', False):
21+ vals.update({'invoice_datetime': False})
22+ res = self.assigned_datetime(cr, uid, vals, context=context)
23+ if vals.get('invoice_datetime', False):
24+ vals.update({'date_invoice' : False})
25+ res = self.assigned_datetime(cr, uid, vals, context=context)
26 if res:
27 vals.update(res)
28- return super(account_invoice, self).write(cr, uid, ids, vals, context=context)
29+ return super(account_invoice, self).write(cr, uid, ids, vals,
30+ context=context)
31
32 def copy(self, cr, uid, id, default=None, context=None):
33 if default is None:
34 default = {}
35 default.update({'invoice_datetime': False, 'date_invoice' : False})
36 return super(account_invoice, self).copy(cr, uid, id, default, context)
37-
38+
39+ def _get_time_zone(self, cr, uid, invoice_id, context=None):
40+ res_users_obj = self.pool.get('res.users')
41+ userstz = res_users_obj.browse(cr, uid, [uid])[0].partner_id.tz
42+ a = 0
43+ if userstz:
44+ hours = timezone(userstz)
45+ fmt = '%Y-%m-%d %H:%M:%S %Z%z'
46+ now = datetime.datetime.now()
47+ loc_dt = hours.localize(datetime.datetime(now.year, now.month, now.day,
48+ now.hour, now.minute, now.second))
49+ timezone_loc = (loc_dt.strftime(fmt))
50+ diff_timezone_original = timezone_loc[-5:-2]
51+ timezone_original = int(diff_timezone_original)
52+ s = str(datetime.datetime.now(pytz.timezone(userstz)))
53+ s = s[-6:-3]
54+ timezone_present = int(s)*-1
55+ a = timezone_original + ((
56+ timezone_present + timezone_original)*-1)
57+ return a
58+
59 def assigned_datetime(self, cr, uid, values, context=None):
60 if context is None:
61 context = {}
62 res = {}
63- if 'date_invoice' in values:
64- if values['date_invoice']:
65- date_ts = tools.server_to_local_timestamp(values[
66- 'date_invoice'], tools.DEFAULT_SERVER_DATETIME_FORMAT,
67- tools.DEFAULT_SERVER_DATETIME_FORMAT, context.get(
68- 'tz_invoice_mx', 'America/Mexico_City'))
69- now = datetime.datetime.now()
70- time_invoice = datetime.time(now.hour, now.minute, now.second)
71- date_invoice = datetime.datetime.strptime(
72- date_ts, '%Y-%m-%d').date()
73- dt_invoice = datetime.datetime.combine(
74- date_invoice, time_invoice).strftime('%Y/%m/%d %H:%M:%S')
75- res['invoice_datetime'] = dt_invoice
76- if 'invoice_datetime' in values:
77- if values['invoice_datetime']:
78- date_ts = tools.server_to_local_timestamp(values[
79- 'invoice_datetime'], tools.DEFAULT_SERVER_DATETIME_FORMAT,
80- tools.DEFAULT_SERVER_DATETIME_FORMAT, context.get(
81- 'tz_invoice_mx', 'America/Mexico_City'))
82- date_invoice = datetime.datetime.strptime(
83- date_ts, '%Y-%m-%d %H:%M:%S').date().strftime('%Y/%m/%d')
84- res['date_invoice'] = date_invoice
85+ if values.get('date_invoice', False) and\
86+ not values.get('invoice_datetime', False):
87+
88+ user_hour = self._get_time_zone(cr, uid, [], context=context)
89+ time_invoice = datetime.time(abs(user_hour), 0, 0)
90+
91+ date_invoice = datetime.datetime.strptime(
92+ values['date_invoice'], '%Y-%m-%d').date()
93+
94+ dt_invoice = datetime.datetime.combine(
95+ date_invoice, time_invoice).strftime('%Y-%m-%d %H:%M:%S')
96+
97+ res['invoice_datetime'] = dt_invoice
98+ res['date_invoice'] = values['date_invoice']
99+ return res
100+
101+ if values.get('invoice_datetime', False) and not\
102+ values.get('date_invoice', False):
103+ date_invoice = fields.datetime.context_timestamp(cr, uid,
104+ datetime.datetime.strptime(values['invoice_datetime'],
105+ tools.DEFAULT_SERVER_DATETIME_FORMAT), context=context)
106+ res['date_invoice'] = date_invoice
107+ res['invoice_datetime'] = values['invoice_datetime']
108+ return res
109+
110+ if 'invoice_datetime' in values and 'date_invoice' in values:
111+ if values['invoice_datetime'] and values['date_invoice']:
112+ date_invoice = datetime.datetime.strptime(
113+ values['invoice_datetime'],
114+ '%Y-%m-%d %H:%M:%S').date().strftime('%Y-%m-%d')
115+ if date_invoice != values['date_invoice']:
116+ raise osv.except_osv(_('Warning!'),
117+ _('Invoice dates should be equal'))
118+
119+ if not values.get('invoice_datetime', False) and\
120+ not values.get('date_invoice', False):
121+
122+ date_ts = fields.datetime.context_timestamp(cr, uid,
123+ datetime.datetime.strptime(fields.datetime.now(),
124+ tools.DEFAULT_SERVER_DATETIME_FORMAT), context=context)
125+ res['date_invoice'] = date_ts
126+ res['invoice_datetime'] = fields.datetime.now()
127+ return res
128 return res
129- """
130- def action_move_create(self, cr, uid, ids, *args):
131- for inv in self.browse(cr, uid, ids):
132- if inv.move_id:
133- continue
134- if not inv.invoice_datetime:
135- t1 = time.strftime('%Y-%m-%d')
136- t2 = time.strftime('%Y-%m-%d %H:%M:%S')
137- self.write(cr, uid, [inv.id], {
138- 'date_invoice': t1, 'invoice_datetime': t2})
139- return super(account_invoice, self).action_move_create(cr, uid, ids, *args)
140- """
141+
142+# def action_move_create(self, cr, uid, ids, *args):
143+ # for inv in self.browse(cr, uid, ids):
144+ # values = {'date_invoice': inv.date_invoice,
145+ # 'invoice_datetime': inv.invoice_datetime}
146+ # date_value = self.assigned_datetime(cr, uid, values)
147+ # if inv.move_id:
148+ # continue
149+ # if inv.date_invoice and inv.invoice_datetime:
150+ # return super(account_invoice, self).action_move_create(cr,
151+ # uid, ids, *args)
152+ # t1 = time.strftime('%Y-%m-%d')
153+ # t2 = time.strftime('%Y-%m-%d %H:%M:%S')
154+ # self.write(cr, uid, [inv.id], {
155+ # 'date_invoice': date_value.get('date_invoice', t1),
156+ # 'invoice_datetime': date_value.get('invoice_datetime', t2)})
157+ #return super(account_invoice, self).action_move_create(cr, uid, ids, *args)
158+
159 # class account_invoice_refund(osv.TransientModel):
160 # _inherit = 'account.invoice.refund'
161 # _columns = {