Salut,
Cela n’est pas particulièrement évident …
En fait, si tu crée l’événement dans le futur, puis que tu changes la date dans le passé … tu ne pourras plus réserver.
Si tu crée l’événement dans le futur, que tu crée la réservation puis que tu changes la date dans le passé … la facture aura déjà été créée et le changement de date ne servira à rien. Même si tu régénères les factures, ça ne changera pas les libellés.
Ta seule solution serait donc de créer un événement, faire une réservation dessus, modifier la réservation et l’élément de facture dans la base de données puis régénérer la facture PDF concerné. C’est possible mais honnêtement ce n’est pas simple et il y a des effets de bord probables. Si tu comptes faire ça souvent, il vaudrait mieux envisager de faire les développements nécessaires pour, par exemple, permettre la génération de facture « custom ».
En attendant, voilà la marche à suivre, une fois la facture générée à la mauvaise date (dans le futur) :
Attention, ceci n’est valable que pour des factures à 1 seul élément (pas de factures à plusieurs créneaux ou de factures abonnement+réservation)
En premier lieu récupérer l’identifiant DB de la facture concernée (Admin / Gérer les factures / Télécharger la facture), l’ID étant visible ici :
Puis se connecter à la console rails pour pouvoir modifier la base de données :
docker exec -it fabmanager_fabmanager_1 bash
bundle
rails c
Retrouver la ligne de la facture concernée et modifier son libellé :
# remplacer XXX par l'ID facture (4613 dans l'exemple ci-dessus)
i = Invoice.find(XXX).invoice_items[0]
# la ligne suivante affichera le libellé actuel de la ligne de facture :
i.description
# pour l'écraser :
i.description = "Bataille de Normandie - mardi 6 juin 1944"
i.save!
Retrouver la réservation associée et modifier sa date :
# remplacer XXX par l'ID facture (4613 dans l'exemple ci-dessus)
s = Invoice.find(XXX).invoiced.slots[0]
# les paramètres attendu sont dans l'ordre suivant : année, mois, jour, heure, minutes, secondes.
s.start_at = Time.new(1944, 6, 6, 6, 30, 00)
s.end_at = Time.new(1944, 6, 6, 15, 00, 00)
s.save!
Enfin régénérer la facture concernée :
# remplacer XXX par l'ID facture (4613 dans l'exemple ci-dessus)
Invoice.find(XXX).regenerate_invoice_pdf
Sur la nouvelle facture, les éléments suivants auront été modifiés :