parent
dba684588d
commit
4665a46f9a
|
@ -12,3 +12,7 @@ def register():
|
|||
sale_cost.SaleCost,
|
||||
invoice.InvoiceLine,
|
||||
module='sale_cost_apply_invoice', type_='model')
|
||||
Pool.register(
|
||||
invoice.InvoiceLineSaleInfo,
|
||||
module='sale_cost_apply_invoice', type_='model',
|
||||
depends=['account_invoice_line_sale_info'])
|
||||
|
|
84
invoice.py
84
invoice.py
|
@ -1,8 +1,10 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.pool import PoolMeta, Pool
|
||||
from sql import Null
|
||||
from sql.operators import Concat
|
||||
|
||||
__all__ = ['InvoiceLine']
|
||||
__all__ = ['InvoiceLine', 'InvoiceLineSaleInfo']
|
||||
|
||||
|
||||
class InvoiceLine(metaclass=PoolMeta):
|
||||
|
@ -11,3 +13,81 @@ class InvoiceLine(metaclass=PoolMeta):
|
|||
@classmethod
|
||||
def _get_origin(cls):
|
||||
return super(InvoiceLine, cls)._get_origin() + ['sale.cost']
|
||||
|
||||
|
||||
class InvoiceLineSaleInfo(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice.line'
|
||||
|
||||
def get_shipment_out_numbers(self, name=None):
|
||||
if self.invoice_type == 'out' and self.origin and \
|
||||
self.origin.__name__ == 'sale.cost':
|
||||
shipments = set([shipment.rec_name
|
||||
for shipment in self.origin.document.shipments])
|
||||
return ','.join(sorted(shipments))
|
||||
return super().get_shipment_out_numbers(name)
|
||||
|
||||
@classmethod
|
||||
def search_shipment_out_numbers(cls, name, clause):
|
||||
domain = super().search_shipment_out_numbers(name, clause)
|
||||
|
||||
return ['OR',
|
||||
domain,
|
||||
[('origin.document.shipments.number',) +
|
||||
tuple(clause[1:3]) + ('sale.cost',) + tuple(clause[3:])]
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def _get_order_shipment_out_numbers_query_items(cls, table):
|
||||
pool = Pool()
|
||||
StockMove = pool.get('stock.move')
|
||||
SaleLine = pool.get('sale.line')
|
||||
SaleCost = pool.get('sale.cost')
|
||||
ShipmentOut = pool.get('stock.shipment.out')
|
||||
sale_line = SaleLine.__table__()
|
||||
stock_move = StockMove.__table__()
|
||||
sale_cost = SaleCost.__table__()
|
||||
shipment_out = ShipmentOut.__table__()
|
||||
|
||||
fromitem, conditionals = \
|
||||
super()._get_order_shipment_out_numbers_query_items(table)
|
||||
fromitem = fromitem.join(sale_cost, 'LEFT', condition=(
|
||||
Concat('sale.cost,', sale_cost.id) == table.origin)
|
||||
).join(sale_line, 'LEFT', condition=(
|
||||
sale_line.sale == sale_cost.document)
|
||||
).join(stock_move, 'LEFT', condition=(
|
||||
Concat('sale.line,', sale_line.id) == stock_move.origin)
|
||||
).join(shipment_out, 'LEFT', condition=(
|
||||
Concat('stock.shipment.out,', shipment_out.id
|
||||
) == stock_move.shipment))
|
||||
conditionals.append((shipment_out.number != Null, shipment_out.number))
|
||||
return fromitem, conditionals
|
||||
|
||||
@classmethod
|
||||
def _get_order_sale_date_query_items(cls, table):
|
||||
pool = Pool()
|
||||
Sale = pool.get('sale.sale')
|
||||
SaleCost = pool.get('sale.cost')
|
||||
sale = Sale.__table__()
|
||||
sale_cost = SaleCost.__table__()
|
||||
|
||||
fromitem, conditionals = super()._get_order_sale_date_query_items(
|
||||
table)
|
||||
fromitem = fromitem.join(sale_cost, 'LEFT', condition=(
|
||||
Concat('sale.cost,', sale_cost.id) == table.origin)
|
||||
).join(sale, 'LEFT', condition=(sale_cost.document == sale.id))
|
||||
conditionals.append((sale.sale_date != Null, sale.sale_date))
|
||||
return fromitem, conditionals
|
||||
|
||||
def get_sale_data(self, name=None):
|
||||
if self.invoice_type == 'out' and self.origin and \
|
||||
self.origin.__name__ == 'sale.cost':
|
||||
return getattr(self.origin.document, name)
|
||||
return super().get_sale_data(name)
|
||||
|
||||
@classmethod
|
||||
def search_sale_data(cls, name, clause):
|
||||
domain = super().search_sale_data(name, clause)
|
||||
return ['OR',
|
||||
domain,
|
||||
('origin.document.%s' % clause[0],) +
|
||||
tuple(clause[1:3]) + ('sale.cost',) + tuple(clause[3:])]
|
||||
|
|
|
@ -224,5 +224,4 @@ Delete applied costs::
|
|||
>>> sale.save()
|
||||
>>> lines = InvoiceLine.find([('origin', '=', 'sale.cost,%s' % invoice_out_cost.id)])
|
||||
>>> len(lines)
|
||||
0
|
||||
|
||||
0
|
|
@ -6,5 +6,8 @@ depends:
|
|||
sale_cost
|
||||
document_cost_apply_invoice
|
||||
|
||||
extras_depend:
|
||||
account_invoice_line_sale_info
|
||||
|
||||
xml:
|
||||
sale_cost.xml
|
||||
|
|
Loading…
Reference in New Issue