Ce point d’entrée concerne le calcul de la marge dans les ventes.
Il permet d'ajouter un coût supplémentaire au prix de revient calculé par X3 avant le calcul de la marge.
Il est appelé dans chaque traitement effectuant un calcul de marge.
. Il n'y a pas de transaction en cours lorsque le point d’entrée est appelé depuis la saisie d’une ligne (devis, commande, livraison, facture, avoir).
. Il y a une transaction en cours lorsque le point d’entrée est appelé depuis :
. Le bouton livraison depuis la gestion commande, le bouton validation depuis la gestion livraison
. Les fonctions livraison automatique des commandes, validation automatique des livraisons
. Le bouton facture depuis la gestion commande, le bouton validation depuis la gestion facture
. Les fonctions facturation automatique des commandes, validation automatique des factures.
. Il y a une transaction en cours lorsque le point d’entrée est appelé depuis la gestion des contrats.
. Il y a une transaction en cours lorsque le point d’entrée est appelé depuis la création d'une ligne d'avoir avec mouvement de stock.
Il n'y a pas de fichier trace ouvert.
Il y a un fichier trace ouvert lorsque l’on est dans les fonctions de livraison ou facturation automatique des commandes, validation automatique des livraisons ou des factures.
Une variable globale ‘GCALPFM’ permet d’identifier ces différents cas d’appels.
GCALPFM = 0 Saisie ligne devis, commande, livraison, facture ou avoir
GCALPFM = 1 Bouton ‘livraison’ ou fonction ‘livraison automatique’
GCALPFM = 2 Bouton ‘validation livraison’ ou fonction ‘validation des livraisons’
GCALPFM = 3 Bouton ‘facture’ (depuis une commande) ou fonction ‘facturation automatique des commandes ‘
GCALPFM = 4 Bouton ‘validation facture’ ou fonction ‘validation des factures’
GCALPFM = 5 Saisie des contrats
GCALPFM = 6 Création d'une ligne d'avoir avec mouvement de stock
Il pourra donc être nécessaire de tester cette variable pour utiliser le bon contexte.
Ce point d’entrée est appelé :
. Dans le sous-programme de calcul de la marge ( GCALPFM=0 )
Ce sous-programme est un sous-programme commun à toutes les fonctions de vente. Il est appelé à chaque saisie d'une ligne (devis, commande, livraison, facture, avoir), chaque fois qu'il est nécessaire de recalculer la marge :
· Après saisie de la quantité
On effectue la recherche tarif dont on récupère le prix brut. On calcule ensuite le prix net et donc la marge.
· Après modification du prix brut ou d'une colonne frais/remise. Une telle modification engendre un recalcul du prix net et par conséquent un recalcul de la marge.
· Après validation de la ligne
La classe écran liée à l'OBJet traité est chargée ([M:SQH], [M:SOH], [M:SDH], [M:SIH]). On se trouve à l'intérieur du sous-programme CALPFM.
Les variables suivantes sont les variables passées en paramètre du sous-programme :
· NLIG : Indice de la ligne dans le tableau.
· PRI : Prix net de la ligne
· VAT : Tableau des 3 codes taxes de la ligne (VAT(0), VAT(1), VAT(2))
· PRITYP : Type de prix du document
· SIT : Site de stock
· LITM : Référence article
· CHGTYP : Type de cours
· DAT : Date du document
· CUR : Devise du document
· COEF : Coefficient de conversion unité de cde/unité de stock de la ligne
· INICPRPRI : Flag init du prix de revient (0=Pas d'init,1=Init sans raz,2=Init avec raz)
· XSTOMGTCOD : Flag mise à jour des stock
Les variables suivantes sont des variables de travail calculées par le sous-pro :
· PHTNET : Prix net servant au calcul de la marge (prix HT)
· WQTY : Quantité en unité de stock
· COUTHT : Prix de revient calculé
Les variables suivantes sont les variables calculées et renvoyées par le sous-pro :
· XPFM : Marge
· XCPRPRI : Prix de revient
. Lors de la livraison d’une commande par bouton ou par la fonction de livraison automatique ( GCALPFM=1 )
Le recalcul de la marge s’effectue lors de l’alimentation de la ligne détail livraison à partir de la ligne détail commande au moment de la création d’une ligne de livraison. On se situe juste avant l’écriture de la ligne détail livraison.
Les buffers [F :SOH], [F :SOQ], [F :SOP] sont chargés avec la commande à livrer. [F :SDH], [F :SDD] sont chargés avec la livraison en cours de création.
La variable COUTHT contient le prix de revient calculé.
. Lors de la validation d’une livraison par bouton ou par la fonction validation automatique des livraisons ( GCALPFM=2 )
Le recalcul de la marge s’effectue pour les articles gérés en stock, avant la mise à jour des stocks.
Les buffers [F :SDH], [F :SDD] sont chargés. Les buffers [F :ITM], [F :ITS] sont également chargés.
La variable COUTHT contient le prix de revient calculé.
. Lors de la facturation d’une commande par bouton ou par la fonction de facturation automatique des commandes ( GCALPFM=3 )
Le calcul de la marge s’effectue lors de l’alimentation de la ligne détail facture à partir de la ligne détail commande au moment de la création d’une ligne de facture. On se situe juste avant l’écriture de la ligne détail livraison.
Les buffers [F :SOH], [F :SOP], [F :SOQ] sont chargés avec la commande à facturer. [F :SIH], [F :SIV], [F :SID] sont chargés avec la facture en cours de création.
La variable COUTHT contient le prix de revient calculé.
. Lors de la validation d’une facture par bouton ou par la fonction validation automatique des factures ( GCALPFM=4 )
Le recalcul de la marge s’effectue pour les factures de commandes, pour les articles gérés en stock, et ceci avant la mise à jour des stocks.
Les buffers [F :SIH], [F :SIV], [F :SDD] sont chargés. Les buffers [F :ITM], [F :ITS] sont également chargés.
La variable COUTHT contient le prix de revient calculé.
. Dans la gestion des contrats (GCALPFM=5)
Le recalcul de la marge s’effectue lors de la modification d’un contrat si le régime de taxe a été modifié. En effet, il est nécessaire dans ce cas, pour chaque ligne article, de refaire la recherche des codes taxes. Si des lignes de prix ont été saisies pour cette ligne article, il faut également recalculer les prix HT et TTC et la marge.
Ce traitement s’effectue lors de l’enregistrement de la modification, dans la transaction de mise à jour du contrat, au niveau de l’action AVANT_MODFIC.
Les buffers [F :SOH], [F :SOC], [F :SOP] sont chargés avec le contrat, la ligne article et la ligne de prix. La classe écran [M:SOR1] est également chargée avec le contrat.
La variable COUTHT contient le prix de revient calculé.
. Lors de création d'une ligne d'avoir avec mouvement de stock pour un article dont la base de calcul de marge est le prix moyen lot ( GCALPFM=6 )
Le calcul de la marge est réeffectué lors de la création de la ligne. A ce niveau, le contexte n'est pas le même que lors de la saisie de la ligne. Le calcul s’effectue dans l'action INICRE_LIG de l'objet, lors de l’alimentation de la ligne détail facture [F:SID] à partir de l'écran [M:SIH4]. La variable NOL (nolign-1) contient l'indice de la ligne en cours de création dans le tableau des lignes [M:SIH4].
Les buffers [F :SIH], [F :SIV], [F :SID] sont chargés avec l'avoir en cours de création. Les écrans de l'objet facture sont chargés avec l'avoir en cours de création. On se situe juste avant l'écriture de l'enr [F:SID]. Les enregistrements [F :SIH], [F :SIV] sont écrits.
La variable COUTHT contient le prix de revient calculé.
Dans tous les cas, le point d'entrée se situe juste après l'appel au sous-programme de calcul du prix de revient et juste avant le calcul de la marge. Les variables suivantes sont utilisées :
· WPOINT_COUT (local decimal) :
Elle est déclarée avant l'appel du point d'entrée. C'est le coût supplémentaire à impacter sur la marge. Le point d'entrée doit l'alimenter.
· WPOINT_RET (local integer) :
Elle est initialisée à 0 avant l'appel du point d'entrée. C'est la variable de statut de retour. Le point d'entrée doit la positionner à 1 pour que WPOINT_COUT soit utilisé.
Le point d'entrée doit donc positionner ces 2 variables.
A la sortie du point d'entrée, si WPOINT_RET vaut 1, le nouveau prix de revient est calculé :
COUTHT= COUTHT+WPOINT_COUT
La marge est calculée :
PFM=PHTNET-COUTHT
Notes importantes :
Le prix de revient X3 est calculé dans la devise de la société (donné par la variable globale GLOCALDEV). Il est converti dans la devise du document si cette devise est différente de GLOCALDEV.
Il faut donc que WPOINT_COUT soit renvoyé dans la devise du document.
Le prix de revient X3 est calculé en unité de stock. Il est converti en unité de commande. (On le multiplie par la variable COEF qui est le coefficient de conversion UV-US).
Il faut donc que WPOINT_COUT soit envoyé en unité de commande.
Le sous-programme de calcul de marge étant commun à toutes les fonctions, il est nécessaire de connaître le contexte, il faudra utiliser la variable GCALPFM telle qu’indiqué précédemment.
Ce point d’entrée concerne le calcul du prix de revient et de la marge dans les ventes.
Contrairement au point d'entrée CALPFM, il est appelé dans chaque traitement effectuant un calcul de marge quelle que soit la valeur de la variable INICPRPRI .
. Il n'y a pas de transaction en cours lorsque le point d’entrée est appelé depuis la saisie d’une ligne (devis, commande, livraison, facture, avoir).
. Il y a une transaction en cours lorsque le point d’entrée est appelé depuis :
. Le bouton livraison depuis la gestion commande, le bouton validation depuis la gestion livraison
. Les fonctions livraison automatique des commandes, validation automatique des livraisons
. Le bouton facture depuis la gestion commande, le bouton validation depuis la gestion facture
. Les fonctions facturation automatique des commandes, validation automatique des factures.
. Il y a une transaction en cours lorsque le point d’entrée est appelé depuis la gestion des contrats.
. Il y a une transaction en cours lorsque le point d’entrée est appelé depuis la création d'une ligne d'avoir avec mouvement de stock.
Il n'y a pas de fichier trace ouvert.
Il y a un fichier trace ouvert lorsque l’on est dans les fonctions de livraison ou facturation automatique des commandes, validation automatique des livraisons ou des factures.
Une variable globale ‘GCALPFM’ permet d’identifier ces différents cas d’appels.
GCALPFM = 0 Saisie ligne devis, commande, livraison, facture, avoir
GCALPFM = 1 Bouton ‘livraison’ ou fonction ‘livraison automatique’
GCALPFM = 2 Bouton ‘validation livraison’ ou fonction ‘validation des livraisons’
GCALPFM = 3 Bouton ‘facture’ (depuis une commande) ou fonction ‘facturation automatique des commandes ‘
GCALPFM = 4 Bouton ‘validation facture’ ou fonction ‘validation des factures’
GCALPFM = 5 Saisie des contrats
GCALPFM = 6 Création d'une ligne d'avoir avec mouvement de stock
Il pourra donc être nécessaire de tester cette variable pour utiliser le bon contexte.
Ce point d’entrée est appelé :
. Dans le sous-programme de calcul de la marge ( GCALPFM=0 )
Ce sous-programme est un sous-programme commun à toutes les fonctions de vente. Il est appelé à chaque saisie d'une ligne (devis, commande, livraison, facture, avoir), chaque fois qu'il est nécessaire de recalculer la marge :
· Après saisie de la quantité
On effectue la recherche tarif dont on récupère le prix brut. On calcule ensuite le prix net et donc la marge.
· Après modification du prix brut ou d'une colonne frais/remise. Une telle modification engendre un recalcul du prix net et par conséquent un recalcul de la marge.
· Après validation de la ligne
La classe écran liée à l'OBJet traité est chargée ([M:SQH], [M:SOH], [M:SDH], [M:SIH]). On se trouve à l'intérieur du sous-programme CALPFM.
Les variables suivantes sont les variables passées en paramètre du sous-programme :
· NLIG : Indice de la ligne dans le tableau.
· PRI : Prix net de la ligne
· VAT : Tableau des 3 codes taxes de la ligne (VAT(0), VAT(1), VAT(2))
· PRITYP : Type de prix du document
· SIT : Site de stock
· LITM : Référence article
· CHGTYP : Type de cours
· DAT : Date du document
· CUR : Devise du document
· COEF : Coefficient de conversion unité de cde/unité de stock de la ligne
· INICPRPRI : Flag init du prix de revient (0=Pas d'init,1=Init sans raz,2=Init avec raz)
· XSTOMGTCOD : Flag mise à jour des stock
Les variables suivantes sont des variables de travail calculées par le sous-pro :
· PHTNET : Prix net servant au calcul de la marge (prix HT)
· WQTY : Quantité en unité de stock
· COUTHT : Prix de revient calculé
Les variables suivantes sont les variables calculées et renvoyées par le sous-pro :
· XPFM : Marge
· XCPRPRI : Prix de revient
. Lors de la livraison d’une commande par bouton ou par la fonction de livraison automatique ( GCALPFM=1 )
Le recalcul de la marge s’effectue lors de l’alimentation de la ligne détail livraison à partir de la ligne détail commande au moment de la création d’une ligne de livraison. On se situe juste avant l’écriture de la ligne détail livraison.
Les buffers [F :SOH], [F :SOQ], [F :SOP] sont chargés avec la commande à livrer. [F :SDH], [F :SDD] sont chargés avec la livraison en cours de création.
. Lors de la validation d’une livraison par bouton ou par la fonction validation automatique des livraisons ( GCALPFM=2 )
Le recalcul de la marge s’effectue pour les articles gérés en stock, avant la mise à jour des stocks.
Les buffers [F :SDH], [F :SDD] sont chargés. Les buffers [F :ITM], [F :ITS] sont également chargés.
. Lors de la facturation d’une commande par bouton ou par la fonction de facturation automatique des commandes ( GCALPFM=3 )
Le calcul de la marge s’effectue lors de l’alimentation de la ligne détail facture à partir de la ligne détail commande au moment de la création d’une ligne de facture. On se situe juste avant l’écriture de la ligne détail livraison.
Les buffers [F :SOH], [F :SOP], [F :SOQ] sont chargés avec la commande à facturer. [F :SIH], [F :SIV], [F :SID] sont chargés avec la facture en cours de création.
. Lors de la validation d’une facture par bouton ou par la fonction validation automatique des factures ( GCALPFM=4 )
Le recalcul de la marge s’effectue pour les factures de commandes, pour les articles gérés en stock, et ceci avant la mise à jour des stocks.
Les buffers [F :SIH], [F :SIV], [F :SDD] sont chargés. Les buffers [F :ITM], [F :ITS] sont également chargés.
. Dans la gestion des contrats (GCALPFM=5)
Le recalcul de la marge s’effectue lors de la modification d’un contrat si le régime de taxe a été modifié. En effet, il est nécessaire dans ce cas, pour chaque ligne article, de refaire la recherche des codes taxes. Si des lignes de prix ont été saisies pour cette ligne article, il faut également recalculer les prix HT et TTC et la marge.
Ce traitement s’effectue lors de l’enregistrement de la modification, dans la transaction de mise à jour du contrat, au niveau de l’action AVANT_MODFIC.
Les buffers [F :SOH], [F :SOC], [F :SOP] sont chargés avec le contrat, la ligne article et la ligne de prix. La classe écran [M:SOR1] est également chargée avec le contrat.
. Lors de création d'une ligne d'avoir avec mouvement de stock pour un article dont la base de calcul de marge est le prix moyen lot ( GCALPFM=6 )
Le calcul de la marge est réeffectué lors de la création de la ligne. A ce niveau, le contexte n'est pas le même que lors de la saisie de la ligne. Le calcul s’effectue dans l'action INICRE_LIG de l'objet, lors de l’alimentation de la ligne détail facture [F:SID] à partir de l'écran [M:SIH4]. La variable NOL (nolign-1) contient l'indice de la ligne en cours de création dans le tableau des lignes [M:SIH4].
Les buffers [F :SIH], [F :SIV], [F :SID] sont chargés avec l'avoir en cours de création. Les écrans de l'objet facture sont chargés avec l'avoir en cours de création. On se situe juste avant l'écriture de l'enr [F:SID]. Les enregistrements [F :SIH], [F :SIV] sont écrits.
Notes importantes :
Le prix de revient XCPRPRI et la marge XPFM sont calculés pour une unité de vente et dans la devise du document.
Ces 2 valeurs doivent être arrondies en fonction du nombre de décimales du prix GDECPRI
Le sous-programme de calcul de marge étant commun à toutes les fonctions, il est nécessaire de connaître le contexte, il faudra utiliser la variable GCALPFM telle qu’indiqué précédemment.
Ce point d’entrée concerne le contrôle de la marge dans les ventes.
Il permet d’intervenir lors de l’affichage du message avertissant l’utilisateur que la marge est inférieure à la marge mini définie dans l’article vente. Il permet soit de le modifier soit de ne plus faire le contrôle.
Il est appelé lors de chaque contrôle du calcul de marge.
Il n'y a pas de transaction en cours.
Il n'y a pas de fichier trace ouvert.
Le PE est appelé dans le sous-programme CTLPFM de contrôle de la marge.
Ce sous-programme est appelé lors de la saisie de lignes de devis, commandes, contrat-article, livraisons, factures, en fin de ligne et à chaque fois que l’on modifie un élément entrant dans le calcul de la marge (après chaque recherche tarif, après modification du site d’expédition, des frais/remises, du prix de revient). Ce sous-programme est commun à toutes les fonctions de vente.
La classe écran liée à l'objet traité est chargée ([M:SQH], [M:SOH], [M:SDH], [M:SIH], [M:SOI]). On se trouve à l'intérieur du sous-programme CTLPFM.
Les variables suivantes sont les variables passées en paramètre du sous-programme :
· CUR : Devise du document
· XCPRPRI : Prix de revient de la ligne
· NLIG : Indice de la ligne dans le tableau. Non renseigné et non significatif si contrat-article.
Les variables suivantes sont chargées :
· WITMREF : Référence article
· WSAU : Unité de vente
· PFMRAT : % de marge calculé.
Lorsque le PE est appelé, le calcul du % de marge a été réalisé, ce % est inférieur au % mini défini dans l’article-vente.
GMESSAGE est chargé avec le message à afficher.
Le PE permet de modifier ce message. Pour cela, il faut modifier la variable GMESSAGE. Si GMESSAGE est remis à blanc, aucun message ne sera affiché et le contrôle ne sera pas actif (pas d’avertissement ou pas de blocage).
Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte (le client courant est chargé…).
Table | Contenu significatif | Intitulé Table |
ITMSALES | Oui | Article-vente |
Ce point d’entrée concerne le contrôle du prix net dans les ventes.
Il permet d’intervenir lors de l’affichage du message avertissant l’utilisateur que le prix net est inférieur au prix plancher défini dans l’article vente. Il permet soit de le modifier soit de ne plus faire le contrôle.
Il est appelé lors de chaque contrôle du calcul du prix net.
Il n'y a pas de transaction en cours.
Il n'y a pas de fichier trace ouvert.
Le PE est appelé dans le sous-programme CTLNETPRI de contrôle du prix net.
Ce sous-programme est appelé lors de la saisie de lignes de devis, commandes, contrat-article, livraisons, factures, en fin de ligne et à chaque fois que l’on modifie un élément entrant dans le calcul du prix net (après chaque recherche tarif, après modification du coefficient de conversion UV-US, des frais/remises). Ce sous-programme est commun à toutes les fonctions de vente.
La classe écran liée à l'objet traité est chargée ([M:SQH], [M:SOH], [M:SDH], [M:SIH], [M:SOI]). On se trouve à l'intérieur du sous-programme CTLNETPRI.
Les variables suivantes sont les variables passées en paramètre du sous-programme :
· BPC : Client
· CHGTYP : Type de prix
· DAT : Date
· CUR : Devise
· NLIG : Indice de la ligne dans le tableau. Non renseigné et non significatif si contrat-article.
Les variables suivantes sont chargées :
· WITMREF : Référence article
· WSAU : Unité de vente
· WNETPRINOT : Prix net HT
· MONT : Prix plancher calculé (converti dans la bonne unité et la bonne devise).
Lorsque le PE est appelé, le calcul du prix net HT a été réalisé, ce prix net HT est inférieur au prix plancher défini dans l’article-vente.
GMESSAGE est chargé avec le message à afficher.
Le PE permet de modifier ce message. Pour cela, il faut modifier la variable GMESSAGE. Si GMESSAGE est remis à blanc, aucun message ne sera affiché et le contrôle ne sera pas actif (pas d’avertissement ou pas de blocage).
Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte (le client courant est chargé…).
Table | Contenu significatif | Intitulé Table |
ITMSALES | Oui | Article-vente |
ITMMASTER | Oui | Article |