Cette fonction permet d'intégrer facilement un document d'achat ou de vente (devis, facture, etc) dans Gestan depuis une extension, en appelant une fonction spécifique.
Les pièces produites seront à l'état brouillon.
<Résultat> = gf_PIECE_Générer(<Type de pièce>, <Structure contenant les données >, <libellé retour>, "version")
Avec :
C'est une structure (type de variable Windev), contenant les données utiles à la génération de la pièce, les options de création, et un tableau de Structures contenant les données utiles à la génération des lignes de pièce.
Prenons un exemple :
LibERR est une chaîne
// Structure décrivant une ligne de facture
wLigne est une Structure
CD_PRODUIT est une chaîne
QUANTITE est un réel
PU_VENTE_HT est un monétaire
LIB_LFACT est une chaîne
TX_TVA_VENTE est un réel
TX_REMISE_LIGNE est un réel
UNITE_VENTE est une chaîne
IDFAMPROD est un entier
LIB_TITREFACT est une chaîne
LIB_LOTFACT est une chaîne
NUMORDRE est un entier
FIN
// Structure décrivant une facture
wFacture est une Structure
// Données de la facture
IDCONTACT est un entier sur 8
IDCONTACT_LIVR est un entier sur 8
REFEXTERNECLT est une chaîne
NOMFAMILLE est une chaîne
PRENOM est une chaîne
RAISON_SOCIALE est une chaîne
ADRESSEL1 est une chaîne
ADRESSEL2 est une chaîne
CDREGION est une chaîne
CPOSTAL est une chaîne
VILLE est une chaîne
CDPAYS est une chaîne
EMAIL est une chaîne
IDCIVILITE est un entier sur 8
DT_FACTURE est une chaîne
IDDELPMT est un entier sur 8
ID2_MODEPAIEMENT est un entier sur 8
NATURE est une chaîne
VREF est une chaîne
REFEXTERNEFACT est une chaîne
TX_REMISE_GLOB est un réel
COMMENTAIRE est une chaîne
TRIERLIGNE est un entier // A alimenter si on veut un tri conforme à la pièce de départ quand on génère une pièce à partir d'une autre
IDPROJET est un entier sur 8
IDTACHE est un entier sur 8
DOCUMENTLIE est un tableau de 7 chaînes
TABLOLIGNE est un tableau <agrandissement=1> de wLigne
// Option de création
TYPEREF est un entier // 0 (défaut) : on lit sur IDCONTACT; 1 : on lit sur REFEXTERNECLT
CLTPRO est un entier // 1 si c'est un client privé, 2 si c'est un client pro (dans le cas ou l'ID client n'est pas renseigné et qu'on va le créer)
USRSUIVI est un booléen // faux : la pièce sera suivie par le créateur; Vrai : la pièce sera suivie par le responsable du contact
BFORCERPRIX est un booléen // Vrai si on lit exclusivement les prix dans le catalogue
PRODUITEXIST est un booléen // Faux : un produit inexistant sera hors catalogue. Vrai : un produit inexistant sera rejeté
FIN
wMaFacture est une wFacture
wTblLigne est un tableau <agrandissement=1> de wLigne
wMaLigne est une wLigne
// Alimentation des zones des lignes de facture
VariableRAZ(wMaLigne)
wMaLigne.CD_PRODUIT = "SCOLTC4"
wMaLigne.QUANTITE = 1
wMaLigne.TX_REMISE_LIGNE = 12
wTblLigne[1] = wMaLigne
VariableRAZ(wMaLigne)
wMaLigne.CD_PRODUIT = "SCOLTC3"
wMaLigne.QUANTITE = 5
wMaLigne.TX_REMISE_LIGNE= 0
wTblLigne[2] = wMaLigne
// Alimentation des zones de la facture
wMaFacture.IDCONTACT = 12
wMaFacture.TX_REMISE_GLOB = 8
wMaFacture.DOCUMENTLIE[1] = "C:\Facturation\Mon document.docx"
wMaFacture.DOCUMENTLIE[2] = "C:\Facturation\Mon tableur.xlsx"
wMaFacture.TABLOLIGNE = wTblLigne
SI gf_PIECE_Générer("FACTURE", wMaFacture , LibERR, "1.4") ALORS Info("OK, la pièce a été générée.") SINON Erreur(LibERR)
Regardons dans le détail :
Cet exemple va créer une facture pour le contact ID n°12, avec une ligne de produit code SCOLTC4, quantité 1, remise 12%, une seconde ligne de produit SCOLTC3, quantité 5, sans remise. Une remise globale de 8% sera appliquée à la facture.
Magique, non ?!
Si ce paramètre est à faux (valeur par défaut), le prix de vente et la TVA seront lus dans le catalogue produit.
Dans le cas inverse, ils devront être transmis dans wLigne.
Si vous utilisez BFORCERPRIX à vrai, il ne faut pas oublier de renseigner le taux de TVA à appliquer.
Par exemple, pour calculer le taux de TVA client :
TX_TVA_Client est un réel // Calcul du taux de TVA client SELON CONTACT.REGIME_TVACLI CAS 2,4,5,6 : TX_TVA_Client =0 // 2=Exonéré, 4=ImportExport 5=Suspension 6=UE 7=Autre cas CAS 3 // Autres taux défini TX_TVA_Client =CONTACT.TX_TVACLI AUTRE CAS // 1 Normal, et 0 ou -1 (non défini=>Normal) et 8 (exo supp) HLitRecherche(TAUXTVA,DEF,1) TX_TVA_Client =TAUXTVA.TX_TVA FIN
Quand vous générez une série de pièces à partir d'une sélection de pièces (par exemple, vous voulez générer 5 factures à partir de 5 devis), le tableau des lignes de pièces varie en nombre de lignes, étant agrandi dynamiquement.
Si votre première pièce a 3 lignes, et la suivante 4, tout va bien se passer.
En revanche, dans le cas contraire, une première pièce de 4 lignes et une suivante de 3, vous aller adresser à la procédure de création de pièces un tableau de lignes avec 4 lignes, dont une vide, qui sera refusée.
Pour ce faire, utilisez
TableauSupprimeTout(wTblLigne)
entre deux créations, ce qui supprimera le tableau (par opposition à VariableRAZ, qui ne fait que le remette à zéro).
En création d'une facture ex nihilo, vous pouvez ne pas l'alimenter, il sera alimenté automatiquement dans l'ordre des insertions dans le fichier des lignes de facture.
En revanche, quand vous créez une pièce à partir d'une autre pièce (par ex une facture en titre/lot depuis un devis en titre/lot), il faut les recopier, pour retrouver le bon ordre des titres/lots dans la pièces générée.
Depuis le 22/4/20, cette fonction demande un n° de version dans l'appel, pour que les structures qui lui sont envoyées soient cohérentes.
Attention ! Si votre extension embarque une copie de la fonction gf_PIECE_Générer d'une ancienne version, c'est cette copie qui va être appelée par l'extension, et non pas la fonction gf_PIECE_Générer “core”. Aucune erreur ne sera donc détectée !
Il faut donc :
| Version | Date | Observations | Version Gestan |
|---|---|---|---|
| 1.4 | 01/01/25 | Adaptation pour Gestan A1 | A1.00.00 |
| 1.2 | 19/03/21 | Ajout de la gestion des DEEE, et gestion de la recopie du numéro d'ordre de tri des lignes. | 15.23.01 |
| 1.1 | 09/01/21 | Ajout de la gestion des titres/lot + option de recopie du mode de tri des lignes. | 15.19.06 |
| 1.0 | 22/04/20 | Ajout de la gestion de version + gestion de REFEXTFACT | |
| <N/A> | 02/02/19 | Version initiale | |
WARNING A renseigner obligatoirement par les auteurs concernés, pour information de mise à jour.
| Extension | Auteur |
|---|---|
| GESTAN_INTEROR | ICS |
| PLUGIN_LOADPIECE | ICS |
| GESTAN_EASYVRP | ICS |
| GESTAN_WORDPRESS | LCP |
| GESTAN_WOOCOMMERCE | LCP |
| GESTAN_FACTURETTE | LCP |
| GESTAN_DATASYNC | CATS |
| GESTAN_ECOMMERCE | CATS |
Autres articles “Développement”