LEVAANK ;Leveranciers totaal van de aankopen en verkopen per maand [ 04/03/2003 1:05 PM ] #include Prod.Product #define PosLEVNr 1 #define PosLEVNaam 2 #define PosProdCnt 3 #define PosOmzet 4 #define PosAankoop 5 #define PosVerhOmzetTot 6 #define PosVerhMargeTot 7 #define PosVerhMargeOmzet 8 Start(BeginMnd,EindMnd) New Cache,Sort,PRNr,Result,List,LEVNr,Totaal,D Set D="\" Set BeginMnd=$S($G(BeginMnd):BeginMnd,1:$$CALCDATE^vhLib.DataTypes($H,"M",-12)) Set EindMnd=$S($G(EindMnd):EindMnd,1:$$CALCDATE^vhLib.DataTypes(BeginMnd,"M",11)) Set BeginMnd=$$EXTDATE^vhLib.DataTypes(BeginMnd,"DM4")_" " Set EindMnd=$$EXTDATE^vhLib.DataTypes(EindMnd,"DM4")_" " w "Begin ",BeginMnd,! w "Eind ",EindMnd,! Kill Cache Set PRNr=0 Set dbgCount=0 Set $LI(Totaal,$$$PosLEVNaam)="TOTAAL" For Set PRNr=$Order(^KSTPR(PRNr)) Quit:PRNr="" Do Quit:PRNr>10000 . Quit:'$D(^KPR(PRNr)) . //write:$E($$$PRGet($$$IdentNummer))=6 PRNr,! . Quit:$E($$$PRGet($$$IdentNummer))=6 . Set LEVNr=$$$PRGet($$$LeveranciersNr) . Set Result=$$PROD^STAT(PRNr,0,BeginMnd,EindMnd,"3,4") ; Omzet en Marge . Quit:'$P(Result,D,1)&&'$P(Result,D,2) ; Geen omzet of marge . Set List=$G(Cache(LEVNr)) . Set:List="" $LI(List,$$$PosLEVNr)=LEVNr . Set $LI(List,$$$PosProdCnt)=$LG(List,$$$PosProdCnt)+1 ; Aantal . Set $LI(List,$$$PosOmzet)=$LG(List,$$$PosOmzet)+$P(Result,D,1) ; Omzet . Set $LI(List,$$$PosAankoop)=$LG(List,$$$PosAankoop)+($P(Result,D,1)-$P(Result,D,2)) ; Aankoop . Set Cache(LEVNr)=List . Set $LI(Totaal,$$$PosProdCnt)=$LG(Totaal,$$$PosProdCnt)+1 ; Aantal . Set $LI(Totaal,$$$PosOmzet)=$LG(Totaal,$$$PosOmzet)+$P(Result,D,1) ; Omzet . Set $LI(Totaal,$$$PosAankoop)=$LG(Totaal,$$$PosAankoop)+($P(Result,D,1)-$P(Result,D,2)) ; Aankoop Set LEVNr="" For Set LEVNr=$O(Cache(LEVNr)) Quit:LEVNr="" Do . Set:$LI(Totaal,$$$PosOmzet)'=0 $LI(Cache(LEVNr),$$$PosVerhOmzetTot)=$LI(Cache(LEVNr),$$$PosOmzet)/$LI(Totaal,$$$PosOmzet) . Set:$LI(Totaal,$$$PosAankoop) $LI(Cache(LEVNr),$$$PosVerhMargeTot)=$LI(Cache(LEVNr),$$$PosAankoop)/$LI(Totaal,$$$PosAankoop) . Set:$LI(Cache(LEVNr),$$$PosOmzet) $LI(Cache(LEVNr),$$$PosVerhMargeOmzet)=($LI(Cache(LEVNr),$$$PosOmzet)-$LI(Cache(LEVNr),$$$PosAankoop))/$LI(Cache(LEVNr),$$$PosOmzet) . Set Sort($LI(Cache(LEVNr),$$$PosOmzet),LEVNr)="" Set:$LI(Totaal,$$$PosOmzet) $LI(Totaal,$$$PosVerhMargeOmzet)=($LI(Totaal,$$$PosOmzet)-$LI(Totaal,$$$PosAankoop))/$LI(Totaal,$$$PosOmzet) zw Sort Set (Omzet,LEVNr)="" For Set Omzet=$O(Sort(Omzet),-1) Quit:Omzet="" Do . For Set LEVNr=$O(Sort(Omzet,LEVNr),-1) Quit:LEVNr="" Do . . Quit:'$D(^KL1(LEVNr)) ; test only . . Quit:'$D(^KLE(^KL1(LEVNr),0)) ; test only . . Set LevNaam=$P(^KLE(^KL1(LEVNr),0),"\",2) . . Write LEVNr, *9, LevNaam, *9, $J($LG(Cache(LEVNr),$$$PosVerhOmzetTot)*100,0,1), *9, $J($LG(Cache(LEVNr),$$$PosOmzet),0,0), *9, $J($LG(Cache(LEVNr),$$$PosAankoop),0,0), *9, $J($LG(Cache(LEVNr),$$$PosVerhMargeOmzet)*100,0,1),! Write "Totaal",*9,$LI(Totaal,$$$PosOmzet),*9,$LI(Totaal,$$$PosAankoop) q . Set dbgCount = dbgCount+1 . //w PRNr,! write "dbgCount:", dbgCount, !