Bonjour,
J’ai un problème avec l’exécution de la tâche cron « Génération des factures récurrentes (ventes) » (createRecurringInvoices).
- Version de Dolibarr 16.0.4
- PHP 7.4.33
- MariaDB 10.4 (MySQL or MariaDB 5.5.5-10.4.25-MariaDB-1:10.4.25+maria~stretch-log)
Dans certains cas, pour lesquels je n’ai pas encore réussi à identifier la raison - c’est pourquoi je vous sollicite, la facture n’est pas créée dans la base de données, mais Dolibarr retourne un identifiant, p.ex 231
. Si elle est créée, elle est supprimée par la suite, mais pas de trace dans les logs donc peu probable (n’est ce pas ?).
Pas de retour d’erreur, le processus automatique prévu par Dolibarr continue… Les lignes de factures sont insérées, ainsi que les champs personnalisés (toujours avec l’id 231), puis la facture est validée (c’est ce qui est prévu par la facture récurrente), la référence définie (ex. PAT-24-000168), et le document PDF créé. Le document est bien à sa place dans les dossiers documents (PAT-24-000168.pdf).
La tâche est marquée comme exécutée, indique que les factures ont été créées, même celles qui manquent, donc cela passe inaperçu, par exemple (cf. log plus loin) j’ai bien :
Facture PAT-24-000168 généré depuis la facture modèle récurrente Cotisation de XXX (664)
Le site utilise le module SwissBanking. Lorsqu’il est activé, la tâche s’interrompt (par Constraint
NotBlank
de Symfony
utilisé par le module). Le module essaie certainement de récupérer la facture dans la DB par son ID et ne la trouve pas. Je vais prévenir les développeurs aussi de ce problème d’exception en cas de tâche cron. Mais dans ce cas, c’est l’interruption répétée de la tâche qui m’a fait réaliser que certaines factures n’étaient pas générées.
Est-ce que vous auriez une piste pour comprendre la raison de cette non création ?
Voici 5 lignes du log d’une instance de tests :
2024-03-07 09:14:31 DEBUG MonAdresseIP sql=UPDATE aeyo_facture_rec SET date_last_gen = '2024-03-07 09:14:31', fk_user_modif = 1 WHERE rowid = 120
2024-03-07 09:14:31 DEBUG MonAdresseIP FactureRec::setNextDate
2024-03-07 09:14:31 DEBUG MonAdresseIP sql=UPDATE aeyo_facture_rec SET date_when = '2025-02-06 00:00:00', nb_gen_done = nb_gen_done + 1 WHERE rowid = 120
2024-03-07 09:14:31 DEBUG MonAdresseIP sql=INSERT INTO aeyo_facture ( ref, entity, ref_ext, type, fk_soc, datec, remise_absolue, remise_percent, datef, date_pointoftax, note_private, note_public, ref_client, ref_int, fk_account, module_source, pos_source, fk_fac_rec_source, fk_facture_source, fk_user_author, fk_projet, fk_cond_reglement, fk_mode_reglement, date_lim_reglement, model_pdf, situation_cycle_ref, situation_counter, situation_final, fk_incoterms, location_incoterms, fk_multicurrency, multicurrency_code, multicurrency_tx, retained_warranty, retained_warranty_date_limit, retained_warranty_fk_cond_reglement) VALUES ('(PROV)', 1, null, '0', 664, '2024-03-07 09:14:31', NULL, NULL, '2024-02-06 00:00:00', null, 'Généré depuis la facture modèle récurrente Cotisation de XXX (664)', null, null, null, NULL, null, null, '120', null, 1, null, 2, 0, '2024-03-07 00:00:00', 'cotisations', null, null, 0, 0, '', 0, 'CHF', 1, 0, NULL, 0)
2024-03-07 09:14:31 DEBUG MonAdresseIP sql=UPDATE aeyo_facture SET ref='(PROV231)' WHERE rowid=231
J’ai remplacé dans la note privée le nom du tiers par XXX mais je confirme qu’il ne contient aucun caractère spécial.
Merci d’avance si vous avez des idées !
Belle journée