Files
tryton/demo/account_statement.py

60 lines
1.8 KiB
Python

# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import random
from decimal import Decimal
from dateutil.relativedelta import relativedelta
from proteus import Model
def setup(config, modules, company):
Journal = Model.get('account.statement.journal')
Statement = Model.get('account.statement')
AccountJournal = Model.get('account.journal')
Account = Model.get('account.account')
Invoice = Model.get('account.invoice')
cash, = Account.find([
('company', '=', company.id),
('code', '=', '1.1.1'),
])
account_journal = AccountJournal(name='Bank', type='statement')
account_journal.save()
journal = Journal(name='Bank',
journal=account_journal,
account=cash,
validation='balance')
journal.save()
invoices = Invoice.find([
('state', '=', 'posted'),
])
invoices = random.sample(invoices, len(invoices) * 2 // 3)
total_amount = Decimal(0)
statement = Statement(name='001',
journal=journal,
start_balance=Decimal(0))
for i, invoice in enumerate(invoices):
if not invoice.amount_to_pay:
continue
line = statement.lines.new()
line.number = str(i)
line.date = invoice.invoice_date + relativedelta(
days=random.randint(1, 20))
amount = invoice.amount_to_pay
if invoice.type in ('in_invoice', 'out_credit_note'):
amount = - amount
line.amount = amount
line.party = invoice.party
if random.random() < 2. / 3.:
line.related_to = invoice
total_amount += line.amount
statement.end_balance = total_amount
statement.click('validate_statement')