From d7534728161ee73e3758c7df3105b4832db687d1 Mon Sep 17 00:00:00 2001 From: "Apa (Open ERP)" Date: Wed, 28 Jan 2009 15:04:50 +0530 Subject: [PATCH 01/53] Set Warehouse address in RFQ report. bzr revid: apa@tinyerp.com-20090128093450-01bt3ing3b12hq3w --- addons/purchase/report/request_quotation.rml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/addons/purchase/report/request_quotation.rml b/addons/purchase/report/request_quotation.rml index 7f3365d3edb..025abf8658b 100644 --- a/addons/purchase/report/request_quotation.rml +++ b/addons/purchase/report/request_quotation.rml @@ -75,12 +75,12 @@ Expected Delivery address: - [[( order.warehouse_id and order.warehouse_id.name) or order.partner_address_id.partner_id.name]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.title) or ' ']] [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.name) or order.partner_address_id.name ]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or order.partner_address_id.street ]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or order.partner_address_id.street2 ]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.zip) or order.partner_address_id.zip ]] [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.city) or order.partner_address_id.city ]] - [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.state_id and order.warehouse_id.partner_address_id.state_id.name) or order.partner_address_id and order.partner_address_id.state_id and order.partner_address_id.state_id.name]] [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.country_id and order.warehouse_id.partner_address_id.country_id.name) or order.partner_address_id.country_id.name ]] + [[( order.warehouse_id and order.warehouse_id.name) or '']] + [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.title) or ' ']] [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.name) or '' ]] + [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or '' ]] + [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or '' ]] + [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.zip) or '' ]] [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.city) or '' ]] + [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.state_id and order.warehouse_id.partner_address_id.state_id.name) or '']] [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.country_id and order.warehouse_id.partner_address_id.country_id.name) or '' ]] @@ -149,9 +149,7 @@ - - - + [[ format(order.notes or '') ]] From 41de00dfc8da94e4372514f625d43b6a6a419e95 Mon Sep 17 00:00:00 2001 From: "Apa (Open ERP)" Date: Wed, 28 Jan 2009 15:52:49 +0530 Subject: [PATCH 02/53] modify RFQ report bzr revid: apa@tinyerp.com-20090128102249-0gxjd4lmzoziwv9r --- addons/purchase/report/request_quotation.rml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/addons/purchase/report/request_quotation.rml b/addons/purchase/report/request_quotation.rml index 025abf8658b..6d50798dc3d 100644 --- a/addons/purchase/report/request_quotation.rml +++ b/addons/purchase/report/request_quotation.rml @@ -75,15 +75,12 @@ Expected Delivery address: - [[( order.warehouse_id and order.warehouse_id.name) or '']] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.title) or ' ']] [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.name) or '' ]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or '' ]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or '' ]] - [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.zip) or '' ]] [[ (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.city) or '' ]] - [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.state_id and order.warehouse_id.partner_address_id.state_id.name) or '']] [[(order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.country_id and order.warehouse_id.partner_address_id.country_id.name) or '' ]] - - - + [[ (order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']] + [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.title) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.title) or ' ']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.name) or '' ]] + [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or '']] + [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street2) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or '']] + [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.zip) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.zip) or '' ]] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.city) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.city) or '' ]] + [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.state_id and order.dest_address_id.state_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.state_id and order.warehouse_id.partner_address_id.state_id.name) or '']] [[(order.dest_address_id and order.dest_address_id and order.dest_address_id.country_id and order.dest_address_id.country_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.country_id and order.warehouse_id.partner_address_id.country_id.name) or '' ]] @@ -149,7 +146,9 @@ - + + + [[ format(order.notes or '') ]] From 6f614a887bbacd963a4b0bc8e2c902cc264fae11 Mon Sep 17 00:00:00 2001 From: "Apa (Open ERP)" Date: Wed, 28 Jan 2009 16:18:30 +0530 Subject: [PATCH 03/53] modify RFQ bzr revid: apa@tinyerp.com-20090128104830-c1x3fvchsse8hhtb --- addons/purchase/report/request_quotation.rml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/purchase/report/request_quotation.rml b/addons/purchase/report/request_quotation.rml index 6d50798dc3d..3895d71c65a 100644 --- a/addons/purchase/report/request_quotation.rml +++ b/addons/purchase/report/request_quotation.rml @@ -75,7 +75,7 @@ Expected Delivery address: - [[ (order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']] + [[ (order.warehouse_id and order.warehouse_id.name) or '']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.title) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.title) or ' ']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.name) or '' ]] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or '']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street2) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or '']] @@ -123,7 +123,7 @@
- [[ repeatIn(order.order_line,'order_line') ]] + [[repeatIn(order.order_line,'order_line')]] From 7ed9ea3eff1885da52faa237ab195aed550d762a Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 28 Jan 2009 12:15:30 +0100 Subject: [PATCH 04/53] [FIX] The state of Associated members was only changed if the Associate member field was changed later. [IMP] added recursion control on associate_member [IMP] overall cleaning of the whole module lp bug: https://launchpad.net/bugs/313339 fixed bzr revid: qdp@tinyerp.com-20090128111530-h9j1kiizzyd7cyuq --- addons/membership/membership.py | 389 +++++++++++--------------- addons/membership/membership_demo.xml | 72 ++--- 2 files changed, 178 insertions(+), 283 deletions(-) diff --git a/addons/membership/membership.py b/addons/membership/membership.py index b0a7478c2b4..66d40b4c570 100644 --- a/addons/membership/membership.py +++ b/addons/membership/membership.py @@ -44,102 +44,97 @@ STATE_PRIOR = { 'paid' : 7 } -class res_partner(osv.osv): - _inherit = 'res.partner' - _columns = { - 'associate_member': fields.many2one('res.partner', 'Associate member'), - } -res_partner() -REQUETE = '''SELECT partner, state FROM ( -SELECT members.partner AS partner, -CASE WHEN MAX(members.state) = 0 THEN 'none' -ELSE CASE WHEN MAX(members.state) = 1 THEN 'canceled' -ELSE CASE WHEN MAX(members.state) = 2 THEN 'old' -ELSE CASE WHEN MAX(members.state) = 3 THEN 'waiting' -ELSE CASE WHEN MAX(members.state) = 4 THEN 'invoiced' -ELSE CASE WHEN MAX(members.state) = 6 THEN 'free' -ELSE CASE WHEN MAX(members.state) = 7 THEN 'paid' -END END END END END END END END - AS state FROM ( -SELECT partner, - CASE WHEN MAX(inv_digit.state) = 4 THEN 7 - ELSE CASE WHEN MAX(inv_digit.state) = 3 THEN 4 - ELSE CASE WHEN MAX(inv_digit.state) = 2 THEN 3 - ELSE CASE WHEN MAX(inv_digit.state) = 1 THEN 1 -END END END END -AS state -FROM ( - SELECT p.id as partner, - CASE WHEN ai.state = 'paid' THEN 4 - ELSE CASE WHEN ai.state = 'open' THEN 3 - ELSE CASE WHEN ai.state = 'proforma' THEN 2 - ELSE CASE WHEN ai.state = 'draft' THEN 2 - ELSE CASE WHEN ai.state = 'cancel' THEN 1 -END END END END END -AS state -FROM res_partner p -JOIN account_invoice ai ON ( - p.id = ai.partner_id -) -JOIN account_invoice_line ail ON ( - ail.invoice_id = ai.id -) -JOIN membership_membership_line ml ON ( - ml.account_invoice_line = ail.id -) -WHERE ml.date_from <= '%s' -AND ml.date_to >= '%s' -GROUP BY -p.id, -ai.state - ) - AS inv_digit - GROUP by partner -UNION -SELECT p.id AS partner, - CASE WHEN p.free_member THEN 6 - ELSE CASE WHEN p.associate_member IN ( - SELECT ai.partner_id FROM account_invoice ai JOIN - account_invoice_line ail ON (ail.invoice_id = ai.id AND ai.state = 'paid') - JOIN membership_membership_line ml ON (ml.account_invoice_line = ail.id) - WHERE ml.date_from <= '%s' - AND ml.date_to >= '%s' - ) - THEN 5 -END END -AS state -FROM res_partner p -WHERE p.free_member -OR p.associate_member > 0 -UNION -SELECT p.id as partner, - MAX(CASE WHEN ai.state = 'paid' THEN 2 - ELSE 0 - END) -AS state -FROM res_partner p -JOIN account_invoice ai ON ( - p.id = ai.partner_id -) -JOIN account_invoice_line ail ON ( - ail.invoice_id = ai.id -) -JOIN membership_membership_line ml ON ( - ml.account_invoice_line = ail.id -) -WHERE ml.date_from < '%s' -AND ml.date_to < '%s' -AND ml.date_from <= ml.date_to -GROUP BY -p.id -) -AS members -GROUP BY members.partner -) -AS final -%s -''' + +#~ REQUETE = '''SELECT partner, state FROM ( +#~ SELECT members.partner AS partner, +#~ CASE WHEN MAX(members.state) = 0 THEN 'none' +#~ ELSE CASE WHEN MAX(members.state) = 1 THEN 'canceled' +#~ ELSE CASE WHEN MAX(members.state) = 2 THEN 'old' +#~ ELSE CASE WHEN MAX(members.state) = 3 THEN 'waiting' +#~ ELSE CASE WHEN MAX(members.state) = 4 THEN 'invoiced' +#~ ELSE CASE WHEN MAX(members.state) = 6 THEN 'free' +#~ ELSE CASE WHEN MAX(members.state) = 7 THEN 'paid' +#~ END END END END END END END END + #~ AS state FROM ( +#~ SELECT partner, + #~ CASE WHEN MAX(inv_digit.state) = 4 THEN 7 + #~ ELSE CASE WHEN MAX(inv_digit.state) = 3 THEN 4 + #~ ELSE CASE WHEN MAX(inv_digit.state) = 2 THEN 3 + #~ ELSE CASE WHEN MAX(inv_digit.state) = 1 THEN 1 +#~ END END END END +#~ AS state +#~ FROM ( + #~ SELECT p.id as partner, + #~ CASE WHEN ai.state = 'paid' THEN 4 + #~ ELSE CASE WHEN ai.state = 'open' THEN 3 + #~ ELSE CASE WHEN ai.state = 'proforma' THEN 2 + #~ ELSE CASE WHEN ai.state = 'draft' THEN 2 + #~ ELSE CASE WHEN ai.state = 'cancel' THEN 1 +#~ END END END END END +#~ AS state +#~ FROM res_partner p +#~ JOIN account_invoice ai ON ( + #~ p.id = ai.partner_id +#~ ) +#~ JOIN account_invoice_line ail ON ( + #~ ail.invoice_id = ai.id +#~ ) +#~ JOIN membership_membership_line ml ON ( + #~ ml.account_invoice_line = ail.id +#~ ) +#~ WHERE ml.date_from <= '%s' +#~ AND ml.date_to >= '%s' +#~ GROUP BY +#~ p.id, +#~ ai.state + #~ ) + #~ AS inv_digit + #~ GROUP by partner +#~ UNION +#~ SELECT p.id AS partner, + #~ CASE WHEN p.free_member THEN 6 + #~ ELSE CASE WHEN p.associate_member IN ( + #~ SELECT ai.partner_id FROM account_invoice ai JOIN + #~ account_invoice_line ail ON (ail.invoice_id = ai.id AND ai.state = 'paid') + #~ JOIN membership_membership_line ml ON (ml.account_invoice_line = ail.id) + #~ WHERE ml.date_from <= '%s' + #~ AND ml.date_to >= '%s' + #~ ) + #~ THEN 5 +#~ END END +#~ AS state +#~ FROM res_partner p +#~ WHERE p.free_member +#~ OR p.associate_member > 0 +#~ UNION +#~ SELECT p.id as partner, + #~ MAX(CASE WHEN ai.state = 'paid' THEN 2 + #~ ELSE 0 + #~ END) +#~ AS state +#~ FROM res_partner p +#~ JOIN account_invoice ai ON ( + #~ p.id = ai.partner_id +#~ ) +#~ JOIN account_invoice_line ail ON ( + #~ ail.invoice_id = ai.id +#~ ) +#~ JOIN membership_membership_line ml ON ( + #~ ml.account_invoice_line = ail.id +#~ ) +#~ WHERE ml.date_from < '%s' +#~ AND ml.date_to < '%s' +#~ AND ml.date_from <= ml.date_to +#~ GROUP BY +#~ p.id +#~ ) +#~ AS members +#~ GROUP BY members.partner +#~ ) +#~ AS final +#~ %s +#~ ''' class membership_line(osv.osv): @@ -214,13 +209,14 @@ class membership_line(osv.osv): _order = 'id desc' _constraints = [ (_check_membership_date, 'Error, this membership product is out of date', []) - ] + ] membership_line() class Partner(osv.osv): '''Partner''' + _inherit = 'res.partner' def _get_partner_id(self, cr, uid, ids, context=None): data_inv = self.pool.get('membership.membership_line').browse(cr, uid, ids, context) @@ -285,24 +281,17 @@ class Partner(osv.osv): if partner_data.free_member and s!=0: res[id] = 'free' if partner_data.associate_member: + associate_partners_list = [] + query="SELECT DISTINCT associate_member FROM res_partner" + cr.execute(query) + for p in cr.fetchall(): + if p != partner_data.id: + associate_partners_list.append(p) + if associate_partners_list != []: + self._membership_state(cr, uid, associate_partners_list, name, args, context) res[id] = partner_data.associate_member.membership_state return res -#no more need becaz of new functionality store attribut on function field -# def _membership_state_search(self, cr, uid, obj, name, args): -# '''Search on membership state''' -# -# today = time.strftime('%Y-%m-%d') -# clause = 'WHERE ' -# for i in range(len(args)): -# if i!=0: -# clause += 'OR ' -# clause += 'state '+args[i][1]+" '"+args[i][2]+"' " -# cr.execute(REQUETE % (today, today, today, today, today, today, clause)) -# ids=[x[0] for x in cr.fetchall()] -# -# return [('id', 'in', ids)] - def _membership_start(self, cr, uid, ids, name, args, context=None): '''Return the start date of membership''' res = {} @@ -321,25 +310,6 @@ class Partner(osv.osv): res[partner.id] = False return res -# def _membership_start_search(self, cr, uid, obj, name, args): -# '''Search on membership start date''' -# if not len(args): -# return [] -# where = ' AND '.join(['date_from '+x[1]+' \''+str(x[2])+'\'' -# for x in args]) -# cr.execute('SELECT partner, MIN(date_from) \ -# FROM ( \ -# SELECT partner, MIN(date_from) AS date_from \ -# FROM membership_membership_line \ -# GROUP BY partner \ -# ) AS foo \ -# WHERE '+where+' \ -# GROUP BY partner') -# res = cr.fetchall() -# if not res: -# return [('id', '=', '0')] -# return [('id', 'in', [x[0] for x in res])] - def _membership_stop(self, cr, uid, ids, name, args, context=None): '''Return the stop date of membership''' res = {} @@ -359,25 +329,6 @@ class Partner(osv.osv): else: res[partner.id] = False return res -# -# def _membership_stop_search(self, cr, uid, obj, name, args): -# '''Search on membership stop date''' -# if not len(args): -# return [] -# where = ' AND '.join(['date_to '+x[1]+' \''+str(x[2])+'\'' -# for x in args]) -# cr.execute('SELECT partner, MAX(date_to) \ -# FROM ( \ -# SELECT partner, MAX(date_to) AS date_to \ -# FROM membership_membership_line \ -# GROUP BY partner \ -# ) AS foo \ -# WHERE '+where+' \ -# GROUP BY partner') -# res = cr.fetchall() -# if not res: -# return [('id', '=', '0')] -# return [('id', 'in', [x[0] for x in res])] def _membership_cancel(self, cr, uid, ids, name, args, context=None): '''Return the cancel date of membership''' @@ -393,28 +344,6 @@ class Partner(osv.osv): res[partner_id] = False return res -# def _membership_cancel_search(self, cr, uid, obj, name, args): -# '''Search on membership cancel date''' -# if not len(args): -# return [] -# where = ' AND '.join(['date_cancel '+x[1]+' \''+str(x[2])+'\'' -# for x in args]) -# cr.execute('SELECT partner, MIN(date_cancel) \ -# FROM ( \ -# SELECT partner, MIN(date_cancel) AS date_cancel \ -# FROM membership_membership_line \ -# GROUP BY partner \ -# ) AS foo \ -# WHERE '+where+' \ -# GROUP BY partner') -# res = cr.fetchall() -# if not res: -# return [('id', '=', '0')] -# return [('id', 'in', [x[0] for x in res])] - - - - _inherit = 'res.partner' def _get_partners(self, cr, uid, ids, context={}): ids2 = ids while ids2: @@ -423,45 +352,69 @@ class Partner(osv.osv): return ids _columns = { - 'member_lines': fields.one2many('membership.membership_line', 'partner', - 'Membership'), - 'membership_amount': fields.float('Membership amount', digites=(16, 2), - help='The price negociated by the partner'), -# 'membership_state': fields.function(_membership_state, method=True, string='Current membership state', -# type='selection', selection=STATE, fnct_search=_membership_state_search), - 'membership_state': fields.function(_membership_state, method=True, string='Current membership state', - type='selection',selection=STATE,store={'account.invoice':(_get_invoice_partner,['state'], 10), - 'membership.membership_line':(_get_partner_id,['state'], 10), - 'res.partner':(_get_partners, ['free_member'], 10)}), -# 'associate_member': fields.many2one('res.partner', 'Associate member'), + 'associate_member': fields.many2one('res.partner', 'Associate member'), + 'member_lines': fields.one2many('membership.membership_line', 'partner', 'Membership'), 'free_member': fields.boolean('Free member'), -# 'membership_start': fields.function(_membership_start, method=True, -# string='Start membership date', type='date', -# fnct_search=_membership_start_search), - 'membership_start': fields.function(_membership_start, method=True, - string='Start membership date', type='date',store={'account.invoice':(_get_invoice_partner,['state'], 10), - 'membership.membership_line':(_get_partner_id,['state'], 10), - 'res.partner':(lambda self,cr,uid,ids,c={}:ids, ['free_member'], 10)}), -# 'membership_stop': fields.function(_membership_stop, method=True, -# string='Stop membership date', type='date', -# fnct_search=_membership_stop_search), - 'membership_stop': fields.function(_membership_stop, method=True, - string='Stop membership date', type='date',store={'account.invoice':(_get_invoice_partner,['state'], 10), - 'membership.membership_line':(_get_partner_id,['state'], 10), - 'res.partner':(lambda self,cr,uid,ids,c={}:ids, ['free_member'], 10)}), -# 'membership_cancel': fields.function(_membership_cancel, method=True, -# string='Cancel membership date', type='date', -# fnct_search=_membership_cancel_search), - 'membership_cancel': fields.function(_membership_cancel, method=True, - string='Cancel membership date', type='date',store={'account.invoice':(_get_invoice_partner,['state'], 10), - 'membership.membership_line':(_get_partner_id,['state'], 10), - 'res.partner':(lambda self,cr,uid,ids,c={}:ids, ['free_member'], 10)}), + 'membership_amount': fields.float( + 'Membership amount', digites=(16, 2), + help='The price negociated by the partner'), + 'membership_state': fields.function( + _membership_state, method = True, + string = 'Current membership state', type = 'selection', + selection = STATE ,store = { + 'account.invoice':(_get_invoice_partner,['state'], 10), + 'membership.membership_line':(_get_partner_id,['state'], 10), + 'res.partner':(_get_partners, ['free_member'], 10) + } + ), + 'membership_start': fields.function( + _membership_start, method=True, + string = 'Start membership date', type = 'date', + store = { + 'account.invoice':(_get_invoice_partner,['state'], 10), + 'membership.membership_line':(_get_partner_id,['state'], 10), + 'res.partner':(lambda self,cr,uid,ids,c={}:ids, ['free_member'], 10) + } + ), + 'membership_stop': fields.function( + _membership_stop, method = True, + string = 'Stop membership date', type = 'date', + store = { + 'account.invoice':(_get_invoice_partner,['state'], 10), + 'membership.membership_line':(_get_partner_id,['state'], 10), + 'res.partner':(lambda self,cr,uid,ids,c={}:ids, ['free_member'], 10) + } + ), + + 'membership_cancel': fields.function( + _membership_cancel, method = True, + string = 'Cancel membership date', type='date', + store = { + 'account.invoice':(_get_invoice_partner,['state'], 10), + 'membership.membership_line':(_get_partner_id,['state'], 10), + 'res.partner':(lambda self,cr,uid,ids,c={}:ids, ['free_member'], 10) + } + ), } _defaults = { 'free_member': lambda *a: False, 'membership_cancel' : lambda *d : False, } + def _check_recursion(self, cr, uid, ids): + level = 100 + while len(ids): + cr.execute('select distinct associate_member from res_partner where id in ('+','.join(map(str,ids))+')') + ids = filter(None, map(lambda x:x[0], cr.fetchall())) + if not level: + return False + level -= 1 + return True + + _constraints = [ + (_check_recursion, 'Error ! You can not create recursive associated members.', ['associate_member']) + ] + Partner() class product_template(osv.osv): @@ -526,36 +479,6 @@ class Invoice(osv.osv): }) return result -# def action_move_create(self, cr, uid, ids, context=None): -# '''Create membership.membership_line if the product is for membership''' -# if context is None: -# context = {} -# member_line_obj = self.pool.get('membership.membership_line') -# partner_obj = self.pool.get('res.partner') -# for invoice in self.browse(cr, uid, ids): -# -# # fetch already existing member lines -# former_mlines = member_line_obj.search(cr,uid, -# [('account_invoice_line','in', -# [ l.id for l in invoice.invoice_line])], context) -# # empty them : -# if former_mlines: -# member_line_obj.write(cr,uid,former_mlines, {'account_invoice_line':False}, context) -# -# for line in invoice.invoice_line: -# if line.product_id and line.product_id.membership: -# date_from = line.product_id.membership_date_from -# date_to = line.product_id.membership_date_to -# if invoice.date_invoice > date_from and invoice.date_invoice < date_to: -# date_from = invoice.date_invoice -# line_id = member_line_obj.create(cr, uid, { -# 'partner': invoice.partner_id.id, -# 'date_from': date_from, -# 'date_to': date_to, -# 'account_invoice_line': line.id, -# }) -# return super(Invoice, self).action_move_create(cr, uid, ids, context) - def action_cancel(self, cr, uid, ids, context=None): '''Create a 'date_cancel' on the membership_line object''' if context is None: diff --git a/addons/membership/membership_demo.xml b/addons/membership/membership_demo.xml index f137f668712..1196864974a 100644 --- a/addons/membership/membership_demo.xml +++ b/addons/membership/membership_demo.xml @@ -22,31 +22,6 @@ service - - - - - - MSF - PI - - - - - WWF - C - 2008-01-01 - - - - - Organisation A - - - - - - @@ -65,8 +40,8 @@ - - + + 2008-05-09 paid @@ -76,8 +51,8 @@ - - + + 2008-05-09 open @@ -87,8 +62,8 @@ - - + + 2008-05-09 cancel @@ -98,8 +73,8 @@ - - + + 2008-05-09 draft @@ -150,14 +125,14 @@ 2009-08-01 paid - + 2008-01-01 2009-08-01 invoiced - + 2008-01-01 @@ -165,35 +140,32 @@ 2008-08-05 canceled - + 2008-01-01 2009-08-01 waiting - + + + + + + 2009-01-01 - - Oasis - Free + True - - Silicium NGO - Associate - + + - - Partner - Associate - - - - - - MSF - Switzerland + + From fabaa266deeba62b0997faabbd3a76d2ac7a472f Mon Sep 17 00:00:00 2001 From: "Apa (Open ERP)" Date: Wed, 28 Jan 2009 16:48:24 +0530 Subject: [PATCH 05/53] set partner name in RFQ report bzr revid: apa@tinyerp.com-20090128111824-u77qonbf0m5f1fqk --- addons/purchase/report/request_quotation.rml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/purchase/report/request_quotation.rml b/addons/purchase/report/request_quotation.rml index 3895d71c65a..b7be6949c1b 100644 --- a/addons/purchase/report/request_quotation.rml +++ b/addons/purchase/report/request_quotation.rml @@ -75,7 +75,7 @@ Expected Delivery address: - [[ (order.warehouse_id and order.warehouse_id.name) or '']] + [[ (order.dest_address_id and order.dest_address_id.partner_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.title) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.title) or ' ']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.name) or '' ]] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street) or '']] [[ (order.dest_address_id and order.dest_address_id and order.dest_address_id.street2) or (order.warehouse_id and order.warehouse_id.partner_address_id and order.warehouse_id.partner_address_id.street2) or '']] From ba3b0ea1dc31abe479ce81246a3cd39f08b5b723 Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 28 Jan 2009 12:29:15 +0100 Subject: [PATCH 06/53] [FIX] I you changed the invoice of a member (draft->open->canceled->draft), his membership state changed but not the state of the associated members of him. lp bug: https://launchpad.net/bugs/313339 fixed bzr revid: qdp@tinyerp.com-20090128112915-fcsi4645w7m03otc --- addons/membership/membership.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/membership/membership.py b/addons/membership/membership.py index 66d40b4c570..77bd2d9e981 100644 --- a/addons/membership/membership.py +++ b/addons/membership/membership.py @@ -223,6 +223,10 @@ class Partner(osv.osv): list_partner = [] for data in data_inv: list_partner.append(data.partner.id) + ids2 = list_partner + while ids2: + ids2 = self.pool.get('res.partner').search(cr, uid, [('associate_member','in',ids2)], context=context) + list_partner += ids2 return list_partner def _get_invoice_partner(self, cr, uid, ids, context=None): @@ -230,6 +234,10 @@ class Partner(osv.osv): list_partner = [] for data in data_inv: list_partner.append(data.partner_id.id) + ids2 = list_partner + while ids2: + ids2 = self.pool.get('res.partner').search(cr, uid, [('associate_member','in',ids2)], context=context) + list_partner += ids2 return list_partner def _membership_state(self, cr, uid, ids, name, args, context=None): From b18a214d311aa12d644c1e4649faab42dba452ce Mon Sep 17 00:00:00 2001 From: "Apa (Open ERP)" Date: Wed, 28 Jan 2009 17:04:55 +0530 Subject: [PATCH 07/53] Set partner name in purchase order report bzr revid: apa@tinyerp.com-20090128113455-q03nju9tjlsyy0ns --- addons/purchase/report/order.rml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/purchase/report/order.rml b/addons/purchase/report/order.rml index e406cff8c05..aa8e14367ab 100644 --- a/addons/purchase/report/order.rml +++ b/addons/purchase/report/order.rml @@ -153,7 +153,7 @@ [[ repeatIn(o.dest_address_id and [o.dest_address_id] or [],'addr') ]] Shipping address : - [[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] + [[ addr.partner_id.name ]] [[ addr.title or '' ]] [[ addr.name ]] [[ addr.street ]] [[ addr.street2 or '' ]] From 65fccdb7f38eb1e3cce10f77bd5345d267a47fa4 Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Wed, 28 Jan 2009 17:12:54 +0530 Subject: [PATCH 08/53] account followup modifs on report bzr revid: mra@tinyerp.com-20090128114254-rum76avegbr0ijqb --- addons/account_followup/followup_demo.xml | 43 ++--- addons/account_followup/report/rappel.rml | 182 ++++++++++-------- .../report/report_followup_print.py | 21 +- .../wizard/wizard_followup_print.py | 2 +- 4 files changed, 137 insertions(+), 111 deletions(-) diff --git a/addons/account_followup/followup_demo.xml b/addons/account_followup/followup_demo.xml index a7ffb50b44a..71ddadb9e10 100644 --- a/addons/account_followup/followup_demo.xml +++ b/addons/account_followup/followup_demo.xml @@ -1,28 +1,24 @@ - + Default follow-up First letter after 15 net days, 30 net days and 45 days end of month levels. - + Level 0 : 15 net days 0 days 15 - Date : %(date)s - -Dear %(partner_name)s, - + Exception made if there was a mistake of ours, it seems that the following amount staid unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days. -Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting departement at (+32).10.68.94.39. - -Best regards, +Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting department at (+32).10.68.94.39. + @@ -31,16 +27,16 @@ Best regards, days 30 - LEVEL 1: -Date : %(date)s + +We are disappointed to see that despite sending a reminder, that your account is now seriously overdue. -Dear %(partner_name)s, +It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services). +Please, take appropriate measures in order to carry out this payment in the next 8 days -Exception made if there was a mistake of ours, it seems that the following amount staid unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days. +If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly. -Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting departement at (+32).10.68.94.39. - -Best regards, +Details of due payments is printed below. + @@ -49,17 +45,16 @@ Best regards, end_of_month 45 - LEVEL 2: -Date : %(date)s + +Despite several reminders, your account is still not settled. -Dear %(partner_name)s, +Unless full payment is made in next 8 days , then legal action for the recovery of the debt, will be taken without further notice. -Exception made if there was a mistake of ours, it seems that the following amount staid unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days. +I trust that this action will prove unnecessary and details of due payments is printed below. -Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting departement at (+32).10.68.94.39. - -Best regards, +In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39. + - + diff --git a/addons/account_followup/report/rappel.rml b/addons/account_followup/report/rappel.rml index 5f05a2b9628..ecb733f6449 100644 --- a/addons/account_followup/report/rappel.rml +++ b/addons/account_followup/report/rappel.rml @@ -14,6 +14,10 @@ + + + + @@ -35,26 +39,25 @@ - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - + + @@ -64,153 +67,156 @@ - [[ repeatIn(ids_to_objects(data['form']['partner_ids']),'o') ]] [[ setLang(o.lang) ]] + [[ repeatIn(ids_to_objects(data['form']['partner_ids']),'o') ]] [[ setLang(o.lang) ]] - + - [[ o.name ]] - [[ repeatIn(adr_get(o,'invoice'),'a' )]] - [[ a['name'] ]] - [[ a['street'] ]] - [[ a['zip'] ]] - [[ a['city'] ]] - [[( a['country_id'] and a['country_id'][1]) or '']] - + [[ o.name ]] + [[ repeatIn(adr_get(o,'invoice'),'a' )]] + [[ a['name'] ]] + [[ a['street'] ]] + [[ a['zip'] ]] + [[ a['city'] ]] + [[( a['country_id'] and a['country_id'][1]) or '']] + - VAT: [[ o.vat or removeParentNode('para') ]] + VAT: [[ o.vat or removeParentNode('para') ]] - + - - - - Document: Customer account statement - + Document: Customer account statement + Date: [[ time.strftime('%d/%m/%Y') ]] - Customer Ref: [[ o.id ]] - + Customer Ref: [[ o.id ]] + - Dear Sir/Madam, - - + Dear [[ a['name'] ]], + + - According to our accounting, the following Invoices are unpaid. Could you please verify on your side, and take appropriate measures to pay the balance due in the next 8 days. - - - - If the payment has been very recently made i.e. as this reminder was issued, consider this reminder as void. Do not hesitate to contact our accounting department for further queries. - - - - Best regards. - - - - + - Date + + + - Description + + [[ format(get_text(o)) ]] + + + + + + + + + Best Regards, + + + + + + + + Date - Ref + Description - Maturity date + Ref - Due + Maturity date - Paid + Due - Maturity + Paid - Li. + Maturity + + + Li. - + [[repeatIn(getLines(o), 'line') ]] [[ line['date'] ]] - [[ line['name'] ]] + [[ line['name'] ]] - [[ line['ref'] ]] + [[ line['ref'] ]] - [[ line['date_maturity'] ]] + [[ line['date_maturity'] ]] - [[ line['debit'] and '%.2f' % line['debit'] or '' ]] + [[ line['debit'] and '%.2f' % line['debit'] or '' ]] - [[ line['credit'] and '%.2f' % line['credit'] or '' ]] + [[ line['credit'] and '%.2f' % line['credit'] or '' ]] - [[ (line['date_maturity'] < time.strftime('%Y-%m-%d')) and (line['debit'] - line['credit']) or '' ]] + [[ (line['date_maturity'] < time.strftime('%Y-%m-%d')) and (line['debit'] - line['credit']) or '' ]] - [[ line['blocked'] and 'X' or '' ]] + [[ line['blocked'] and 'X' or '' ]] - Sub-Total: + Sub-Total: - [[ '%.2f' % (reduce(lambda x,y: x+y['debit'], getLines(o), 0)) ]] + [[ '%.2f' % (reduce(lambda x,y: x+y['debit'], getLines(o), 0)) ]] - + [[ '%.2f' % (reduce(lambda x,y: x+y['credit'], getLines(o), 0)) ]] - [[ reduce(lambda x,y: x+(y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0) ]] + [[ reduce(lambda x,y: x+(y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0) ]] - + - Balance: + Balance: - [[ '%.2f' % (reduce(lambda x,y: x+(y['debit'] - y['credit']), getLines(o), 0)) ]] + [[ '%.2f' % (reduce(lambda x,y: x+(y['debit'] - y['credit']), getLines(o), 0)) ]] - - - - - - + @@ -219,17 +225,23 @@ + + + + + - - + + - + Total amount due: [[ '%.2f' % (reduce(lambda x,y: x+(y['debit']-y['credit']), getLines(o), 0)) ]] [[ company.currency_id.name]]. - + + diff --git a/addons/account_followup/report/report_followup_print.py b/addons/account_followup/report/report_followup_print.py index 2d805aa29a5..d15a42bedae 100644 --- a/addons/account_followup/report/report_followup_print.py +++ b/addons/account_followup/report/report_followup_print.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -34,6 +34,7 @@ class report_rappel(report_sxw.rml_parse): 'ids_to_objects': self._ids_to_objects, 'adr_get' : self._adr_get, 'getLines' : self._lines_get, + 'get_text' : self._get_text }) def _ids_to_objects(self, partners_ids): @@ -60,6 +61,24 @@ class report_rappel(report_sxw.rml_parse): movelines = moveline_obj.read(self.cr, self.uid, movelines) return movelines + def _get_text(self, data): + text = "" + a = {} + partner_line = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',data.id)]) + for i in pooler.get_pool(self.cr.dbname).get('account.move.line').browse(self.cr, self.uid, partner_line): + if i.followup_line_id and str(i.followup_line_id.delay)=='45': + text = i.followup_line_id.description + a['45'] = text + elif i.followup_line_id and str(i.followup_line_id.delay)=='30': + text = i.followup_line_id.description + a['30'] = text + elif i.followup_line_id and str(i.followup_line_id.delay)=='15': + text = i.followup_line_id.description + a['15'] = text + text = (a.has_key('45') and a['45']) or (a.has_key('30') and a['30']) or (a.has_key('15') and a['15']) + return text + + report_sxw.report_sxw('report.account_followup.followup.print', 'res.partner', 'addons/account_followup/report/rappel.rml', parser=report_rappel) diff --git a/addons/account_followup/wizard/wizard_followup_print.py b/addons/account_followup/wizard/wizard_followup_print.py index 05878b3f437..b6c7ae4e6cf 100644 --- a/addons/account_followup/wizard/wizard_followup_print.py +++ b/addons/account_followup/wizard/wizard_followup_print.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved # $Id$ # From 3a585b54c5cfa88f1e88b97e4684037c386bc116 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 28 Jan 2009 12:46:33 +0100 Subject: [PATCH 09/53] [FIX] Change the layout for the crm case bzr revid: stephane@tinyerp.com-20090128114633-i4ez6c175qby2fi5 --- addons/crm/crm_view.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 9046aa9cea7..103682624b9 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -275,11 +275,12 @@
- + - - + + + From 67caad8de6bf91ab7bececb3e579785dddeff4c1 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 28 Jan 2009 12:54:39 +0100 Subject: [PATCH 10/53] [FIX] l10n_fr - Add a certificate ID lp bug: https://launchpad.net/bugs/322215 fixed bzr revid: stephane@tinyerp.com-20090128115439-h2sl010c36saskv2 --- addons/l10n_fr/__terp__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/l10n_fr/__terp__.py b/addons/l10n_fr/__terp__.py index 01dbc69967a..628e52990b6 100644 --- a/addons/l10n_fr/__terp__.py +++ b/addons/l10n_fr/__terp__.py @@ -50,6 +50,7 @@ Credits: Sistheo Zeekom CrysaLEAD "l10n_fr_pcg_view.xml" ], "demo_xml" : [], + "certificate" : "435321693876313629", "active": False, "installable": True } From 3f1632188d09c68232f2fdfa1e8b1abf47a90768 Mon Sep 17 00:00:00 2001 From: "Jay (Open ERP)" Date: Wed, 28 Jan 2009 17:30:44 +0530 Subject: [PATCH 11/53] Bugfixed view of analytic line entries bzr revid: jvo@tinyerp.com-20090128120044-m1lpdypldy7xe22e --- .../account_analytic_analysis_menu.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account_analytic_analysis/account_analytic_analysis_menu.xml b/addons/account_analytic_analysis/account_analytic_analysis_menu.xml index 179c8b2d725..8d9ffff97f9 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis_menu.xml +++ b/addons/account_analytic_analysis/account_analytic_analysis_menu.xml @@ -23,7 +23,7 @@ All Uninvoiced Entries account.analytic.line form - tree,form,graph + tree,form [('invoice_id','=',False),('to_invoice','!=',False)] @@ -32,7 +32,7 @@ My Uninvoiced Entries account.analytic.line form - tree,form,graph + tree,form [('invoice_id','=',False),('to_invoice','!=',False),('account_id.user_id','=',uid)] From a343cbe7acb20111280c6db4392840a0d702e570 Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Wed, 28 Jan 2009 18:09:19 +0530 Subject: [PATCH 12/53] account followup modifs bzr revid: mra@tinyerp.com-20090128123919-5j0qvd7bm0nu81mh --- addons/account_followup/report/rappel.rml | 161 ++++++++++++---------- 1 file changed, 88 insertions(+), 73 deletions(-) diff --git a/addons/account_followup/report/rappel.rml b/addons/account_followup/report/rappel.rml index ecb733f6449..da5f6657be7 100644 --- a/addons/account_followup/report/rappel.rml +++ b/addons/account_followup/report/rappel.rml @@ -30,6 +30,8 @@ + + @@ -41,23 +43,28 @@ - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -67,17 +74,17 @@ - [[ repeatIn(ids_to_objects(data['form']['partner_ids']),'o') ]] [[ setLang(o.lang) ]] + [[ repeatIn(ids_to_objects(data['form']['partner_ids']),'o') ]] [[ setLang(o.lang) ]] - + [[ o.name ]] - [[ repeatIn(adr_get(o,'invoice'),'a' )]] + [[ repeatIn(adr_get(o,'invoice'),'a' )]] [[ a['name'] ]] [[ a['street'] ]] [[ a['zip'] ]] @@ -90,7 +97,7 @@ - + Document: Customer account statement @@ -98,142 +105,150 @@ Date: [[ time.strftime('%d/%m/%Y') ]] - Customer Ref: [[ o.id ]] - + Customer Ref: [[ o.id ]] + - Dear [[ a['name'] ]], - - + Dear [[ a['name'] ]], + + - + - - [[ format(get_text(o)) ]] - + [[ format(get_text(o)) ]] - - - - - Best Regards, - - + - + Best Regards, + + + + - Date + Date - Description + Description - Ref + Ref - Maturity date + Maturity date - Due + Due - Paid + Paid - Maturity + Maturity - Li. + Li. + + + Amount + + + cur. - + [[repeatIn(getLines(o), 'line') ]] [[ line['date'] ]] - [[ line['name'] ]] + [[ line['name'] ]] - [[ line['ref'] ]] + [[ line['ref'] ]] - [[ line['date_maturity'] ]] + [[ line['date_maturity'] ]] - [[ line['debit'] and '%.2f' % line['debit'] or '' ]] + [[ line['debit'] and '%.2f' % line['debit'] or '' ]] - [[ line['credit'] and '%.2f' % line['credit'] or '' ]] + [[ line['credit'] and '%.2f' % line['credit'] or '' ]] - [[ (line['date_maturity'] < time.strftime('%Y-%m-%d')) and (line['debit'] - line['credit']) or '' ]] + [[ (line['date_maturity'] < time.strftime('%Y-%m-%d')) and (line['debit'] - line['credit']) or '' ]] - [[ line['blocked'] and 'X' or '' ]] + [[ line['blocked'] and 'X' or '' ]] + + + [[ line['amount_currency'] ]] + + + [[ line['currency_id'] and line['currency_id'][1] or '' ]] - + - Sub-Total: + Sub-Total: - [[ '%.2f' % (reduce(lambda x,y: x+y['debit'], getLines(o), 0)) ]] + [[ '%.2f' % (reduce(lambda x,y: x+y['debit'], getLines(o), 0)) ]] - + [[ '%.2f' % (reduce(lambda x,y: x+y['credit'], getLines(o), 0)) ]] - [[ reduce(lambda x,y: x+(y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0) ]] + [[ reduce(lambda x,y: x+(y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0) ]] - + - Balance: + Balance: - [[ '%.2f' % (reduce(lambda x,y: x+(y['debit'] - y['credit']), getLines(o), 0)) ]] - - - - - - - - - - + [[ '%.2f' % (reduce(lambda x,y: x+(y['debit'] - y['credit']), getLines(o), 0)) ]] + + + + + + + + + + - - + + Total amount due: From cc2b038ea7bf3ce065f4e0e911aa278add329784 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 28 Jan 2009 14:12:32 +0100 Subject: [PATCH 13/53] [FIX] Set True to installable lp bug: https://launchpad.net/bugs/322287 fixed bzr revid: stephane@tinyerp.com-20090128131232-1ihaouhmkxfamojf --- addons/base_contact/__terp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_contact/__terp__.py b/addons/base_contact/__terp__.py index fcee1bdd236..f50bfdef95a 100644 --- a/addons/base_contact/__terp__.py +++ b/addons/base_contact/__terp__.py @@ -49,7 +49,7 @@ 'process/base_contact_process.xml' ], 'demo_xml': ['base_contact_demo.xml'], - 'installable': False, + 'installable': True, 'active': False, 'certificate': '31287885469', } From 26f4dbbcd3a9be3761349efff632b841017c06aa Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 28 Jan 2009 14:22:30 +0100 Subject: [PATCH 14/53] [FIX] added translate = true on name field of account_invoice_tax object lp bug: https://launchpad.net/bugs/319537 fixed bzr revid: qdp@tinyerp.com-20090128132230-w0w7q3jgolam9hdx --- addons/account/invoice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 5348f4f8ab8..80e00f6124c 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -1077,7 +1077,7 @@ class account_invoice_tax(osv.osv): _description = "Invoice Tax" _columns = { 'invoice_id': fields.many2one('account.invoice', 'Invoice Line', ondelete='cascade', select=True), - 'name': fields.char('Tax Description', size=64, required=True), + 'name': fields.char('Tax Description', size=64, required=True, translate=True), 'account_id': fields.many2one('account.account', 'Tax Account', required=True, domain=[('type','<>','view'),('type','<>','income'), ('type', '<>', 'closed')]), 'base': fields.float('Base', digits=(16,2)), 'amount': fields.float('Amount', digits=(16,2)), From a9b7443c9cf0d001934ffc41a6bb6dac8710d3b6 Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 28 Jan 2009 14:46:13 +0100 Subject: [PATCH 15/53] [FIX] removed wrong bugfix lp bug: https://launchpad.net/bugs/319537 fixed bzr revid: qdp@tinyerp.com-20090128134613-eado0sbj5mziog2x --- addons/account/invoice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 80e00f6124c..5348f4f8ab8 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -1077,7 +1077,7 @@ class account_invoice_tax(osv.osv): _description = "Invoice Tax" _columns = { 'invoice_id': fields.many2one('account.invoice', 'Invoice Line', ondelete='cascade', select=True), - 'name': fields.char('Tax Description', size=64, required=True, translate=True), + 'name': fields.char('Tax Description', size=64, required=True), 'account_id': fields.many2one('account.account', 'Tax Account', required=True, domain=[('type','<>','view'),('type','<>','income'), ('type', '<>', 'closed')]), 'base': fields.float('Base', digits=(16,2)), 'amount': fields.float('Amount', digits=(16,2)), From 597a05d7b5e3e4de5a38377e8da67d44f59a713d Mon Sep 17 00:00:00 2001 From: "hda (Tiny)" Date: Wed, 28 Jan 2009 19:59:42 +0530 Subject: [PATCH 16/53] Bugfix lp bug: https://launchpad.net/bugs/321797 fixed bzr revid: hda@tinyerp.com-20090128142942-7d7ljmq44fwqk2uf --- addons/stock/product.py | 7 +++++-- addons/stock/wizard/wizard_inventory.py | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/stock/product.py b/addons/stock/product.py index e60e7a7cee2..47453c69b5c 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -66,8 +66,11 @@ class product_product(osv.osv): location_ids = [id for (id,) in cr.fetchall()] # build the list of ids of children of the location given by id - child_location_ids = self.pool.get('stock.location').search(cr, uid, [('location_id', 'child_of', location_ids)]) - location_ids= len(child_location_ids) and child_location_ids or location_ids + if context.get('compute_child',True): + child_location_ids = self.pool.get('stock.location').search(cr, uid, [('location_id', 'child_of', location_ids)]) + location_ids= len(child_location_ids) and child_location_ids or location_ids + else: + location_ids= location_ids states_str = ','.join(map(lambda s: "'%s'" % s, states)) diff --git a/addons/stock/wizard/wizard_inventory.py b/addons/stock/wizard/wizard_inventory.py index 8befd6526b2..aebeb216243 100644 --- a/addons/stock/wizard/wizard_inventory.py +++ b/addons/stock/wizard/wizard_inventory.py @@ -63,7 +63,8 @@ def _fill_inventory(self, cr, uid, data, context): res=location_obj._product_get(cr, uid, location) res_location[location]=res else: - res=location_obj._product_get(cr, uid, data['form']['location_id']) + context.update({'compute_child':False}) + res=location_obj._product_get(cr, uid, data['form']['location_id'],context=context) res_location[data['form']['location_id']]=res product_ids=[] @@ -73,7 +74,8 @@ def _fill_inventory(self, cr, uid, data, context): #product_ids.append(product_id) prod = pool.get('product.product').browse(cr, uid, [product_id])[0] uom = prod.uom_id.id - amount=pool.get('stock.location')._product_get(cr, uid, location, [product_id], {'uom': uom})[product_id] + context.update({'uom': uom}) + amount=pool.get('stock.location')._product_get(cr, uid, location, [product_id], context=context)[product_id] if(amount): line_ids=inventory_line_obj.search(cr,uid,[('inventory_id','=',data['id']),('location_id','=',location),('product_id','=',product_id),('product_uom','=',uom),('product_qty','=',amount)]) From 9490a2d552dc71abc93012b8bfb8c50fc805c5af Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 28 Jan 2009 15:41:13 +0100 Subject: [PATCH 17/53] [FIX] fixed translation on account.invoice.tax in a smarter way lp bug: https://launchpad.net/bugs/319537 fixed bzr revid: qdp@tinyerp.com-20090128144113-ip1p20c539rx8oti --- addons/account/invoice.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 5348f4f8ab8..c4e83648c9a 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -430,7 +430,9 @@ class account_invoice(osv.osv): ait_obj = self.pool.get('account.invoice.tax') for id in ids: cr.execute("DELETE FROM account_invoice_tax WHERE invoice_id=%s", (id,)) - for taxe in ait_obj.compute(cr, uid, id).values(): + partner = self.browse(cr, uid, id).partner_id + context.update({'lang': partner.lang}) + for taxe in ait_obj.compute(cr, uid, id, context=context).values(): ait_obj.create(cr, uid, taxe) # Update the stored value (fields.function), so we write to trigger recompute self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context) @@ -481,7 +483,7 @@ class account_invoice(osv.osv): def action_move_create(self, cr, uid, ids, *args): ait_obj = self.pool.get('account.invoice.tax') cur_obj = self.pool.get('res.currency') - + context = {} for inv in self.browse(cr, uid, ids): if inv.move_id: continue @@ -495,7 +497,9 @@ class account_invoice(osv.osv): # one move line per invoice line iml = self._get_analytic_lines(cr, uid, inv.id) # check if taxes are all computed - compute_taxes = ait_obj.compute(cr, uid, inv.id) + + context.update({'lang': inv.partner_id.lang}) + compute_taxes = ait_obj.compute(cr, uid, inv.id, context=context) if not inv.tax_line: for tax in compute_taxes.values(): ait_obj.create(cr, uid, tax) @@ -1099,11 +1103,11 @@ class account_invoice_tax(osv.osv): 'base_amount': lambda *a: 0.0, 'tax_amount': lambda *a: 0.0, } - def compute(self, cr, uid, invoice_id): + def compute(self, cr, uid, invoice_id, context={}): tax_grouped = {} tax_obj = self.pool.get('account.tax') cur_obj = self.pool.get('res.currency') - inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id) + inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context) cur = inv.currency_id company_currency = inv.company_id.currency_id.id From 645eb15ebf8620f0871cb0c15b1a16e187b0d9fc Mon Sep 17 00:00:00 2001 From: qdp Date: Wed, 28 Jan 2009 15:43:31 +0100 Subject: [PATCH 18/53] [IMP] aded translate=true on description field of followup line bzr revid: qdp@tinyerp.com-20090128144331-rxc6j77pq31inqix --- addons/account_followup/followup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/account_followup/followup.py b/addons/account_followup/followup.py index 3cf9e5d4278..459e3e38e3c 100644 --- a/addons/account_followup/followup.py +++ b/addons/account_followup/followup.py @@ -42,8 +42,7 @@ class followup_line(osv.osv): 'delay': fields.integer('Days of delay'), 'start': fields.selection([('days','Net Days'),('end_of_month','End of Month')], 'Type of Term', size=64, required=True), 'followup_id': fields.many2one('account_followup.followup', 'Follow Ups', required=True, ondelete="cascade"), - 'description': fields.text('Printed Message'), - #'prints': fields.one2many('account_followup.followup.print', 'line_id'), + 'description': fields.text('Printed Message', translate=True), } followup_line() From da186d6387a12242ef8e0676b6880aa5cdd0a794 Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Wed, 28 Jan 2009 20:40:19 +0530 Subject: [PATCH 19/53] followp modifs bzr revid: mra@tinyerp.com-20090128151019-cxkmi6765wi641by --- addons/account_followup/followup_demo.xml | 12 +++ addons/account_followup/report/rappel.rml | 84 ++++++------------- .../report/report_followup_print.py | 5 +- 3 files changed, 40 insertions(+), 61 deletions(-) diff --git a/addons/account_followup/followup_demo.xml b/addons/account_followup/followup_demo.xml index 71ddadb9e10..c38084fac24 100644 --- a/addons/account_followup/followup_demo.xml +++ b/addons/account_followup/followup_demo.xml @@ -15,9 +15,13 @@ 15 +Dear %(partner_name)s, + Exception made if there was a mistake of ours, it seems that the following amount staid unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days. Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting department at (+32).10.68.94.39. + +Best Regards, @@ -28,6 +32,8 @@ Would your payment have been carried out after this mail was sent, please consid 30 +Dear %(partner_name)s, + We are disappointed to see that despite sending a reminder, that your account is now seriously overdue. It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services). @@ -36,6 +42,8 @@ Please, take appropriate measures in order to carry out this payment in the next If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly. Details of due payments is printed below. + +Best Regards, @@ -46,6 +54,8 @@ Details of due payments is printed below. 45 +Dear %(partner_name)s, + Despite several reminders, your account is still not settled. Unless full payment is made in next 8 days , then legal action for the recovery of the debt, will be taken without further notice. @@ -53,6 +63,8 @@ Unless full payment is made in next 8 days , then legal action for the recovery I trust that this action will prove unnecessary and details of due payments is printed below. In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39. + +Best Regards, diff --git a/addons/account_followup/report/rappel.rml b/addons/account_followup/report/rappel.rml index da5f6657be7..518a93649c2 100644 --- a/addons/account_followup/report/rappel.rml +++ b/addons/account_followup/report/rappel.rml @@ -14,10 +14,6 @@ - - - - @@ -31,7 +27,6 @@ - @@ -44,7 +39,7 @@ - + @@ -57,13 +52,13 @@ - - + + - - + + - + @@ -106,33 +101,14 @@ [[ time.strftime('%d/%m/%Y') ]] Customer Ref: [[ o.id ]] - - - - Dear [[ a['name'] ]], - - - - - - - - - - - - [[ format(get_text(o)) ]] - - - - Best Regards, - + [[ format(get_text(o)) ]] + - + Date @@ -155,14 +131,11 @@ Maturity - - Li. - Amount - cur. + Li. @@ -182,43 +155,40 @@ [[ line['date_maturity'] ]] - [[ line['debit'] and '%.2f' % line['debit'] or '' ]] + [[ line['debit'] and '%.2f' % line['debit'] or '' ]] [[ company.currency_id.name]] - [[ line['credit'] and '%.2f' % line['credit'] or '' ]] + [[ line['credit'] and '%.2f' % line['credit'] or '0.00' ]] [[ company.currency_id.name]] - [[ (line['date_maturity'] < time.strftime('%Y-%m-%d')) and (line['debit'] - line['credit']) or '' ]] + [[ (line['date_maturity'] < time.strftime('%Y-%m-%d')) and (line['debit'] - line['credit']) or '' ]] [[ company.currency_id.name]] + + + [[ '%.2f' % line['amount_currency'] ]] [[ line['currency_id'] and line['currency_id'][1] or '' ]] [[ line['blocked'] and 'X' or '' ]] - - [[ line['amount_currency'] ]] - - - [[ line['currency_id'] and line['currency_id'][1] or '' ]] - - + Sub-Total: - [[ '%.2f' % (reduce(lambda x,y: x+y['debit'], getLines(o), 0)) ]] + [[ '%.2f' % (reduce(lambda x,y: x+y['debit'], getLines(o), 0)) ]] [[ company.currency_id.name]] - - [[ '%.2f' % (reduce(lambda x,y: x+y['credit'], getLines(o), 0)) ]] + + [[ '%.2f' % (reduce(lambda x,y: x+y['credit'], getLines(o), 0)) ]] [[ company.currency_id.name]] - [[ reduce(lambda x,y: x+(y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0) ]] + [[ reduce(lambda x,y: x+(y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0) ]] [[ company.currency_id.name]] - + @@ -228,7 +198,7 @@ Balance: - [[ '%.2f' % (reduce(lambda x,y: x+(y['debit'] - y['credit']), getLines(o), 0)) ]] + [[ '%.2f' % (reduce(lambda x,y: x+(y['debit'] - y['credit']), getLines(o), 0)) ]] [[ company.currency_id.name]] @@ -241,7 +211,7 @@ - + @@ -251,11 +221,7 @@ - Total amount due: - [[ '%.2f' % (reduce(lambda x,y: x+(y['debit']-y['credit']), getLines(o), 0)) ]] [[ company.currency_id.name]]. - - - + diff --git a/addons/account_followup/report/report_followup_print.py b/addons/account_followup/report/report_followup_print.py index d15a42bedae..11f46b8dc58 100644 --- a/addons/account_followup/report/report_followup_print.py +++ b/addons/account_followup/report/report_followup_print.py @@ -61,10 +61,10 @@ class report_rappel(report_sxw.rml_parse): movelines = moveline_obj.read(self.cr, self.uid, movelines) return movelines - def _get_text(self, data): + def _get_text(self, partner): text = "" a = {} - partner_line = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',data.id)]) + partner_line = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',partner.id)]) for i in pooler.get_pool(self.cr.dbname).get('account.move.line').browse(self.cr, self.uid, partner_line): if i.followup_line_id and str(i.followup_line_id.delay)=='45': text = i.followup_line_id.description @@ -76,6 +76,7 @@ class report_rappel(report_sxw.rml_parse): text = i.followup_line_id.description a['15'] = text text = (a.has_key('45') and a['45']) or (a.has_key('30') and a['30']) or (a.has_key('15') and a['15']) + text = text % {'partner_name':partner.name} return text From a7fa06f7cd0c7a33001f28126f4d80e362b668e9 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 28 Jan 2009 16:14:06 +0100 Subject: [PATCH 20/53] icons bzr revid: fp@tinyerp.com-20090128151406-6x9zk5425gbp631f --- addons/account/account_invoice_view.xml | 18 ++++++++-------- addons/account/account_view.xml | 4 ++-- addons/project/project_view.xml | 28 ++++++++++++------------- addons/purchase/purchase_view.xml | 16 +++++++------- addons/sale/sale_view.xml | 22 +++++++++---------- 5 files changed, 44 insertions(+), 44 deletions(-) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 823eae52455..cd383da14d1 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -188,10 +188,10 @@ -