Séquençage mensuel de la facturation

26 views
Skip to first unread message

Goulven Guillard

unread,
Jun 14, 2018, 4:07:03 AM6/14/18
to tryton-fr
Bonjour,

Je cherche à préfixer les factures par l'année et le mois, en initialisant la DB avec proteus. L'année, c'était assez facile :

   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)



Mais je sèche sur le mois. J'ai lu qu'on pouvait créer les séquences par période mais je n'ai pas trouvé d'exemple. Quelle est la meilleure façon de le faire ?

PS : Désolé si ça fait doublon, j'ai déjà posté cette discussion il y a quelques jours mais elle n'apparaît pas.

Cédric Krier

unread,
Jun 14, 2018, 6:30:05 AM6/14/18
to tryton-fr
Bonjour,
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.

--
Cédric Krier - B2CK SPRL
Email/Jabber: cedric...@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

Thierry Bruyere

unread,
Jun 14, 2018, 7:51:16 AM6/14/18
to tryton-fr
Bonjour,

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

Goulven Guillard

unread,
Jun 15, 2018, 3:46:26 AM6/15/18
to tryton-fr
Le jeudi 14 juin 2018 13:51:16 UTC+2, Thierry Bruyere a écrit :
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

Merci, grâce à ces éléments j'ai pu obtenir quelque chose qui peut probablement être nettoyé, mais qui fonctionne :

       
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()



Goulven Guillard

unread,
Jun 15, 2018, 3:46:26 AM6/15/18
to tryton-fr
Le jeudi 14 juin 2018 10:07:03 UTC+2, Goulven Guillard a écrit :
L'année, c'était assez facile :

                sequence.prefix = '%s-' % start_date.year;


Attention à qui voudrait s'inspirer du code de mon premier message, cela ne fonctionne que si l'année fiscale correspond à l'année civile (ce qui n'est pas le cas ici, donc on se retrouve en 2018 avec des factures préfixées 2017…).

Goulven Guillard

unread,
Jun 15, 2018, 3:46:26 AM6/15/18
to tryton-fr
Le jeudi 14 juin 2018 12:30:05 UTC+2, Cédric Krier a écrit :
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.

Merci, je ne pensais pas que cela serait aussi simple. Cependant cette solution ne permet pas de réinitialiser la séquence chaque mois, si ?

Cédric Krier

unread,
Jun 15, 2018, 3:55:06 AM6/15/18
to tryton-fr
Non, pour ça il faut configurer les séquences par période et avoir une
période par mois.
Reply all
Reply to author
Forward
0 new messages