diff --git a/addons/pos_sale/models/pos_order.py b/addons/pos_sale/models/pos_order.py index ac4d1864243..3a8300834c6 100644 --- a/addons/pos_sale/models/pos_order.py +++ b/addons/pos_sale/models/pos_order.py @@ -31,9 +31,12 @@ class PosOrder(models.Model): def _prepare_invoice_vals(self): invoice_vals = super(PosOrder, self)._prepare_invoice_vals() invoice_vals['team_id'] = self.crm_team_id.id - addr = self.partner_id.address_get(['delivery']) - invoice_vals['partner_shipping_id'] = addr['delivery'] sale_orders = self.lines.mapped('sale_order_origin_id') + if sale_orders and (sale_orders.partner_invoice_id.id != sale_orders.partner_shipping_id.id): + invoice_vals['partner_shipping_id'] = sale_orders.partner_shipping_id.id + else: + addr = self.partner_id.address_get(['delivery']) + invoice_vals['partner_shipping_id'] = addr['delivery'] if sale_orders and sale_orders[0].payment_term_id: invoice_vals['invoice_payment_term_id'] = sale_orders[0].payment_term_id.id, return invoice_vals diff --git a/addons/pos_sale/tests/test_pos_sale_report.py b/addons/pos_sale/tests/test_pos_sale_report.py index 776112b1eae..a9e5464bcff 100644 --- a/addons/pos_sale/tests/test_pos_sale_report.py +++ b/addons/pos_sale/tests/test_pos_sale_report.py @@ -80,3 +80,23 @@ class TestPoSSaleReport(TestPoSCommon): report = self.env['sale.report'].sudo().search([('product_id', '=', product_2.id)], order='id', limit=1) self.assertEqual(report.weight, 6) self.assertEqual(report.weight, 6) + + def test_different_shipping_address(self): + product_0 = self.create_product('Product 0', self.categ_basic, 0.0, 0.0) + sale_order = self.env['sale.order'].create({ + 'partner_id': self.env.ref('base.res_partner_1').id, + 'partner_shipping_id': self.env.ref('base.res_partner_2').id, + 'order_line': [(0, 0, { + 'product_id': product_0.id, + })], + }) + self.open_new_session() + + data = self.create_ui_order_data([(product_0, 1)], self.env.ref('base.res_partner_1'), True) + data['data']['lines'][0][2]['sale_order_origin_id'] = sale_order.read()[0] + data['data']['lines'][0][2]['sale_order_line_id'] = sale_order.order_line[0].read()[0] + order_ids = self.env['pos.order'].create_from_ui([data]) + + move_id = self.env['account.move'].browse(order_ids[0]['account_move']) + self.assertEqual(move_id.partner_id.id, self.env.ref('base.res_partner_1').id) + self.assertEqual(move_id.partner_shipping_id.id, self.env.ref('base.res_partner_2').id)