[FIX] purchase: invoice status
- Create a PO with a product "Control Purchase Bills" set to "On received quantities". - Validate the PO. The invoice status is "Waiting Bills", while it should be "Bills Received". opw-726245
This commit is contained in:
@@ -47,7 +47,7 @@ class PurchaseOrder(models.Model):
|
||||
if min_date:
|
||||
order.date_planned = min_date
|
||||
|
||||
@api.depends('state', 'order_line.qty_invoiced', 'order_line.product_qty')
|
||||
@api.depends('state', 'order_line.qty_invoiced', 'order_line.qty_received', 'order_line.product_qty')
|
||||
def _get_invoiced(self):
|
||||
precision = self.env['decimal.precision'].precision_get('Product Unit of Measure')
|
||||
for order in self:
|
||||
@@ -55,9 +55,9 @@ class PurchaseOrder(models.Model):
|
||||
order.invoice_status = 'no'
|
||||
continue
|
||||
|
||||
if any(float_compare(line.qty_invoiced, line.product_qty, precision_digits=precision) == -1 for line in order.order_line):
|
||||
if any(float_compare(line.qty_invoiced, line.product_qty if line.product_id.purchase_method == 'purchase' else line.qty_received, precision_digits=precision) == -1 for line in order.order_line):
|
||||
order.invoice_status = 'to invoice'
|
||||
elif all(float_compare(line.qty_invoiced, line.product_qty, precision_digits=precision) >= 0 for line in order.order_line):
|
||||
elif all(float_compare(line.qty_invoiced, line.product_qty if line.product_id.purchase_method == 'purchase' else line.qty_received, precision_digits=precision) >= 0 for line in order.order_line):
|
||||
order.invoice_status = 'invoiced'
|
||||
else:
|
||||
order.invoice_status = 'no'
|
||||
|
||||
@@ -22,6 +22,7 @@ class TestPurchaseOrder(AccountingTestCase):
|
||||
self.product_id_1 = self.env.ref('product.product_product_8')
|
||||
self.product_id_2 = self.env.ref('product.product_product_11')
|
||||
|
||||
(self.product_id_1 | self.product_id_2).write({'purchase_method': 'purchase'})
|
||||
# Ensure product_id_2 doesn't have res_partner_1 as supplier
|
||||
if self.partner_id in self.product_id_2.seller_ids.mapped('name'):
|
||||
id_to_remove = self.product_id_2.seller_ids.filtered(lambda r: r.name == self.partner_id).ids[0] if self.product_id_2.seller_ids.filtered(lambda r: r.name == self.partner_id) else False
|
||||
|
||||
Reference in New Issue
Block a user