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