first commit
This commit is contained in:
67
modules/commission_waiting/invoice.py
Normal file
67
modules/commission_waiting/invoice.py
Normal file
@@ -0,0 +1,67 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
|
||||
|
||||
class Invoice(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice'
|
||||
|
||||
@classmethod
|
||||
def _post(cls, invoices):
|
||||
super()._post(invoices)
|
||||
cls.post_commission_waiting_moves(invoices)
|
||||
|
||||
@classmethod
|
||||
def create_commissions(cls, invoices):
|
||||
pool = Pool()
|
||||
Commission = pool.get('commission')
|
||||
|
||||
commissions = super().create_commissions(invoices)
|
||||
|
||||
Commission.create_waiting_move(commissions)
|
||||
return commissions
|
||||
|
||||
@classmethod
|
||||
def post_commission_waiting_moves(cls, invoices):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
|
||||
moves = []
|
||||
for invoice in invoices:
|
||||
for line in invoice.lines:
|
||||
for commission in line.from_commissions:
|
||||
if (commission.waiting_move
|
||||
and commission.waiting_move.state != 'posted'):
|
||||
moves.append(commission.waiting_move)
|
||||
if moves:
|
||||
Move.post(moves)
|
||||
|
||||
|
||||
class InvoiceLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice.line'
|
||||
|
||||
def get_move_lines(self):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
|
||||
lines = super().get_move_lines()
|
||||
if self.from_commissions:
|
||||
amounts = defaultdict(int)
|
||||
for commission in self.from_commissions:
|
||||
if not commission.waiting_move:
|
||||
continue
|
||||
for line in commission.waiting_move.lines:
|
||||
amounts[(line.account, line.party)] += (
|
||||
line.debit - line.credit)
|
||||
for (account, party), amount in amounts.items():
|
||||
line = MoveLine()
|
||||
line.debit = -amount if amount < 0 else 0
|
||||
line.credit = amount if amount > 0 else 0
|
||||
line.account = account
|
||||
line.party = party
|
||||
line.amount_second_currency = None
|
||||
lines.append(line)
|
||||
return lines
|
||||
Reference in New Issue
Block a user