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