Calcul de Facturation
Le calcul de facturation vise à automatiser la création de factures à partir des informations commerciales (commandes commerciales, retours clients) et logistiques (expéditions validées).
Il peut être lancé :
automatiquement lors de la validation des expéditions si la méthode de facturation définie sur le client rattaché à l’événement logistique est « 1 » (Facturation / BL expédié automatiquement)
manuellement depuis la liste des factures à valider
manuellement depuis la liste des sociétés comptables
manuellement à partir de la liste des traitements non paramétrés (traitement FAC-CAL) de l’explorateur applicatif « Exploitation »
répétitivement en utilisant un traitement paramétré sur le traitement FAC-CAL
Remarque : Il est possible d’ajouter une ligne de facture manuelle sur une facture calculée, lorsque celle-ci n’est pas validée.
Mécanisme de Calcul
Celui-ci est basé sur une requête de type REB de sous-type FAC ; c’est-à-dire qui utilise au moins une des listes liées aux factures (WfCDFaEn, WfCDFaLi, WfCDFaDe).
Le calcul de facturation doit aller rechercher les informations commerciales (lignes de commandes, quantités, prix…) afin de mettre à jour les listes standards qui décriront le contenu des factures et leur mode de gestion.
Listes standards
Une facture est modélisée par :
une entête qui présente les informations générales de la facture ;
des lignes qui présentent le contenu particulier de la facture ;
un détail pour chaque ligne calculée qui décrit les entités commerciales et logistiques rattachées à la ligne.
WfCDFaEn : Entête de Facture
Variable | Type Var. | Désignation |
CdeFacRef | C | Référence Facture |
CdeFacTyp | C | Type Facture (FM ou autre) |
CdeFacRegMod | C | Mode Règlement |
GesUtilRef | C | Gestionnaire (défaut / 1ère cde rattachée) |
CdeFacDes | C | Désignation Facture |
CliResRef | C | Réseau Client |
CliGenRef | C | Client associé à BL |
CdeNumCom | C | Numéro de Commande (Cas où une seule Cde. par BL) |
CdeFacRegMod | C | Mode Règlement |
CdeFacCom | C | Commentaire Facture |
CdeFacDev | C | Devise Associée |
CdeFacTvaRef | C | Code TVA de la Facture |
CprCR1Ref | C | Référence du Critère Comptable 1 |
CprCR2Ref | C | Référence du Critère Comptable 2 |
CprCR3Ref | C | Référence du Critère Comptable 3 |
CdeFacPriLigHT | DE | Prix Total Ligne HT |
CdeFacPriLigTax | DE | Montant Taxes Lignes |
CdeFacPriLigTTC | DE | Montant TTC Lignes |
CdeFacPriEnt1 | DE | Montant Supplémentaire HT 1 |
CdeFacPriEnt2 | DE | Montant Supplémentaire HT 2 |
CdeFacPriEnt3 | DE | Montant Supplémentaire HT 3 |
CdeFacPriEnt4 | DE | Montant Supplémentaire HT 4 |
CdeFacPriEnt5 | DE | Montant Supplémentaire HT 5 |
CdeFacPriETT1 | DE | Montant Supplémentaire TTC 1 |
CdeFacPriETT2 | DE | Montant Supplémentaire TTC 2 |
CdeFacPriETT3 | DE | Montant Supplémentaire TTC 3 |
CdeFacPriETT4 | DE | Montant Supplémentaire TTC 4 |
CdeFacPriETT5 | DE | Montant Supplémentaire TTC 5 |
CdeFacPriEntHT | DE | Prix Total Facture HT |
CdeFacPriEntTax | DE | Montant Taxes Facture |
CdeFacPriEntTTC | DE | Montant TTC Facture |
CdeFacPriEntEsc | DE | Montant Escompte |
CdeFacPriEntAco | DE | Montant Acompte |
CdeFacPriRefAco | C | Liste des Factures d’Acompte Rattachées |
CdeFacCalDat | DA | Date de Calcul Facture |
CdeFacEdtDat | DA | Date d'Edition Facture |
CdeFacRegDat | DA | Date de Règlement Facture |
CdeFacValSta | L | Indique si Facture Validée ou Non |
CdeFacAutVal | L | Facture Validée Autom. Après Calcul ? |
CdeFacAutEdt | L | Facture Editée Autom. Après Calcul ? |
WfCDFaLi : Ligne de Facture
Variable | Type Var. | Désignation |
CdeFacRef | C | Référence Facture |
CdeFacLig | C | Numéro de Ligne de Facture |
CdeFacLigRef | C | Article Rattaché à Ligne Facture |
CdeFacLigDes | C | Désignation Rattachée à Ligne Facture |
CdeFacLigUnMeQte | C | Unité de Mesure |
CdeFacLigTvaRef | C | Code TVA Associé à Ligne Facture |
CdeFacLigTyp | C | Type de Ligne Cette information peut contenir les valeurs LC (Ligne issue du calcul de facturation) ou LM (Ligne Manuelle). Lors de la création, elle peut être initialisée avec LM pour indiquer que cette ligne prend le comportement d’une ligne créée par la GFD (c’est-à-dire qu’aucune ligne d’expédition ne lui est rattachée). Si cette information n’est pas renseignée dans la requête REB de calcul de facturation, elle prend la valeur LC. |
CptFamRef | C | Famille Comptable |
CptSFaRef | C | Sous-Famille Comptable |
CptCr1Ref | C | Critère 1 Comptable |
CptCr2Ref | C | Critère 2 Comptable |
CptCr3Ref | C | Critère 3 Comptable |
CdeFacLigNbrBL | DE | Nombre de Lignes de BL Rattachées |
CdeFacLigQte | DE | Quantité Associée à Ligne Facture |
CdeFacPriLigTar | DE | Prix Unitaire Tarif Ligne HT |
CdeFacPriLigUn | DE | Prix Unitaire Ligne HT |
CdeFacPriLigHT | DE | Prix Total Ligne HT |
CdeFacPriLigTax | DE | Montant Taxes Ligne |
CdeFacPriLig1 | DE | Montant Supplémentaire HT 1 |
CdeFacPriLig2 | DE | Montant Supplémentaire HT 2 |
CdeFacPriLig3 | DE | Montant Supplémentaire HT 3 |
CdeFacPriLig4 | DE | Montant Supplémentaire HT 4 |
CdeFacPriLig5 | DE | Montant Supplémentaire HT 5 |
CdeFacPriETT1 | DE | Montant Supplémentaire TTC 1 |
CdeFacPriETT2 | DE | Montant Supplémentaire TTC 2 |
CdeFacPriETT3 | DE | Montant Supplémentaire TTC 3 |
CdeFacPriETT4 | DE | Montant Supplémentaire TTC 4 |
CdeFacPriETT5 | DE | Montant Supplémentaire TTC 5 |
CdeFacPriLigTTC | DE | Prix Total Ligne TTC |
WfCDFaDe : Détail Ligne de Facture
Variable | Type Var. | Désignation |
CdeFacRef | C | Référence Facture |
CdeFacLig | C | Numéro de Ligne de Facture |
CdeExpBLRef | C | Référence BL |
CdeExpRef | C | Référence Expédition pour une expédition ou « C » pour une ligne de commande non intégrable ou « R » pour une ligne de retour client. |
CdeNumCom | C | Numéro de Commande (CDPrLi) ou *A (additif) pour une expédition ou numéro de commande commerciale pour une ligne de commande non intégrable ou numéro de retour client |
CdeNumLig | C | Numéro de Ligne de Commande (CDPrLi) ou référence additif pour une expédition ou numéro de ligne de commande commerciale pour une ligne de commande non intégrable ou numéro de ligne de retour client |
CdeFacQteExp | DE | Quantité Rattachée à Ligne de Facture ; soit la quantité expédiée pour une expédition, soit la quantité commandée pour une ligne de commande non intégrable, soit la quantité retournée pour un retour client. |
Règles Diverses
Contexte d’exécution de la requête
La variable « SCR.TypeDeCalcul » contient l’origine de lancement du calcul :
NOR ou vide ou non défini : génération classique par traitement FAC-CAL (pas de contexte particulier)
LIS-BL : facturation automatique depuis la validation des événements d’expéditions (les variables « SCR.CliResRef » et « SCR.CliGenRef » contiennent les informations relatives à l’événement d’expédition à facturer et la variable « SCR.FacLisBL » contient la liste des BLs à facturer pour ce client)
SEL-DIALOG : Sélection des lignes d’expéditions via DIALOG en utilisant la fonction ENR-ACT-ENT (la liste standard WfCDFaDe est pré-initialisée avec les BLs expédiés sélectionnés par DIALOG)
SEL-INTER : Sélection interactive depuis la liste des lignes d’expéditions non facturées (la liste standard WfCDFaDe est pré-initialisée avec les BLs expédiés sélectionnés
Suppression de Facture
Il est possible d'indiquer, dans la requête, la référence des factures que l'on souhaite supprimer avant la génération des nouvelles factures.
Pour cela, pour chaque facture à supprimer, créer WfCDFaEn tel que :
WfCDFaEn.CdeFacTyp = « FS »
WfCDFaEn.CdeFacRef = Référence_Facture_A_Supprimer (doit être une facture non validée)
Lors du traitement des listes standards générées par la requête, pour chaque détail de ligne de facture (WfCDFaDe), si une facture non validée existe déjà pour celui-ci, cette facture est supprimée.
Escompte
Dans la requête de calcul de facturation, si l’escompte est géré sur le HT, il faut calculer le montant de TVA total de la facture en tenant compte de l’escompte :
TVA = Total TVA Lignes + ((Plus-ValuesHT – Escompte) * Taux de TVA)
Acompte
Dans la requête de calcul de facturation, il est possible de renseigner, pour les factures de produits, la liste des factures d’acompte (WfCDFaEn.CdeFacPriRefAco) et le montant d’acompte (WfCDFaEn.CdeFacPriEntAco). En sortie de la requête on vérifie que les factures d’acompte existent et sont de type correct (paramètre général FAC-ACO-SEL) et si le montant d’acompte (WfCDFaEn.CdeFacPriEntAco) n’est pas renseigné, il est initialisé avec le cumul des montants TTC des factures d’acompte.
Type « Facture Manuelle »
Une facture manuelle générée par macro langage (WfCDFaEn.CdeFacTyp = « FM ») ne peut avoir de détail d’événement d’expédition rattaché (WfCDFaDe).
Lignes de Commandes non Intégrables
Il est possible de créer des détails de lignes de facture pour des lignes de commande commerciales non intégrables (portant sur un article ayant comme définition commerciale « 5 : article NON géré »). Pour cela, WfCDFaDe.CdeExpRef doit contenir « C », WfCDFaDe.CdeNumCom doit contenir le numéro de la commande commerciale et WfCDFaDe.CdeNumLig doit contenir le numéro de la ligne de commande commerciale.
Simulation de Facturation
Diapason permet de forcer le fait qu’une ligne de gestion expédiée n’est pas a prendre en compte dans le calcul de facturation, et qu’elle ne doit plus l’être. Exemple ne pas vouloir facturée une ligne de gestion dont le montant est a zéro ou de pas vouloir créer de facture pour des commandes de type SAV…
Dans la requête de calcul de facturation, il faut, pour chaque ligne d’expédition non facturable, créer un enregistrement dans la liste standard WfCDFaDe tel que :
WfCDFaDe.CdeFacRef = « *NF »
Contenant les informations de la ligne d’expédition, à savoir :
WfCDFaDe.CdeExpRef : Evt_Expédition
WfCDFaDe.CdeNumCom : Besoin_de_Gestion
WfCDFaDe.CdeNumLig : Ligne_Besoin_de_Gestion
En sortie de requête de calcul de facturation, les enregistrements de WfCDFaDe tels que WfCDFaDe.CdeFacRef = « *NF » sont traités avant la création des factures.
Pour chaque ligne non facturable trouvée :
le statut de facturation est forcé à « VRAI » ;
la quantité facturée est forcée avec la quantité expédiée ;
les quantités et montants facturés sont mis à jour sur la commande commerciale ;
les montants facturés sont mis à jour pour le client ;
un enregistrement est conservé dans le détail de facturation pour conservé la trace de ce traitement.
Dans les listes présentant le détail de facturation pour une ligne d’expédition, la valeur ‘*NF’ dans le numéro de facture indique que la facturation a été forcée sur cette ligne et la colonne présentant le numéro de BL donne la date à laquelle a été fait ce traitement.
Retour Client
Dans la requête de calcul de facturation, il est possible de créer des détails de lignes de factures pour des lignes de retours clients. Pour cela, WfCDFaDe.CdeExpRef doit contenir « R », WfCDFaDe.CdeNumCom doit contenir le numéro du retour client et WfCDFaDe.CdeNumLig doit contenir le numéro de la ligne du retour client.
Remarque : Toutes les lignes d’un retour client doivent être facturées dans une même facture.
Exemple de requête REB/FAC
Calcul de facture pour toutes les expéditions validées et non facturées (la méthode de facturation des clients doit être « Méthode de Facturation = 2 : Facturation / Calcul de Facturation »).
VLO.NombreFactureCalculees = CLO.0
VLO.CoeffTaxe = CLO.19,6
POUR CHAQUE/SOC DTD CDExLi AVEC DTD CDExLi.CdeExpValSta = Yes ET DTD CDExLi.CdeExpFacSta = NO :
RECH TBD/SOC DTD CDExBL AVEC DTD CDExBL.CdeExpBLRef = DTD CDExLi.CdeExpBLRef :
RECH TBD/SOC DTD CDClient AVEC DTD CDClient.CliResRef = DTD CDExBL.CliResRef
ET DTD CDClient.CliGenRef = DTD CDExBL.CliGenRef :
RECH TBD/SOC DTD CDPrLi AVEC DTD CDPrLi.CdeNumCom = DTD CDExLi.CdeNumCom
ET DTD CDPrLi.CdeNumLig = DTD CDExLi.CdeNumLig :
VLO.NumFac = CLO.""
RECH PREM LST WfCDFaEn AVEC WfCDFaEn.CliResRef = DTD CDExBL.CliResRef
ET WfCDFaEn.CliGenRef = DTD CDExBL.CliGenRef :
VLO.NumFac = WfCDFaEn.CdeFacRef
FIN_BLOC
SI VLO.NumFac = CLO.""
VLO.NombreFactureCalculees = VLO.NombreFactureCalculees + CLO.1
VLO.NumFac = CHAINE( VLO.NombreFactureCalculees , E0/10 )
VLO.DateReg = DATEJOUR( )
VLO.DateReg = CAL-DATE( VLO.DateReg , CLO.30 , + )
CREATION Liste WfCDFaEn :
PRENDRE CdeFacRef = VLO.NumFac
PRENDRE CdeFacDes = CLO."Facture Client"
PRENDRE CliResRef = DTD CDExBL.CliResRef
PRENDRE CliGenRef = DTD CDExBL.CliGenRef
PRENDRE CdeFacCalDat = DATEJOUR( )
PRENDRE CdeFacRegDat = VLO.DateReg
PRENDRE CdeFacDev = DTD CDClient.CliDevPrix
FIN_BLOC
FIN_BLOC
VLO.NumeroLigne = CLO.1
POUR CHAQUE LST WfCDFaLi AVEC WfCDFaLi.CdeFacRef = VLO.NumFac :
VLO.NumeroLigne = VLO.NumeroLigne + CLO.1
FIN_BLOC
CREATION Liste WfCDFaLi :
PRENDRE CdeFacRef = VLO.NumFac
PRENDRE CdeFacLig = CHAINE( VLO.NumeroLigne , E0/3 )
PRENDRE CdeFacLigRef = DTD CDPrLi.CdeLigRefArt
PRENDRE CdeFacLigDes = DTD CDPrLi.CdeLigDesArt
PRENDRE CdeFacLigUnMeQte = DTD CDExLi.CdeExpUnMeQteExp
PRENDRE CdeFacLigNbrBL = CLO.1
PRENDRE CdeFacLigQte = DTD CDExLi.CdeExpQteExp
PRENDRE CdeFacPriLigTar = DTD CDPrLi.CdeLigPrPublic
PRENDRE CdeFacPriLigUn = DTD CDPrLi.CdeLigPrix
PRENDRE CdeFacPriLigHT = DTD CDPrLi.CdeLigPrix * DTD CDExLi.CdeExpQteExp
PRENDRE CdeFacPriLigTax = WfCDFaLi.CdeFacPriLigHT * VLO.CoeffTaxe / CLO.100
PRENDRE WfCDFaLi CdeFacPriLigTTC = WfCDFaLi.CdeFacPriLigHT + WfCDFaLi.CdeFacPriLigTax
FIN_BLOC
CREATION Liste WfCDFaDe :
PRENDRE CdeFacRef = VLO.NumFac
PRENDRE CdeFacLig = CHAINE( VLO.NumeroLigne , E0/3 )
PRENDRE CdeExpRef = DTD CDExLi.CdeExpRef
PRENDRE CdeNumCom = DTD CDExLi.CdeNumCom
PRENDRE CdeNumLig = DTD CDExLi.CdeNumLig
PRENDRE CdeExpBLRef = DTD CDExLi.CdeExpBLRef
PRENDRE CdeFacQteExp = DTD CDExLi.CdeExpQteExp
FIN_BLOC
FIN_BLOC
FIN_BLOC
FIN_BLOC
FIN_BLOC
POUR CHAQUE LST WfCDFaEn :
VLO.MontantTTC = CLO.0
POUR CHAQUE LST WfCDFaLi AVEC WfCDFaLi.CdeFacRef = WfCDFaEn.CdeFacRef :
VLO.MontantTTC = VLO.MontantTTC + WfCDFaLi.CdeFacPriLigTTC
FIN_BLOC
PRENDRE WfCDFaEn CdeFacPriEntTTC = VLO.MontantTTC
FIN_BLOC
Lancement
Par Calcul de Facturation
Cette fonction peut-être lancée par l’action dédiée « Calcul Facturation » disponible à partir :
de la branche applicative « Factures à Valider »
du menu local lancé sur une « Société Comptable »
du « traitement non paramétré » de type FAC-CAL, dans le module « Exploitation ».
d’un job basé sur un « traitement paramétré » de type FAC-CAL, dans le module « Exploitation ». Ce job pourrait être lancé périodiquement.
Sur des Evénements d’Expéditions Validés
Depuis la liste des lignes d’expédition validées non facturées sur les explorateurs applicatifs « Logistique » et « Facturation Client »
Deux actions permettent de générer des factures :
Calcul Facturation
Lancement, après un message de confirmation, du calcul de facture pour la sélection réalisée (ou pour la ligne courante si aucune sélection n’a été faite).
Calcul Facturation (Qté Partielle)
Lancement, après saisie des quantités à facturer dans un tableur, du calcul de facture pour la sélection réalisée (ou pour la ligne courante si aucune sélection n’a été faite)
(Voir documentation Logistique : Détail Evénements)
Validation d’Evénements d’Expédition
Le calcul de facturation par requête REB/FAC peut être lancé automatiquement lors de la validation d’un événement d’expédition.
Cette fonction est activée si la « Méthode de facturation » (SCL.CliFacMet) renseignée sur le client est « 1 » (Facturation / BL Expédié Automatiquement).
Calcul de Facturation par ENR-ACT-ENT
Calcul
Il est possible d’utiliser la fonction DIALOG « ENR-ACT-ENT » pour lancer un calcul de facture pour une liste de lignes d’expédition, pour une liste de lignes de retours clients ou pour une liste de lignes de commandes commerciales non intégrées.
Lancement
Si le calcul de facturation est basé sur une requête utilisant la fonction ENR-ACT-ENT pour générer les factures, le lancement du calcul peut-être effectué à partir de différents outils DIAPASON susceptibles d’utiliser ces requêtes :
en sortie de tableur dynamique (via RCT) ;
au lancement d’un document (via REB)…
(Voir documentation DIALOG : Calcul Facturation Client par ENR-ACT-ENT)