~sebastien.beau/magentoerpconnect/magentoerpconnect-fix-partner-export

« back to all changes in this revision

Viewing changes to magentoerpconnect/sale.py

[MRG] [IMP] always update the partner when importing an order. It allows to update the customer group or other data which have changed since the first creation of the partner

Show diffs side-by-side

added added

removed removed

Lines of Context:
281
281
        if 'address_type' in data_record['shipping_address']:
282
282
            data_record['shipping_address'].update(self.get_mage_customer_address_id(data_record['shipping_address']))
283
283
        shipping_default = {}
284
 
        billing_default = {}
 
284
 
285
285
        if res is None:
286
286
            res = {}
287
 
        res['partner_id'] = self.pool.get('res.partner').extid_to_oeid(cr, uid, data_record['customer_id'], external_referential_id)
 
287
 
 
288
        # always update the customer when importing an order
 
289
        partner_obj.get_external_data(
 
290
            cr, uid,
 
291
            context.get('conn_obj'),
 
292
            external_referential_id,
 
293
            defaults={},
 
294
            context={'id': data_record['customer_id']})
 
295
        res['partner_id'] = partner_obj.extid_to_oeid(cr, uid, data_record['customer_id'], external_referential_id)
 
296
 
288
297
        if res.get('partner_id', False):
289
298
            shipping_default = {'partner_id': res.get('partner_id', False)}
290
299
        billing_default = shipping_default.copy()
291
300
        billing_default.update({'email' : data_record.get('customer_email', False)})
292
301
 
293
 
        inv_res = partner_address_obj.ext_import(cr, uid, [data_record['billing_address']], external_referential_id, billing_default, context)
294
 
        if 'address_type' in data_record['shipping_address']:
295
 
            ship_res = partner_address_obj.ext_import(cr, uid, [data_record['shipping_address']], external_referential_id, shipping_default, context)
296
 
        else:
297
 
            ship_res = partner_address_obj.ext_import(cr, uid, [data_record['billing_address']], external_referential_id, shipping_default, context)
298
 
 
299
 
        res['partner_order_id'] = len(inv_res['create_ids']) > 0 and inv_res['create_ids'][0] or inv_res['write_ids'][0]
 
302
        inv_res = partner_address_obj.ext_import(
 
303
            cr, uid, [data_record['billing_address']], external_referential_id, billing_default, context)
 
304
        res['partner_order_id'] = inv_res.get('create_ids') and inv_res['create_ids'][0] or inv_res['write_ids'][0]
300
305
        res['partner_invoice_id'] = res['partner_order_id']
301
 
        res['partner_shipping_id'] = (len(ship_res['create_ids']) > 0 and ship_res['create_ids'][0]) or (len(ship_res['write_ids']) > 0 and ship_res['write_ids'][0]) or res['partner_order_id'] #shipping might be the same as invoice address
302
 
        
 
306
 
 
307
        if data_record['shipping_address']:
 
308
            ship_res = partner_address_obj.ext_import(
 
309
                cr, uid, [data_record['shipping_address']], external_referential_id, shipping_default, context)
 
310
            res['partner_shipping_id'] = (ship_res.get('create_ids') and ship_res['create_ids'][0]) or \
 
311
                                         (ship_res.get('write_ids') and ship_res['write_ids'][0]) \
 
312
                                         or False
 
313
 
 
314
        # when there is no shipping address, use the order's one
 
315
        if not res.get('partner_shipping_id'):
 
316
            res['partner_shipping_id'] = res['partner_order_id']
 
317
 
303
318
        result = partner_address_obj.read(cr, uid, res['partner_order_id'], ['partner_id'])
304
319
        if result and result['partner_id']:
305
320
            partner_id = result['partner_id'][0]