Skip to content

Commit

Permalink
[FIX] sale_third_party: compute qty_to_invoice, fix warning
Browse files Browse the repository at this point in the history
  • Loading branch information
etobella committed Jan 21, 2025
1 parent a8dd1f9 commit b8e0413
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 9 deletions.
17 changes: 9 additions & 8 deletions sale_third_party/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,12 @@ def write(self, vals):
)
return super().write(vals)

@api.model
def create(self, vals):
prefix = vals.get("third_party_sequence_prefix")
if prefix:
seq_vals = self._prepare_ir_sequence(prefix)
sequence = self.env["ir.sequence"].create(seq_vals)
vals["third_party_sequence_id"] = sequence.id
return super().create(vals)
@api.model_create_multi
def create(self, mvals):
for vals in mvals:
prefix = vals.get("third_party_sequence_prefix")
if prefix:
seq_vals = self._prepare_ir_sequence(prefix)
sequence = self.env["ir.sequence"].create(seq_vals)
vals["third_party_sequence_id"] = sequence.id
return super().create(mvals)
13 changes: 12 additions & 1 deletion sale_third_party/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,22 @@ class SalerOrderLine(models.Model):
"order_id.third_party_order",
)
def _compute_invoice_status(self):
res = super()._compute_invoice_status()
res = super(
SalerOrderLine, self.filtered(lambda r: not r.order_id.third_party_order)
)._compute_invoice_status()
for line in self.filtered(lambda r: r.order_id.third_party_order):
line.invoice_status = "no"
return res

@api.depends("order_id.third_party_order")
def _compute_qty_to_invoice(self):
res = super(
SalerOrderLine, self.filtered(lambda r: not r.order_id.third_party_order)
)._compute_qty_to_invoice()
for line in self.filtered(lambda r: r.order_id.third_party_order):
line.qty_to_invoice = 0
return res

third_party_price = fields.Monetary(currency_field="currency_id")
third_party_product_id = fields.Many2one(
"product.product", domain="[('type', '=', 'service')]"
Expand Down
4 changes: 4 additions & 0 deletions sale_third_party/tests/test_third_party.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,13 +326,17 @@ def test_third_party_security(self):
self.assertEqual(0, sale_order.invoice_count)
self.assertEqual(0, sale_order.third_party_order_count)
self.assertEqual("no", sale_order.invoice_status)
for line in sale_order.order_line:
self.assertEqual(0, line.qty_to_invoice)
self.assertFalse(sale_order.third_party_move_id)
sale_order.action_confirm()
sale_order.third_party_move_id.check_access_rights("read")
sale_order.third_party_move_id.check_access_rule("read")
self.assertTrue(sale_order.third_party_move_id)
self.assertEqual(1, sale_order.third_party_order_count)
self.assertEqual("no", sale_order.invoice_status)
for line in sale_order.order_line:
self.assertEqual(0, line.qty_to_invoice)
self.assertEqual(len(sale_order.third_party_order_ids), 1)
third_party_order = sale_order.third_party_order_ids[0]
self.assertEqual(
Expand Down

0 comments on commit b8e0413

Please sign in to comment.