[FIX] pos_sale: show correct shipping address

When creating a quotation in the sales app with a different shipping address, this is not shown on the invoice report from the point of sale.
Before it was always using the pos order partner address.
Now we check if the sale order had a different shipping address before setting the address on the report.

closes odoo/odoo#117603

Task-id: 3258679
X-original-commit: f12abb338501a745716480e055e9a8d33229bb0c
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
This commit is contained in:
rhe-odoo
2023-04-11 09:21:05 +02:00
parent a457785920
commit 7db7b3ef04
2 changed files with 25 additions and 2 deletions
+5 -2
View File
@@ -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
@@ -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)