COMMISSIONS REPRESENTANTS (EURO PORTES)

  • Auteur/autrice de la publication :
  • Post category:Codial
  • Commentaires de la publication :0 commentaire

REQUETES DE MISE A JOUR DE LA BASE DE DONNEES

Modifier la rubrique des articles du secteur ‘prestations’

UPDATE ARTICLE SET IDCOD_RUBRIQUE = 2 WHERE PRINCIPALE LIKE ‘PRESTATIONS’

je voulais faire une modification dans les lignes des devis, commandes, BL et factures mais cela ne met pas à jour la table SYNTHESE_DOC, il faut y aller manuellement, ligne à ligne dans les documents. Par contre, ça marche lors du transfert d’un document.

UPDATE LIGNEDEV SET IDCOD_RUBRIQUE = 2 WHERE REFERENCE IN (SELECT REFERENCE FROM ARTICLE WHERE IDCOD_RUBRIQUE = 2)
UPDATE LIGNECOC SET IDCOD_RUBRIQUE = 2 WHERE REFERENCE IN (SELECT REFERENCE FROM ARTICLE WHERE IDCOD_RUBRIQUE = 2)
UPDATE LIGNEBL SET IDCOD_RUBRIQUE = 2 WHERE REFERENCE IN (SELECT REFERENCE FROM ARTICLE WHERE IDCOD_RUBRIQUE = 2)

LA MACRO DE MISE EN FORME

A rattacher à la fiche perso

BASECOM..CouleurFond = VertPastel
COMMISSIONVERSEE..CouleurFond = VertPastel

Si COM_REGLEE = Vrai alors
COMMISSIONVERSEE..Etat = Grisé
Sinon
COMMISSIONVERSEE..Etat = actif
Fin

LA MACRO DE CALCUL

Il faut créer un bouton pour la lancer, je l’ai fait sur l’entête de la liste des factures

// Macro créé par MAS INFORMATIQUE le 09/09/2018

// Description de la macro :

// Code principal de la macro :

//Mise en forme de la fiche perso

wlcalcul est un booleen
SQL est une chaîne
wltotalHTBrut, wltotalMOHTBrut, wltotalRemises, wltotalHTNet, wltotalMOHTnet, wlBaseCommissions, wlCoutReel, wlMarge, wlMargePour, MontantCom est numérique
wlniv1,wlniv2,wlniv3 est numerique
Taux1, Taux2, Taux3 est numerique
wlreq est une Source de Données
PartMO est numerique

wlniv1 = 36
wlniv2 = 38
wlniv3 = 42

Taux1 = 0.02
Taux2 = 0.04
Taux3 = 0.05

wlcalcul = Faux

//Titre de la fenêtre
TitreSuivant(« CALCUL DES COMMISSIONS »)

SI OuiNon(« Lancer le calcul des commissions ? ») ALORS wlcalcul= Vrai

Si wlcalcul = Vrai ALORS

SQL = « select SUM(SU.SOMDEB) as SOMDEB, SUM(Sy.MO_TOTAL_HT) as MO_TOTAL_HT,  »
SQL += « SUM(DP.POURCENTAGE) as POURCENTAGE, SUM(SU.MARGE) as MARGE,  »
SQL += « FA.NUMERO, SUM(SF.MONTANT) AS TOTALTTC,  »
SQL += « SUM(FA.TOTAL) AS TOTALHTREMISE,  »
SQL += « SUM(SY.TOTAL_HT) AS TOTALHT, TRBL.NUMDOC_CIBLE as facture,  »
SQL += « TRBL.NUMDOC_SOURCE as commande « 

SQL += « FROM SUIVICH AS SU  »
SQL += « INNER JOIN FA4_DOC_AUDIT_TRANSF AS TRCDE ON TRCDE.NUMDOC_SOURCE = SU.NUMCOM  »
SQL += « INNER JOIN FA4_DOC_AUDIT_TRANSF AS TRBL ON TRBL.NUMDOC_SOURCE = TRCDE.NUMDOC_CIBLE  »
SQL += « INNER JOIN SUIFAC AS SF ON SF.NUMFAC = TRBL.NUMDOC_CIBLE  »
SQL += « INNER JOIN FACTURE AS FA ON FA.NUMERO = TRBL.NUMDOC_CIBLE  »
SQL += « INNER JOIN COD_SYNTHESE_DOC AS SY ON SY.ID_DOC = FA.FACLEUNIK  »
SQL += « LEFT JOIN COD_PIED_DOC AS DP ON DP.NUM_DOC = FA.NUMERO « 

