Numérotation de facture conditionelle

  • Posts: 507
  • Thank you received: 36
  • Hikaserial Subscription Hikashop Business
6 hours 4 minutes ago #370295

-- HikaShop version -- : 6.0.0
-- Joomla version -- : 5.3.1
-- PHP version -- : 8.3.16

Bonjour,

J'ai besoin, dans certains cas, de ne pas incrémenter la numérotation de facture même si la commande est confirmée.

Pouvez vous m'indiquer la meilleure piste svp :
1. Remettre order_invoice_id à 0 après la validation et vider order_invoice_number pour que la suivante reprenne sans trou de numérotation, risques de bugs selon la facon dont est généré l'id ? (MAX(invoice_id)+1 est t'il utilisé ?)
2. Dissocier order_invoice_id et order_invoice_number dans onBeforeInvoiceNumberGenerate pour ne me servir que de order_invoice_number dans les documents
3. Une meilleure solution ?

Merci d'avance

Last edit: 6 hours 1 minute ago by Minie.

Please Log in or Create an account to join the conversation.

  • Posts: 85044
  • Thank you received: 13867
  • MODERATOR
1 hour 41 minutes ago #370300

Bonjour,

Pour vous conseiller la meilleure solution, il faudrait que vous m'en disiez plus sur la situation. Quel est le but ? Quelle condition voulez-vous appliquer ?
MAX(invoice_id)+1 est en effet utilisé, mais l'option "invoice reset frequency" permet de ne prendre en compte que les order_invoice_id à partir d'un certain moment.
onBeforeInvoiceNumberGenerate est en effet utilisable.
onBeforeOrderUpdate est également utilisable.

Please Log in or Create an account to join the conversation.

  • Posts: 507
  • Thank you received: 36
  • Hikaserial Subscription Hikashop Business
58 minutes ago #370305

Merci pour votre retour.

Contexte précis :
Sur notre marketplace, une commande peut contenir des produits de deux types de producteurs (manufacturer chacun attaché à un warehouse) :
1. Producteurs “warehouse = 1” : les produits sont facturés par la marketplace (facture client unique).
2. Producteurs “warehouse ≠ 1” : chaque producteur doit émettre sa propre facture client pour ses produits. (géré par mon code pas de souci la dessus)

Cas à gérer :
1. Commande 100 % warehouse = 1
→ 1 facture client marketplace, numérotation normale native
2. Commande 100 % warehouse ≠ 1
→ Aucune facture marketplace ne doit être créée
→ uniquement des factures clients producteur gérées par mon code sans toucher au champ invoice_id ou invoice number
3. Commande mixte (warehouse = 1 + warehouse ≠ 1)
→ 1 facture client marketplace, comportement natif hikashop
→ + factures clients producteur pour les produits non-warehouse (gérées par mon code)

Problème :
Dans le cas 2, la commande est confirmée mais ne doit pas consommer de numéro de facture marketplace, afin d’éviter des trous dans la numérotation légale de la marketplace.

Constat :
- onBeforeInvoiceNumberGenerate permet bien de remplacer le numéro, mais l’order_invoice_id est quand même généré (MAX+1).
- Modifier order_invoice_id a posteriori fonctionne en test, mais semble risqué car c’est un identifiant interne qui pourrait être appelé ailleurs par hikashop ?

Question :
Quelle est selon vous la meilleure approche propre et supportable pour :
- empêcher la consommation d’un numéro de facture marketplace dans le cas 2
- tout en conservant une numérotation continue pour les factures marketplace,
- sans risquer d’effets de bord internes ?

Merci d’avance.

Please Log in or Create an account to join the conversation.

Time to create page: 0.040 seconds
Powered by Kunena Forum