[FIX] point_of_sale: facilitate inheritance return

We are are here facilitating the inheritance of the functions that
create the reurn orders

closes odoo/odoo#57796

X-original-commit: ebb11e18eef7f0a0031f01389116a24de868b6b3
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
This commit is contained in:
Carlos Lopez
2020-09-16 08:10:05 +00:00
committed by Pierre Masereel
parent bdd92878d9
commit 902ac89eb8
+27 -25
View File
@@ -490,6 +490,19 @@ class PosOrder(models.Model):
self.env['pos.payment'].create(data)
self.amount_paid = sum(self.payment_ids.mapped('amount'))
def _prepare_refund_values(self, current_session):
self.ensure_one()
return {
'name': self.name + _(' REFUND'),
'session_id': current_session.id,
'date_order': fields.Datetime.now(),
'pos_reference': self.pos_reference,
'lines': False,
'amount_tax': -self.amount_tax,
'amount_total': -self.amount_total,
'amount_paid': 0,
}
def refund(self):
"""Create a copy of order for refund order"""
refund_orders = self.env['pos.order']
@@ -499,28 +512,14 @@ class PosOrder(models.Model):
current_session = order.session_id.config_id.current_session_id
if not current_session:
raise UserError(_('To return product(s), you need to open a session in the POS %s', order.session_id.config_id.display_name))
refund_order = order.copy({
'name': order.name + _(' REFUND'),
'session_id': current_session.id,
'date_order': fields.Datetime.now(),
'pos_reference': order.pos_reference,
'lines': False,
'amount_tax': -order.amount_tax,
'amount_total': -order.amount_total,
'amount_paid': 0,
})
refund_order = order.copy(
order._prepare_refund_values(current_session)
)
for line in order.lines:
PosOrderLineLot = self.env['pos.pack.operation.lot']
for pack_lot in line.pack_lot_ids:
PosOrderLineLot += pack_lot.copy()
line.copy({
'name': line.name + _(' REFUND'),
'qty': -line.qty,
'order_id': refund_order.id,
'price_subtotal': -line.price_subtotal,
'price_subtotal_incl': -line.price_subtotal_incl,
'pack_lot_ids': PosOrderLineLot,
})
line.copy(line._prepare_refund_data(refund_order, PosOrderLineLot))
refund_orders |= refund_order
return {
@@ -680,25 +679,28 @@ class PosOrderLine(models.Model):
currency_id = fields.Many2one('res.currency', related='order_id.currency_id')
full_product_name = fields.Char('Full Product Name')
@api.model
def _prepare_refund_data(self, refund_order_id):
def _prepare_refund_data(self, refund_order, PosOrderLineLot):
"""
This prepares data for refund order line. Inheritance may inject more data here
@param refund_order_id: the pre-created refund order
@type refund_order_id: pos.order
@param refund_order: the pre-created refund order
@type refund_order: pos.order
@param PosOrderLineLot: the pre-created Pack operation Lot
@type PosOrderLineLot: pos.pack.operation.lot
@return: dictionary of data which is for creating a refund order line from the original line
@rtype: dict
"""
self.ensure_one()
return {
# required=True, copy=False
'name': self.name + _(' REFUND'),
'qty': -self.qty,
'order_id': refund_order_id.id,
'order_id': refund_order.id,
'price_subtotal': -self.price_subtotal,
'price_subtotal_incl': -self.price_subtotal_incl,
}
'pack_lot_ids': PosOrderLineLot,
}
@api.model
def create(self, values):