Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ================
- Invoice Scenario
- ================
- Imports::
- >>> import datetime
- >>> from dateutil.relativedelta import relativedelta
- >>> from decimal import Decimal
- >>> from operator import attrgetter
- >>> from proteus import config, Model, Wizard
- >>> today = datetime.date.today()
- Create database::
- >>> config = config.set_trytond()
- >>> config.pool.test = True
- Install account_invoice_history::
- >>> Module = Model.get('ir.module.module')
- >>> account_invoice_module, = Module.find(
- ... [('name', '=', 'account_invoice_history')])
- >>> Module.install([account_invoice_module.id], config.context)
- >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
- Create company::
- >>> Currency = Model.get('currency.currency')
- >>> CurrencyRate = Model.get('currency.currency.rate')
- >>> currencies = Currency.find([('code', '=', 'USD')])
- >>> if not currencies:
- ... currency = Currency(name='US Dollar', symbol=u'$', code='USD',
- ... rounding=Decimal('0.01'), mon_grouping='[]',
- ... mon_decimal_point='.')
- ... currency.save()
- ... CurrencyRate(date=today + relativedelta(month=1, day=1),
- ... rate=Decimal('1.0'), currency=currency).save()
- ... else:
- ... currency, = currencies
- >>> Company = Model.get('company.company')
- >>> Party = Model.get('party.party')
- >>> company_config = Wizard('company.company.config')
- >>> company_config.execute('company')
- >>> company = company_config.form
- >>> party = Party(name='Dunder Mifflin')
- >>> party.save()
- >>> company.party = party
- >>> company.currency = currency
- >>> company_config.execute('add')
- >>> company, = Company.find([])
- Reload the context::
- >>> User = Model.get('res.user')
- >>> config._context = User.get_preferences(True, config.context)
- Create fiscal year::
- >>> FiscalYear = Model.get('account.fiscalyear')
- >>> Sequence = Model.get('ir.sequence')
- >>> SequenceStrict = Model.get('ir.sequence.strict')
- >>> fiscalyear = FiscalYear(name=str(today.year))
- >>> fiscalyear.start_date = today + relativedelta(month=1, day=1)
- >>> fiscalyear.end_date = today + relativedelta(month=12, day=31)
- >>> fiscalyear.company = company
- >>> post_move_seq = Sequence(name=str(today.year), code='account.move',
- ... company=company)
- >>> post_move_seq.save()
- >>> fiscalyear.post_move_sequence = post_move_seq
- >>> invoice_seq = SequenceStrict(name=str(today.year),
- ... code='account.invoice', company=company)
- >>> invoice_seq.save()
- >>> fiscalyear.out_invoice_sequence = invoice_seq
- >>> fiscalyear.in_invoice_sequence = invoice_seq
- >>> fiscalyear.out_credit_note_sequence = invoice_seq
- >>> fiscalyear.in_credit_note_sequence = invoice_seq
- >>> fiscalyear.save()
- >>> FiscalYear.create_period([fiscalyear.id], config.context)
- Create chart of accounts::
- >>> AccountTemplate = Model.get('account.account.template')
- >>> Account = Model.get('account.account')
- >>> account_template, = AccountTemplate.find([('parent', '=', None)])
- >>> create_chart = Wizard('account.create_chart')
- >>> create_chart.execute('account')
- >>> create_chart.form.account_template = account_template
- >>> create_chart.form.company = company
- >>> create_chart.execute('create_account')
- >>> receivable, = Account.find([
- ... ('kind', '=', 'receivable'),
- ... ('company', '=', company.id),
- ... ])
- >>> payable, = Account.find([
- ... ('kind', '=', 'payable'),
- ... ('company', '=', company.id),
- ... ])
- >>> create_chart.form.account_receivable = receivable
- >>> create_chart.form.account_payable = payable
- >>> create_chart.execute('create_properties')
- Create party::
- >>> Party = Model.get('party.party')
- >>> party = Party(name='Party')
- >>> party.addresses[0].street = 'Street'
- >>> party.addresses[0].invoice = True
- >>> party.save()
- Create product::
- >>> ProductUom = Model.get('product.uom')
- >>> unit, = ProductUom.find([('name', '=', 'Unit')])
- >>> ProductTemplate = Model.get('product.template')
- >>> Product = Model.get('product.product')
- >>> product = Product()
- >>> template = ProductTemplate()
- >>> template.name = 'product'
- >>> template.default_uom = unit
- >>> template.type = 'service'
- >>> template.list_price = Decimal('40')
- >>> template.cost_price = Decimal('25')
- >>> template.save()
- >>> product.template = template
- >>> product.save()
- Create payment term::
- >>> PaymentTerm = Model.get('account.invoice.payment_term')
- >>> PaymentTermLine = Model.get('account.invoice.payment_term.line')
- >>> payment_term = PaymentTerm(name='Term')
- >>> payment_term_line = PaymentTermLine(type='percent', days=20,
- ... percentage=Decimal(50))
- >>> payment_term.lines.append(payment_term_line)
- >>> payment_term_line = PaymentTermLine(type='remainder', days=40)
- >>> payment_term.lines.append(payment_term_line)
- >>> payment_term.save()
- Create invoice::
- >>> Invoice = Model.get('account.invoice')
- >>> invoice = Invoice()
- >>> invoice.party = party
- >>> invoice.payment_term = payment_term
- >>> import interlude; interlude.interact(locals())
- >>> invoice.save()
- >>> Invoice.post([invoice.id], config.context)
- >>> invoice.reload()
- >>> invoice.state
- u'paid'
- Check invoice party and address::
- >>> invoice.party == party
- True
- >>> invoice.party.name
- u'Party'
- >>> invoice.invoice_address == party.addresses[0]
- True
- >>> invoice.invoice_address.street
- u'Street'
- Change party and address::
- >>> party = Party(party.id)
- >>> party.name = 'Party changed'
- >>> party.addresses[0].street = 'Street changed'
- >>> party.addresses[0].save()
- >>> party.save()
- Check new values::
- >>> party = Party(party.id)
- >>> party.name
- u'Party changed'
- >>> party.addresses[0].street
- u'Street changed'
- Check historized party and address on invoice::
- >>> invoice = Invoice(invoice.id)
- >>> invoice.party.name
- u'Party changed' # WRONG! should be u'Party'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement