This commit is contained in:
2026-01-17 14:03:45 +01:00
parent 9b887a6b4c
commit b38f7553a6

View File

@@ -1857,77 +1857,77 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
else: else:
lots_to_invoice = self.lots lots_to_invoice = self.lots
for l in lots_to_invoice: for l in lots_to_invoice:
#if l.lot_type == 'physic': if l.lot_type == 'physic':
invoice_line = InvoiceLine() invoice_line = InvoiceLine()
invoice_line.type = self.type invoice_line.type = self.type
invoice_line.currency = self.currency invoice_line.currency = self.currency
invoice_line.company = self.company invoice_line.company = self.company
invoice_line.description = self.description invoice_line.description = self.description
invoice_line.note = self.note invoice_line.note = self.note
invoice_line.origin = self invoice_line.origin = self
qt, gross_qt = l.get_hist_quantity(0) qt, gross_qt = l.get_hist_quantity(0)
quantity = float(qt) quantity = float(qt)
quantity = Uom.compute_qty(l.lot_unit_line, quantity, self.unit) quantity = Uom.compute_qty(l.lot_unit_line, quantity, self.unit)
if self.unit: if self.unit:
quantity = self.unit.round(quantity) quantity = self.unit.round(quantity)
invoice_line.unit_price = l.get_lot_price() invoice_line.unit_price = l.get_lot_price()
invoice_line.product = l.lot_product invoice_line.product = l.lot_product
invoice_line.quantity = quantity invoice_line.quantity = quantity
if not invoice_line.quantity: if not invoice_line.quantity:
return [] return []
invoice_line.unit = self.unit invoice_line.unit = self.unit
invoice_line.taxes = self.taxes invoice_line.taxes = self.taxes
if self.company.purchase_taxes_expense: if self.company.purchase_taxes_expense:
invoice_line.taxes_deductible_rate = 0 invoice_line.taxes_deductible_rate = 0
elif self.product: elif self.product:
invoice_line.taxes_deductible_rate = ( invoice_line.taxes_deductible_rate = (
self.product.supplier_taxes_deductible_rate_used) self.product.supplier_taxes_deductible_rate_used)
invoice_line.invoice_type = 'in' invoice_line.invoice_type = 'in'
if self.product: if self.product:
invoice_line.account = self.product.account_stock_in_used invoice_line.account = self.product.account_stock_in_used
if not invoice_line.account: if not invoice_line.account:
raise AccountError( raise AccountError(
gettext('purchase' gettext('purchase'
'.msg_purchase_product_missing_account_expense', '.msg_purchase_product_missing_account_expense',
purchase=self.purchase.rec_name, purchase=self.purchase.rec_name,
product=self.product.rec_name)) product=self.product.rec_name))
else: else:
invoice_line.account = account_config.get_multivalue( invoice_line.account = account_config.get_multivalue(
'default_category_account_expense', company=self.company.id) 'default_category_account_expense', company=self.company.id)
if not invoice_line.account: if not invoice_line.account:
raise AccountError( raise AccountError(
gettext('purchase' gettext('purchase'
'.msg_purchase_missing_account_expense', '.msg_purchase_missing_account_expense',
purchase=self.purchase.rec_name)) purchase=self.purchase.rec_name))
if action == 'prov': if action == 'prov':
invoice_line.description = 'Pro forma' invoice_line.description = 'Pro forma'
elif action == 'final': elif action == 'final':
invoice_line.description = 'Final' invoice_line.description = 'Final'
elif action == 'service': elif action == 'service':
invoice_line.description = 'Service' invoice_line.description = 'Service'
#invoice_line.stock_moves = self._get_invoice_line_moves() #invoice_line.stock_moves = self._get_invoice_line_moves()
#invoice_line.stock_moves = [l.get_current_supplier_move()] #invoice_line.stock_moves = [l.get_current_supplier_move()]
invoice_line.lot = l.id invoice_line.lot = l.id
if self.product.type == 'service': if self.product.type == 'service':
invoice_line.unit_price = self.unit_price invoice_line.unit_price = self.unit_price
invoice_line.product = self.product invoice_line.product = self.product
invoice_line.stock_moves = [] invoice_line.stock_moves = []
Fee = Pool().get('fee.fee') Fee = Pool().get('fee.fee')
fee = Fee.search(['purchase','=',self.purchase.id]) fee = Fee.search(['purchase','=',self.purchase.id])
if fee: if fee:
invoice_line.fee = fee[0] invoice_line.fee = fee[0]
lines.append(invoice_line) lines.append(invoice_line)
logger.info("GETINVLINE:%s",self.product.type) logger.info("GETINVLINE:%s",self.product.type)
logger.info("GETINVLINE2:%s",l.invoice_line_prov) logger.info("GETINVLINE2:%s",l.invoice_line_prov)
if l.invoice_line_prov and self.product.type != 'service': if l.invoice_line_prov and self.product.type != 'service':
invoice_line_, = InvoiceLine.copy([l.invoice_line_prov], default={ invoice_line_, = InvoiceLine.copy([l.invoice_line_prov], default={
'invoice': None, 'invoice': None,
'quantity': -l.invoice_line_prov.quantity, 'quantity': -l.invoice_line_prov.quantity,
'unit_price': l.invoice_line_prov.unit_price, 'unit_price': l.invoice_line_prov.unit_price,
'party': l.invoice_line_prov.invoice.party, 'party': l.invoice_line_prov.invoice.party,
'origin': str(self), 'origin': str(self),
}) })
lines.append(invoice_line_) lines.append(invoice_line_)
return lines return lines
def _get_invoice_line_quantity(self): def _get_invoice_line_quantity(self):