SQL += « where « 

SQL += « TRBL.NUMDOC_CIBLE in (select SF.NUMFAC from SUIFAC as SF INNER JOIN FACTURE AS FA on SF.NUMFAC = FA.NUMERO where SF.solde = 1 and FA.INT_ACOMPTE = 0)  »
SQL += « AND TRBL.TYPEDOC_SOURCE = 2  »
SQL += « AND TRCDE.TYPEDOC_SOURCE = 7  »
SQL += « AND SY.TYPE_DOC = 4  »
SQL += « AND SY.TOPERAT =  »  »
SQL += « AND DP.TYPE_DOC = 4 « 

SQL += « GROUP BY FA.NUMERO, TRBL.NUMDOC_CIBLE, TRBL.NUMDOC_SOURCE « 

SQL += « union « 

SQL += « select SUM(SU.SOMDEB) as SOMDEB, SUM(Sy.MO_TOTAL_HT) as MO_TOTAL_HT,  »
SQL += « SUM(DP.POURCENTAGE) as POURCENTAGE, SUM(SU.MARGE) as MARGE,  »
SQL += « FA.NUMERO, SUM(SF.MONTANT) AS TOTALTTC,  »
SQL += « SUM(FA.TOTAL) AS TOTALHTREMISE,  »
SQL += « SUM(SY.TOTAL_HT) AS TOTALHT, TR.NUMDOC_CIBLE as facture,  »
SQL += « TR.NUMDOC_SOURCE as commande « 

SQL += « FROM SUIVICH AS SU  »
SQL += « INNER JOIN FA4_DOC_AUDIT_TRANSF AS TR ON TR.NUMDOC_SOURCE = SU.NUMCOM  »
SQL += « INNER JOIN SUIFAC AS SF ON SF.NUMFAC = TR.NUMDOC_CIBLE  »
SQL += « INNER JOIN FACTURE AS FA ON FA.NUMERO = TR.NUMDOC_CIBLE  »
SQL += « INNER JOIN COD_SYNTHESE_DOC AS SY ON SY.ID_DOC = FA.FACLEUNIK  »
SQL += « LEFT JOIN COD_PIED_DOC AS DP ON DP.NUM_DOC = FA.NUMERO « 

SQL += « where  »
SQL += « TR.NUMDOC_CIBLE in (select SF.NUMFAC from SUIFAC as SF INNER JOIN FACTURE AS FA on SF.NUMFAC = FA.NUMERO where SF.solde = 1 and FA.INT_ACOMPTE = 0)  »
SQL += « AND TR.TYPEDOC_SOURCE = 7  »
SQL += « AND SY.TYPE_DOC = 4  »
SQL += « AND SY.TOPERAT =  »  »
SQL += « AND DP.TYPE_DOC = 4 « 

SQL += « GROUP BY FA.NUMERO, TR.NUMDOC_CIBLE, TR.NUMDOC_SOURCE « 

SI HExécuteRequêteSQL(wlreq,hRequêteDéfaut,SQL) ALORS

HLitPremier(wlreq,hSansRafraîchir)

TANTQUE HTrouve(wlreq)

HLitRecherche(« FACTURE », »NUMERO »,wlreq.facture)

TANTQUE HTrouve(FACTURE)

PartMO = 0
wltotalHTBrut = 0; wltotalMOHTBrut = 0; wltotalRemises = 0; wltotalHTNet = 0
wltotalMOHTnet = 0; wlMarge = 0; wlMargePour = 0; MontantCom = 0
wlBaseCommissions = 0; wlCoutReel = 0

HLitRecherche(« FP_COMMISSIONS », »FACLEUNIK », FACTURE.FACLEUNIK)

SI HTrouve(FP_COMMISSIONS) ALORS

Si FP_COMMISSIONS.COM_REGLEE = Faux alors

wltotalHTBrut = arrondi(wlreq.TOTALHT,2)
wltotalMOHTBrut = arrondi(wlreq.MO_TOTAL_HT,2)
wltotalRemises = arrondi(wlreq.POURCENTAGE,2)
wltotalHTNet = arrondi(wlreq.TOTALHTREMISE,2)
wltotalMOHTnet = arrondi(wltotalMOHTBrut + (wltotalMOHTBrut * (wltotalRemises /100)),2)
wlBaseCommissions = wltotalHTNet – wltotalMOHTnet
wlCoutReel = arrondi(wlreq.SOMDEB,2)
wlMarge = wlBaseCommissions – wlCoutReel

