From f5f9d458b6915c71afe7d1a7781f2db7a74f6fa0 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 22 Mar 2012 11:48:46 +0530 Subject: [PATCH 1/3] [FIX] improved code in edi and l10n_ch modules. bzr revid: tpa@tinyerp.com-20120322061846-021c8rb9yfkespr4 --- addons/edi/models/res_partner.py | 6 +++--- addons/l10n_ch/bank_view.xml | 6 +++--- addons/l10n_ch/test/l10n_ch_report.yml | 24 ++++++++++++------------ addons/l10n_ch/wizard/create_dta.py | 2 +- addons/purchase/__openerp__.py | 2 +- addons/purchase/edi/purchase_order.py | 21 +++++++-------------- addons/sale/edi/sale_order.py | 21 +++++++++------------ addons/sale/test/edi_sale_order.yml | 13 ++++++------- 8 files changed, 42 insertions(+), 53 deletions(-) diff --git a/addons/edi/models/res_partner.py b/addons/edi/models/res_partner.py index 95a8811e2aa..f5f728765de 100644 --- a/addons/edi/models/res_partner.py +++ b/addons/edi/models/res_partner.py @@ -20,7 +20,7 @@ ############################################################################## import logging -from osv import fields,osv +from osv import fields,osv from edi import EDIMixin from openerp import SUPERUSER_ID from tools.translate import _ @@ -74,9 +74,9 @@ class res_partner(osv.osv, EDIMixin): edi_bank_ids = edi_document.pop('bank_ids', None) contact_id = super(res_partner,self).edi_import(cr, uid, edi_document, context=context) if edi_bank_ids: - contacts = self.browse(cr, uid, contact_id, context=context) + contact = self.browse(cr, uid, contact_id, context=context) import_ctx = dict((context or {}), - default_partner_id=contacts.parent_id.id, + default_partner_id=contact.id, default_state=self._get_bank_type(cr, uid, context)) for ext_bank_id, bank_name in edi_bank_ids: try: diff --git a/addons/l10n_ch/bank_view.xml b/addons/l10n_ch/bank_view.xml index 2ede389d7e1..9c994d8035e 100644 --- a/addons/l10n_ch/bank_view.xml +++ b/addons/l10n_ch/bank_view.xml @@ -153,13 +153,13 @@ form - + - + - + diff --git a/addons/l10n_ch/test/l10n_ch_report.yml b/addons/l10n_ch/test/l10n_ch_report.yml index 4d9997a03cb..07a139761e9 100644 --- a/addons/l10n_ch/test/l10n_ch_report.yml +++ b/addons/l10n_ch/test/l10n_ch_report.yml @@ -1,34 +1,34 @@ -- +- In order to test BVR printing. I create Partner data . -- +- !record {model: res.partner.category, id: res_partner_category_bvr}: name: Customers - I create BVR DUMMY Customer. -- +- !record {model: res.partner, id: res_partner_bvr}: category_id: - res_partner_category_bvr name: BVR DUMMY -- +- I create contact address for BVR DUMMY. -- +- !record {model: res.partner, id: res_partner_address_1}: - partner_id: res_partner_bvr + parent_id: res_partner_bvr street: Route de Bélario type: contact -- +- I create invoice address for BVR DUMMY. -- +- !record {model: res.partner, id: res_partner_address_2}: - partner_id: res_partner_bvr + parent_id: res_partner_bvr street: Route de Bélario type: invoice -- +- I create delivery address for BVR DUMMY. -- +- !record {model: res.partner, id: res_partner_address_3}: - partner_id: res_partner_bvr + parent_id: res_partner_bvr street: Route de Bélario type: delivery diff --git a/addons/l10n_ch/wizard/create_dta.py b/addons/l10n_ch/wizard/create_dta.py index 2b640799c17..836853fa4fa 100644 --- a/addons/l10n_ch/wizard/create_dta.py +++ b/addons/l10n_ch/wizard/create_dta.py @@ -491,7 +491,7 @@ def _create_dta(obj, cr, uid, data, context=None): or '' else: v['partner_country']= pline.partner_id.country_id \ - and pline.partner_id.acountry_id.name \ + and pline.partner_id.country_id.name \ or '' else: v['partner_street'] ='' diff --git a/addons/purchase/__openerp__.py b/addons/purchase/__openerp__.py index f3f77f0f23c..5b3902cf1cd 100644 --- a/addons/purchase/__openerp__.py +++ b/addons/purchase/__openerp__.py @@ -67,7 +67,7 @@ Dashboard for purchase management that includes: 'test/process/generate_invoice_from_reception.yml', 'test/process/run_scheduler.yml', 'test/process/merge_order.yml', -# 'test/process/edi_purchase_order.yml', + 'test/process/edi_purchase_order.yml', 'test/process/invoice_on_poline.yml', 'test/ui/print_report.yml', 'test/ui/duplicate_order.yml', diff --git a/addons/purchase/edi/purchase_order.py b/addons/purchase/edi/purchase_order.py index cdc2f319bc6..e899ba65563 100644 --- a/addons/purchase/edi/purchase_order.py +++ b/addons/purchase/edi/purchase_order.py @@ -65,7 +65,7 @@ class purchase_order(osv.osv, EDIMixin): """Exports a purchase order""" edi_struct = dict(edi_struct or PURCHASE_ORDER_EDI_STRUCT) res_company = self.pool.get('res.company') - res_partner_address = self.pool.get('res.partner.address') + res_partner_address = self.pool.get('res.partner') edi_doc_list = [] for order in records: # generate the main report @@ -95,29 +95,22 @@ class purchase_order(osv.osv, EDIMixin): # the desired company among the user's allowed companies self._edi_requires_attributes(('company_id','company_address'), edi_document) - res_partner_address = self.pool.get('res.partner.address') + res_partner_address = self.pool.get('res.partner') res_partner = self.pool.get('res.partner') - - # imported company = as a new partner - src_company_id, src_company_name = edi_document.pop('company_id') - partner_id = self.edi_import_relation(cr, uid, 'res.partner', src_company_name, - src_company_id, context=context) - partner_value = {'customer': True} - res_partner.write(cr, uid, [partner_id], partner_value, context=context) - # imported company_address = new partner address + src_company_id, src_company_name = edi_document.pop('company_id') address_info = edi_document.pop('company_address') - address_info['partner_id'] = (src_company_id, src_company_name) - address_info['type'] = 'default' + address_info['customer'] = True + if 'name' not in address_info: + address_info['name'] = src_company_name address_id = res_partner_address.edi_import(cr, uid, address_info, context=context) # modify edi_document to refer to new partner/address partner_address = res_partner_address.browse(cr, uid, address_id, context=context) - edi_document['partner_id'] = (src_company_id, src_company_name) edi_document.pop('partner_address', False) # ignored edi_document['partner_id'] = self.edi_m2o(cr, uid, partner_address, context=context) - return partner_id + return address_id def _edi_get_pricelist(self, cr, uid, partner_id, currency, context=None): # TODO: refactor into common place for purchase/sale, e.g. into product module diff --git a/addons/sale/edi/sale_order.py b/addons/sale/edi/sale_order.py index 841a3741d2c..03a59dff0f5 100644 --- a/addons/sale/edi/sale_order.py +++ b/addons/sale/edi/sale_order.py @@ -101,28 +101,25 @@ class sale_order(osv.osv, EDIMixin): self._edi_requires_attributes(('company_id','company_address'), edi_document) res_partner = self.pool.get('res.partner') - # imported company = as a new partner - src_company_id, src_company_name = edi_document.pop('company_id') - partner_id = self.edi_import_relation(cr, uid, 'res.partner', src_company_name, - src_company_id, context=context) - partner_value = {'supplier': True} - res_partner.write(cr, uid, [partner_id], partner_value, context=context) - # imported company_address = new partner address + src_company_id, src_company_name = edi_document.pop('company_id') + address_info = edi_document.pop('company_address') - address_info['parent_id'] = (src_company_id, src_company_name) - address_info['type'] = 'default' + address_info['supplier'] = True + if 'name' not in address_info: + address_info['name'] = src_company_name + address_id = res_partner.edi_import(cr, uid, address_info, context=context) # modify edi_document to refer to new partner/address partner_address = res_partner.browse(cr, uid, address_id, context=context) - # edi_document['parent_id'] = (src_company_id, src_company_name) edi_document.pop('partner_address', False) # ignored address_edi_m2o = self.edi_m2o(cr, uid, partner_address, context=context) + edi_document['partner_id'] = address_edi_m2o edi_document['partner_invoice_id'] = address_edi_m2o edi_document['partner_shipping_id'] = address_edi_m2o - return partner_id + return address_id def _edi_get_pricelist(self, cr, uid, partner_id, currency, context=None): # TODO: refactor into common place for purchase/sale, e.g. into product module @@ -210,7 +207,7 @@ class sale_order_line(osv.osv, EDIMixin): product_qty=line.product_uos_qty) # company.security_days is for internal use, so customer should only - # see the expected date_planned based on line.delay + # see the expected date_planned based on line.delay date_planned = datetime.strptime(line.order_id.date_order, DEFAULT_SERVER_DATE_FORMAT) + \ relativedelta(days=line.delay or 0.0) edi_doc['date_planned'] = date_planned.strftime(DEFAULT_SERVER_DATE_FORMAT) diff --git a/addons/sale/test/edi_sale_order.yml b/addons/sale/test/edi_sale_order.yml index 74319adec6d..af9a9b3aad6 100644 --- a/addons/sale/test/edi_sale_order.yml +++ b/addons/sale/test/edi_sale_order.yml @@ -56,17 +56,16 @@ "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.some_address", "__module": "base", "__model": "res.partner", - "name":"Chaussee", - "phone": "(+32).81.81.37.00", - "street": "Chaussee de Namur 40", - "city": "Gerompont", - "zip": "1367", + "phone": "(+32).81.81.37.00", + "street": "Chaussee de Namur 40", + "city": "Gerompont", + "zip": "1367", "country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"], "bank_ids": [ ["base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_bank-adaWadsadasdDJzGbp","Ladies bank: 032465789-156113"] ], - }, - "partner_id": ["purchase:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_test20", "jones white"], + }, + "partner_id": ["purchase:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_test20", "jones white"], "order_line": [{ "__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_line-AlhsVDZGoKvJ", "__module": "purchase", From 181042470c48421fa6ff24f0ee7fb5df8e126a2e Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 22 Mar 2012 12:37:02 +0530 Subject: [PATCH 2/3] [FIX]account: fixed edi. bzr revid: tpa@tinyerp.com-20120322070702-19ee4c7s90ga078l --- addons/account/edi/invoice.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/account/edi/invoice.py b/addons/account/edi/invoice.py index 7c326fdc467..cada93e75e0 100644 --- a/addons/account/edi/invoice.py +++ b/addons/account/edi/invoice.py @@ -126,30 +126,30 @@ class account_invoice(osv.osv, EDIMixin): self._edi_requires_attributes(('company_id','company_address','type'), edi_document) res_partner = self.pool.get('res.partner') - # imported company = new partner src_company_id, src_company_name = edi_document.pop('company_id') - partner_id = self.edi_import_relation(cr, uid, 'res.partner', src_company_name, - src_company_id, context=context) + invoice_type = edi_document['type'] partner_value = {} if invoice_type in ('out_invoice', 'out_refund'): partner_value.update({'customer': True}) if invoice_type in ('in_invoice', 'in_refund'): partner_value.update({'supplier': True}) - res_partner.write(cr, uid, [partner_id], partner_value, context=context) # imported company_address = new partner address address_info = edi_document.pop('company_address') - address_info['parent_id'] = (src_company_id, src_company_name) + if 'name' not in address_info: + address_info['name'] = src_company_name address_info['type'] = 'invoice' + address_info.update(partner_value) address_id = res_partner.edi_import(cr, uid, address_info, context=context) # modify edi_document to refer to new partner partner_address = res_partner.browse(cr, uid, address_id, context=context) - edi_document['partner_id'] = (src_company_id, src_company_name) + address_edi_m2o = self.edi_m2o(cr, uid, partner_address, context=context) + edi_document['partner_id'] = address_edi_m2o edi_document.pop('partner_address', False) # ignored - return partner_id + return address_id def edi_import(self, cr, uid, edi_document, context=None): From 79a603d34f32047eb10673dbc7f207bf819348a3 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 22 Mar 2012 13:03:23 +0530 Subject: [PATCH 3/3] [FIX] account_payment: improved code for adress bzr revid: tpa@tinyerp.com-20120322073323-rk9g73snvbyqhk3e --- addons/account_payment/account_payment.py | 84 +++++++++++------------ 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py index 1de715dc777..ae25c6a206a 100644 --- a/addons/account_payment/account_payment.py +++ b/addons/account_payment/account_payment.py @@ -35,7 +35,7 @@ class payment_mode(osv.osv): domain=[('type', 'in', ('bank','cash'))], help='Bank or Cash Journal for the Payment Mode'), 'company_id': fields.many2one('res.company', 'Company',required=True), 'partner_id':fields.related('company_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True,), - + } _defaults = { 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id @@ -51,14 +51,14 @@ class payment_mode(osv.osv): JOIN payment_mode pm ON (pm.bank_id = pb.id) WHERE pm.id = %s """, [payment_code]) return [x[0] for x in cr.fetchall()] - + def onchange_company_id (self, cr, uid, ids, company_id=False, context=None): result = {} if company_id: partner_id = self.pool.get('res.company').browse(cr, uid, company_id, context=context).partner_id.id result['partner_id'] = partner_id return {'value': result} - + payment_mode() @@ -191,21 +191,20 @@ class payment_line(osv.osv): for line in self.browse(cr, uid, ids, context=context): owner = line.order_id.mode.bank_id.partner_id result[line.id] = False - if owner.address: - for ads in owner.address: - if ads.type == 'default': - st = ads.street and ads.street or '' - st1 = ads.street2 and ads.street2 or '' - if 'zip_id' in ads: - zip_city = ads.zip_id and partner_zip_obj.name_get(cr, uid, [ads.zip_id.id])[0][1] or '' - else: - zip = ads.zip and ads.zip or '' - city = ads.city and ads.city or '' - zip_city = zip + ' ' + city - cntry = ads.country_id and ads.country_id.name or '' - info = owner.name + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry - result[line.id] = info - break + if owner: + if owner.type == 'default': + st = owner.street and owner.street or '' + st1 = owner.street2 and owner.street2 or '' + if 'zip_id' in owner: + zip_city = owner.zip_id and partner_zip_obj.name_get(cr, uid, [owner.zip_id.id])[0][1] or '' + else: + zip = owner.zip and owner.zip or '' + city = owner.city and owner.city or '' + zip_city = zip + ' ' + city + cntry = owner.country_id and owner.country_id.name or '' + info = owner.name + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry + result[line.id] = info + break return result def info_partner(self, cr, uid, ids, name=None, args=None, context=None): @@ -219,18 +218,18 @@ class payment_line(osv.osv): if not line.partner_id: break partner = line.partner_id.name or '' - if line.partner_id.address: - for ads in line.partner_id.address: - if ads.type == 'default': - st = ads.street and ads.street or '' - st1 = ads.street2 and ads.street2 or '' - if 'zip_id' in ads: - zip_city = ads.zip_id and partner_zip_obj.name_get(cr, uid, [ads.zip_id.id])[0][1] or '' + if line.partner_id: + #for ads in line.partner_id.address: + if line.partner_id.type == 'default': + st = line.partner_id.street and line.partner_id.street or '' + st1 = line.partner_id.street2 and line.partner_id.street2 or '' + if 'zip_id' in line.partner_id: + zip_city = line.partner_id.zip_id and partner_zip_obj.name_get(cr, uid, [line.partner_id.zip_id.id])[0][1] or '' else: - zip = ads.zip and ads.zip or '' - city = ads.city and ads.city or '' + zip = line.partner_id.zip and line.partner_id.zip or '' + city = line.partner_id.city and line.partner_id.city or '' zip_city = zip + ' ' + city - cntry = ads.country_id and ads.country_id.name or '' + cntry = line.partner_id.country_id and line.partner_id.country_id.name or '' info = partner + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry result[line.id] = info break @@ -428,24 +427,23 @@ class payment_line(osv.osv): if partner_id: part_obj = partner_obj.browse(cr, uid, partner_id, context=context) partner = part_obj.name or '' + if part_obj: + #for ads in part_obj.address: + if part_obj.type == 'default': + st = part_obj.street and part_obj.street or '' + st1 = part_obj.street2 and part_obj.street2 or '' - if part_obj.address: - for ads in part_obj.address: - if ads.type == 'default': - st = ads.street and ads.street or '' - st1 = ads.street2 and ads.street2 or '' + if 'zip_id' in part_obj: + zip_city = part_obj.zip_id and partner_zip_obj.name_get(cr, uid, [part_obj.zip_id.id])[0][1] or '' + else: + zip = part_obj.zip and part_obj.zip or '' + city = part_obj.city and part_obj.city or '' + zip_city = zip + ' ' + city - if 'zip_id' in ads: - zip_city = ads.zip_id and partner_zip_obj.name_get(cr, uid, [ads.zip_id.id])[0][1] or '' - else: - zip = ads.zip and ads.zip or '' - city = ads.city and ads.city or '' - zip_city = zip + ' ' + city + cntry = part_obj.country_id and part_obj.country_id.name or '' + info = partner + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry - cntry = ads.country_id and ads.country_id.name or '' - info = partner + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry - - data['info_partner'] = info + data['info_partner'] = info if part_obj.bank_ids and payment_type: bank_type = payment_mode_obj.suitable_bank_types(cr, uid, payment_type, context=context)