if 'account_invoice' in modules:
for year in xrange(2015,2020):
start_date = datetime.date(year, 6, 1)
end_date = start_date + relativedelta(years=1, months=-1, day=31)
fiscalyear = FiscalYear(name='%s-%s' % (year, year+1))
fiscalyear.start_date = start_date
fiscalyear.end_date = end_date
fiscalyear.company = company
fiscalyear.post_move_sequence = post_move_sequence
for attr, name in (('out_invoice_sequence', 'Facturation'),
('in_invoice_sequence', 'Facturation fournisseur'),
('out_az_invoice_sequence', 'Facturation particuliers'),
('out_credit_note_sequence', 'Crédit'),
('in_credit_note_sequence', 'Crédit fournisseur')):
sequence = SequenceStrict(
name='%s-%s' % (start_date.year, name),
code='account.invoice',
company=company)
sequence.padding = 3;
sequence.prefix = '%s-' % start_date.year;
sequence.save()
sequence, = SequenceStrict.find([('name', '=', '%s-%s' % (start_date.year, name))])
setattr(fiscalyear, attr, sequence)
fiscalyear.save()
FiscalYear.create_period([fiscalyear.id], config.context)
Il est possible d'associer une séquence pour chaque période de l'année fiscale.Nous avons créé une séquence différente pour chaque période (actuellement manuellement).Nous n'utilisons pas dans ce cas les placeholders pour être certain de la suite chronologique des numéros dans une période.Nous allons regarder pour ajouter cette notion de le script que vous avez réalisé.Copie d'écran de notre config : https://pasteboard.co/HpQvYjk.png
for year in xrange(2015,2020):
start_date = datetime.date(year, 6, 1)
end_date = start_date + relativedelta(years=1, months=-1, day=31)
fiscalyear = FiscalYear(name='%s-%s' % (year, year+1))
fiscalyear.start_date = start_date
fiscalyear.end_date = end_date
fiscalyear.company = company
fiscalyear.post_move_sequence = post_move_sequence
for attr, name in (('out_invoice_sequence', 'Facturation'),
('in_invoice_sequence', 'Facturation fournisseur'),
('out_credit_note_sequence', 'Crédit'),
('in_credit_note_sequence', 'Crédit fournisseur')):
for rawmonth in xrange(1,13):
month = string.zfill(rawmonth,2)
sequence = SequenceStrict(
name='%s %s-%s-%s' % (name, start_date.year, end_date.year, month),
code='account.invoice',
company=company)
sequence.padding = 3;
# sequence.prefix = '${year}-${month}-';
sequence.prefix = '${year}-%s-' % month;
sequence.save()
sequence, = SequenceStrict.find([('name', '=', '%s %s-%s-%s' % (name, start_date.year, end_date.year, '01'))])
setattr(fiscalyear, attr, sequence)
fiscalyear.save()
FiscalYear.create_period([fiscalyear.id], config.context)
for period in fiscalyear.periods:
for attr, name in (('out_invoice_sequence', 'Facturation'),
('in_invoice_sequence', 'Facturation fournisseur'),
('out_credit_note_sequence', 'Crédit'),
('in_credit_note_sequence', 'Crédit fournisseur')):
sequence, = SequenceStrict.find([('name', '=', '%s %s-%s-%s' % (name, start_date.year, end_date.year, string.zfill(period.start_date.month,2)))])
setattr(period, attr, sequence)
period.save()
L'année, c'était assez facile :
sequence.prefix = '%s-' % start_date.year;
On peut utiliser des "placeholders" dans le prefix/suffix qui sont
remplacés à l'appel de la séquence en utilisant la date.
Les "placeholders" sont décrit sur la vue des séquences comme:
${year}
${month}
${day}
Attention que pour les factures se sera la date de facturation qui sera
utilisée donc ça ne garantie pas une ordre chronologique pour cette
partie.