Les COMMISSIONS
Structure de la table ORDERLINEPRICEDEF
Les commissions sont stockées parmi les enregistrements orderlinepricedef (justification de prix),
ODPDATATYPE = 10
Les principaux champs pour obtenir les commissions :
ODPNOORDER, INTEGER NOT NULL : Identifiant commande
ODPNOORDERLINE, INTEGER NOT NULL : Identifiant ligne commande
ODPNOLINE, INTEGER NOT NULL : Chrono ligne pour une ligne de commande
ODPDATATYPE, INTEGER : Type de donnée (10 pour commissions)
ODPREPCODE, VARCHAR(3) : Code représentant
ODPCODETAXE, VARCHAR(4) : Code commission
ODPTOTALQTY, NUMERIC(15, 5) : Base de calcul *
ODPCALCCOEF, NUMERIC(15, 5) : Tx de commission (% ou unité)
ODPCALCTYPE, INTEGER : 1 si Taux, 2 si unité
ODPTOTALHT, NUMERIC(15, 5) : Montant commission
ODPPAYED, INTEGER DEFAULT 0 : 1 lorsque la commission est pointée
ODPDATEPAYED, DATE : Date du pointage
Les autres champs :
ODPCOMMENT, VARCHAR(255) :
ODPUSERMODIF, INTEGER :
ODPCALCINBASE, INTEGER :
ODPCALCTOTALBASEON, INTEGER :
ODPTOTALTVA, NUMERIC(15, 5) :
ODPTVACODE, VARCHAR(3) :
ODPTOTALTTC, NUMERIC(15, 5) :
ODPCURTOTALHT, NUMERIC(15, 5) :
ODPCURTOTALTTC, NUMERIC(15, 5) :
ODPCURTOTALTVA, NUMERIC(15, 5) :
ODPARRAYLINE, INTEGER :
ODPREFERENCE, VARCHAR(255) :
ODPTOTALHTCOSTUNIT, NUMERIC(15, 5) DEFAULT 0 :
ODPCALCTOTALHT, NUMERIC(15, 5) :
ODPMODE, VARCHAR(3) :
ODPUSER ,VARCHAR(60) :
ODPIDENT1, INTEGER :
ODPID1CODE, VARCHAR(15) :
ODPIDENT2, INTEGER :
ODPID2CODE, VARCHAR(15) :
ODPIDPERSONALCOST, INTEGER :
ODPSUGARRATE, NUMERIC(15, 5) :
Le champ ODPDATATYPE prend les valeurs 1 pour les accises, 3 pour la vignette SS et la même valeur que dans PERSONNALCOST pour les autres types de données (cf doc sur les tarifs personnalisés).
Principales jointures jusqu’au règlement pour déterminer les commissions dues en fonction des règlements clients :
select odpnoorder, odpnoorderline, odpnoline,odprepcode,odpcodetaxe, odptotalqty, odpcalccoef, odpcalctype, odptotalht, invnosocaux,invinvoicenumber,invvalidate,invbalanced,invbalance,artspecies,cusname, MAX(paydatepayment)
from orderlinepricedef
inner join orderline on odlnoorder=odpnoorder and odlnoorderline=odpnoorderline
inner join article on artnoarticle=odlnoarticle
inner join orders on ordnoorder=odpnoorder
inner join customer on cusnocustomer=ordnocustomer
inner join invoice on invnoinvoice=ordinvoiced
inner join society on socnosociety=invnosocaux
left outer join lettrage on letnoinvoice=invnoinvoice
left outer join payment on paynumpayment=letnumpayment and paynosocaux=letnosocaux
where odpdatatype=10
Group by odpnoorder, odpnoorderline, odpnoline, odprepcode,odpcodetaxe, odptotalqty, odpcalccoef, odpcalctype, odptotalht, invnosocaux,invinvoicenumber,invvalidate,invbalanced,invbalance, artspecies,cusname
order by odpnoorder, odpnoorderline, odpnoline
La jointure interne avec ‘invoice’ permet de retenir que les opérations facturées.
La jointure avec lettrage + payment oblige à un group by et de sélectionner la dernière date de règlement pour le cas des factures réglées en plusieurs fois, ou annulation de règlement.
Visualisation commissions sur opérations commerciales/Lignes :
Clic droit, Afficher Justification du prix :
Lignes type ‘COMREP’ :