Si wltotalHTNet <> 0 alors
wlMargePour = (wlMarge / wlBaseCommissions)*100
sinon
wlMargePour = 0
Fin

//TOTAL HT NON REMISE
FP_COMMISSIONS.TOTALHT = wltotalHTBrut
//MONTANT HT PART DE LA MO NON REMISE
FP_COMMISSIONS.MONTANT_MO_HT = wltotalMOHTBrut
//SOMME DES REMISES EN %
FP_COMMISSIONS.SOMMEREMISE= wltotalRemises
//TOTAL HT REMISE
FP_COMMISSIONS.TOTALHTREMISE = wltotalHTNet
//MONTANT HT PART DE LA MO REMISE
FP_COMMISSIONS.MONTANT_MO_HT_REMISE = wltotalMOHTnet
//BASE COMMISSIONABLE
FP_COMMISSIONS.BASECOM = wlBaseCommissions
//COUT REEL
FP_COMMISSIONS.SOMDEB = wlCoutReel
//MONTANT DE LA MARGE
FP_COMMISSIONS.MARGEMT = wlMarge
//POURCENTAGE DE LA MARGE
FP_COMMISSIONS.MARGEPOURC = wlMargePour

SELON wlMargePour
CAS >= wlniv3 : MontantCom = wlBaseCommissions * Taux3
CAS wlniv2<= * < wlniv3 : MontantCom = wlBaseCommissions * Taux2
CAS wlniv1<= * < wlniv2 : MontantCom = wlBaseCommissions * Taux1
AUTRE CAS : MontantCom = 0
FIN

FP_COMMISSIONS.MONTANT_COM = arrondi(MontantCom,2)

Hecrit(FP_COMMISSIONS)
FIN

SINON

//Je cré un enregistrement dans la table

HRAZ(FP_COMMISSIONS)

FP_COMMISSIONS.FACLEUNIK=FACTURE.FACLEUNIK

wltotalHTBrut = arrondi(wlreq.TOTALHT,2)
wltotalMOHTBrut = arrondi(wlreq.MO_TOTAL_HT,2)
wltotalRemises = arrondi(wlreq.POURCENTAGE,2)
wltotalHTNet = arrondi(wlreq.TOTALHTREMISE,2)
wltotalMOHTnet = arrondi(wltotalMOHTBrut + (wltotalMOHTBrut * (wltotalRemises /100)),2)
wlBaseCommissions = wltotalHTNet – wltotalMOHTnet
wlCoutReel = arrondi(wlreq.SOMDEB,2)
wlMarge = wlBaseCommissions – wlCoutReel

Si wltotalHTNet <> 0 alors
wlMargePour = (wlMarge / wlBaseCommissions)*100
sinon
wlMargePour = 0
Fin

//TOTAL HT NON REMISE
FP_COMMISSIONS.TOTALHT = wltotalHTBrut
//MONTANT HT PART DE LA MO NON REMISE
FP_COMMISSIONS.MONTANT_MO_HT = wltotalMOHTBrut
//SOMME DES REMISES EN %
FP_COMMISSIONS.SOMMEREMISE= wltotalRemises
//TOTAL HT REMISE
FP_COMMISSIONS.TOTALHTREMISE = wltotalHTNet
//MONTANT HT PART DE LA MO REMISE
FP_COMMISSIONS.MONTANT_MO_HT_REMISE = wltotalMOHTnet
//BASE COMMISSIONABLE
FP_COMMISSIONS.BASECOM = wlBaseCommissions
//COUT REEL
FP_COMMISSIONS.SOMDEB = wlCoutReel
//MONTANT DE LA MARGE
FP_COMMISSIONS.MARGEMT = wlMarge
//POURCENTAGE DE LA MARGE
FP_COMMISSIONS.MARGEPOURC = wlMargePour

SELON wlMargePour
CAS >= wlniv3 : MontantCom = wlBaseCommissions * Taux3
CAS wlniv2<= * < wlniv3 : MontantCom = wlBaseCommissions * Taux2
CAS wlniv1<= * < wlniv2 : MontantCom = wlBaseCommissions * Taux1
AUTRE CAS : MontantCom = 0
FIN

FP_COMMISSIONS.MONTANT_COM = arrondi(MontantCom,2)

Hajoute(FP_COMMISSIONS)

FIN

HLitSuivant(FACTURE)
FIN

HLitSuivant(wlreq)
FIN

FIN
FIN

info(« Traitement effectué »)

Laisser un commentaire