feat: Add Populate Scripts
This commit is contained in:
119
demo/populate_scripts/account.py
Normal file
119
demo/populate_scripts/account.py
Normal file
@@ -0,0 +1,119 @@
|
||||
# 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 datetime as dt
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from proteus import Model, Wizard
|
||||
from proteus import config as pconfig
|
||||
|
||||
|
||||
import company
|
||||
|
||||
import json
|
||||
|
||||
|
||||
def set_config(database, config_file):
|
||||
return pconfig.set_trytond(database, config_file=config_file)
|
||||
|
||||
|
||||
def setup(config, modules, company):
|
||||
AccountTemplate = Model.get('account.account.template')
|
||||
Account = Model.get('account.account')
|
||||
FiscalYear = Model.get('account.fiscalyear')
|
||||
SequenceStrict = Model.get('ir.sequence.strict')
|
||||
SequenceType = Model.get('ir.sequence.type')
|
||||
Party = Model.get('party.party')
|
||||
WriteOff = Model.get('account.move.reconcile.write_off')
|
||||
Journal = Model.get('account.journal')
|
||||
|
||||
root_template, = AccountTemplate.find([
|
||||
('parent', '=', None),
|
||||
('name', '=', 'Universal Chart of Accounts'),
|
||||
])
|
||||
create_chart_account = Wizard('account.create_chart')
|
||||
create_chart_account.execute('account')
|
||||
create_chart_account.form.account_template = root_template
|
||||
create_chart_account.form.company = company
|
||||
create_chart_account.execute('create_account')
|
||||
|
||||
receivable, = Account.find([
|
||||
('company', '=', company.id),
|
||||
('code', '=', '1.2.1'),
|
||||
])
|
||||
payable, = Account.find([
|
||||
('company', '=', company.id),
|
||||
('code', '=', '2.1.1'),
|
||||
])
|
||||
|
||||
create_chart_account.form.account_receivable = receivable
|
||||
create_chart_account.form.account_payable = payable
|
||||
create_chart_account.execute('create_properties')
|
||||
|
||||
# Set account for parties created without company
|
||||
parties = Party.find([])
|
||||
for party in parties:
|
||||
party.account_receivable = receivable
|
||||
party.account_payable = payable
|
||||
Party.save(parties)
|
||||
|
||||
move_sequence_type, = SequenceType.find(
|
||||
[('name', '=', "Account Move")], limit=1)
|
||||
invoice_sequence_type, = SequenceType.find([
|
||||
('name', '=', "Invoice"),
|
||||
], limit=1)
|
||||
today = dt.date.today()
|
||||
for start_date in (
|
||||
today + relativedelta(month=1, day=1, years=-1),
|
||||
today + relativedelta(month=1, day=1),
|
||||
today + relativedelta(month=1, day=1, years=1)):
|
||||
fiscalyear = FiscalYear(name='%s' % start_date.year)
|
||||
fiscalyear.start_date = start_date
|
||||
fiscalyear.end_date = start_date + relativedelta(month=12, day=31)
|
||||
fiscalyear.company = company
|
||||
move_sequence = SequenceStrict(
|
||||
name='%s' % start_date.year,
|
||||
sequence_type=move_sequence_type,
|
||||
company=company)
|
||||
move_sequence.save()
|
||||
fiscalyear.move_sequence = move_sequence
|
||||
invoice_sequence, = fiscalyear.invoice_sequences
|
||||
if 'account_invoice' in modules:
|
||||
for attr, name in (('out_invoice_sequence', 'Invoice'),
|
||||
('in_invoice_sequence', 'Supplier Invoice'),
|
||||
('out_credit_note_sequence', 'Credit Note'),
|
||||
('in_credit_note_sequence', 'Supplier Credit Note')):
|
||||
sequence = SequenceStrict(
|
||||
name='%s %s' % (name, start_date.year),
|
||||
sequence_type=invoice_sequence_type,
|
||||
company=company)
|
||||
sequence.save()
|
||||
setattr(invoice_sequence, attr, sequence)
|
||||
fiscalyear.save()
|
||||
fiscalyear.click('create_period')
|
||||
|
||||
expense, = Account.find([
|
||||
('company', '=', company.id),
|
||||
('code', '=', '6.2.1'),
|
||||
], limit=1)
|
||||
write_off = WriteOff()
|
||||
write_off.name = "Currency Exchange"
|
||||
write_off.journal, = Journal.find(
|
||||
[('code', '=', 'EXC'), ('type', '=', 'write-off')], limit=1)
|
||||
write_off.credit_account = expense
|
||||
write_off.debit_account = expense
|
||||
write_off.save()
|
||||
|
||||
|
||||
def run(config, modules, company_):
|
||||
setup(config, modules, company_)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
with open('../data/config.json') as file:
|
||||
config_tryton = json.load(file)
|
||||
config = set_config("tryton", "/root/app/.dev/trytond.cfg")
|
||||
|
||||
company_, = company.get(config_tryton)
|
||||
|
||||
run(config, ["account_invoice"], company_)
|
||||
Reference in New Issue
Block a user