02.04.26
This commit is contained in:
@@ -2774,40 +2774,54 @@ class LotInvoice(Wizard):
|
|||||||
'action': act
|
'action': act
|
||||||
}
|
}
|
||||||
|
|
||||||
def transition_invoicing(self):
|
def transition_invoicing(self):
|
||||||
Lot = Pool().get('lot.lot')
|
Lot = Pool().get('lot.lot')
|
||||||
Purchase = Pool().get('purchase.purchase')
|
Purchase = Pool().get('purchase.purchase')
|
||||||
Sale = Pool().get('sale.sale')
|
Sale = Pool().get('sale.sale')
|
||||||
lots = []
|
lots = []
|
||||||
action = self.inv.action
|
purchases = []
|
||||||
for r in self.records:
|
sales = []
|
||||||
purchase = r.r_line.purchase
|
action = self.inv.action
|
||||||
sale = None
|
for r in self.records:
|
||||||
if r.r_sale_line:
|
purchase = r.r_line.purchase if r.r_line else None
|
||||||
sale = r.r_sale_line.sale
|
sale = r.r_sale_line.sale if r.r_sale_line else None
|
||||||
lot = Lot(r.r_lot_p)
|
if purchase and purchase not in purchases:
|
||||||
# if lot.move == None:
|
purchases.append(purchase)
|
||||||
# Warning = Pool().get('res.user.warning')
|
if sale and sale not in sales:
|
||||||
# warning_name = Warning.format("Lot not confirmed", [])
|
sales.append(sale)
|
||||||
# if Warning.check(warning_name):
|
lot = Lot(r.r_lot_p)
|
||||||
|
# if lot.move == None:
|
||||||
|
# Warning = Pool().get('res.user.warning')
|
||||||
|
# warning_name = Warning.format("Lot not confirmed", [])
|
||||||
|
# if Warning.check(warning_name):
|
||||||
# raise QtWarning(warning_name,
|
# raise QtWarning(warning_name,
|
||||||
# "Lot not confirmed, click yes to confirm and invoice")
|
# "Lot not confirmed, click yes to confirm and invoice")
|
||||||
# continue
|
# continue
|
||||||
if lot.invoice_line:
|
if lot.invoice_line:
|
||||||
continue
|
continue
|
||||||
lots.append(lot)
|
lots.append(lot)
|
||||||
|
|
||||||
invoice_line = None
|
invoice_line = None
|
||||||
if self.inv.type == 'purchase':
|
if self.inv.type == 'purchase':
|
||||||
Purchase._process_invoice([purchase],lots,action,self.inv.pp_pur)
|
Purchase._process_invoice(purchases, lots, action, self.inv.pp_pur)
|
||||||
invoice_line = r.r_lot_p.invoice_line if r.r_lot_p.invoice_line else r.r_lot_p.invoice_line_prov
|
for lot in lots:
|
||||||
else:
|
lot = Lot(lot.id)
|
||||||
if sale:
|
invoice_line = lot.invoice_line or lot.invoice_line_prov
|
||||||
Sale._process_invoice([sale],lots,action,self.inv.pp_sale)
|
if invoice_line:
|
||||||
invoice_line = r.r_lot_p.invoice_line if r.r_lot_p.sale_invoice_line else r.r_lot_p.sale_invoice_line_prov
|
break
|
||||||
self.message.invoice = invoice_line.invoice
|
else:
|
||||||
|
if sales:
|
||||||
return 'message'
|
Sale._process_invoice(sales, lots, action, self.inv.pp_sale)
|
||||||
|
for lot in lots:
|
||||||
|
lot = Lot(lot.id)
|
||||||
|
invoice_line = lot.sale_invoice_line or lot.sale_invoice_line_prov
|
||||||
|
if invoice_line:
|
||||||
|
break
|
||||||
|
if not invoice_line:
|
||||||
|
raise UserError("No invoice line was generated from the selected lots.")
|
||||||
|
self.message.invoice = invoice_line.invoice
|
||||||
|
|
||||||
|
return 'message'
|
||||||
|
|
||||||
def default_message(self, fields):
|
def default_message(self, fields):
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -333,5 +333,20 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
|||||||
|
|
||||||
self.assertEqual(invoice.report_net, Decimal('800'))
|
self.assertEqual(invoice.report_net, Decimal('800'))
|
||||||
|
|
||||||
|
def test_lot_invoice_sale_uses_sale_invoice_line_reference(self):
|
||||||
|
'sale invoicing must resolve the generated invoice from sale invoice links'
|
||||||
|
sale_invoice = Mock()
|
||||||
|
sale_invoice_line = Mock(invoice=sale_invoice)
|
||||||
|
lot = Mock(
|
||||||
|
sale_invoice_line=sale_invoice_line,
|
||||||
|
sale_invoice_line_prov=None,
|
||||||
|
invoice_line=None,
|
||||||
|
invoice_line_prov=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
invoice_line = lot.sale_invoice_line or lot.sale_invoice_line_prov
|
||||||
|
|
||||||
|
self.assertIs(invoice_line.invoice, sale_invoice)
|
||||||
|
|
||||||
|
|
||||||
del ModuleTestCase
|
del ModuleTestCase
|
||||||
|
|||||||
Reference in New Issue
Block a user