LEVAANK ;Leveranciers totaal van de aankopen en verkopen per maand [ 04/03/2003 1:05 PM ] #include Prod.Product #define PosOmzet 1 #define PosMarge 2 #define PosVerhOmzetTot 3 #define PosVerhMargeTot 4 #define PosVerhMargeOmzet 5 #define PosLEVNr 6 #define PosLEVNaam 7 Start(BeginMnd,EindMnd) New Cache,PRNr,Result,List,LEVNr Set BeginMnd=$S($G(BeginMnd):BeginMnd,1:$$CALCDATE^vhLib.DataTypes($H,"M",-13)) Set EindMnd=$S($G(EindMnd):EindMnd,1:$$CALCDATE^vhLib.DataTypes(BeginMnd,"M",12)) Set BeginMnd=$$EXTDATE^vhLib.DataTypes(BeginMnd,"DM4")_" " Set EindMnd=$$EXTDATE^vhLib.DataTypes(EindMnd,"DM4")_" " Kill Cache Set PRNr=0 Set Totaal="" For Set PRNr=$Order(^KSTPR(PRNr)) Quit:PRNr="" Do Quit:PRNr>10000 . Quit:'$D(^KPR(PRNr)) . Quit:$E($$$PRGet($$$IdentNummer))=6 . Set LEVNr=$$$PRGet($$$LeveranciersNr) . Set Result=$$PROD^STAT(PRNr,0,BeginMnd,EindMnd,"3,4") ; Omzet en Marge . Set List=$G(Cache(LEVNr)) . Set $LI(List,$$$PosOmzet)=$LG(List,$$$PosOmzet)+$P(Result,1) ; Omzet . Set $LI(List,$$$PosMarge)=$LG(List,$$$PosMarge)+($P(Result,1)-$P(Result,2)) ; Aankoop . Set Cache(LEVNr)=List . Set $LI(Totaal,$$$PosOmzet)=$LG(Totaal,$$$PosOmzet)+$P(Result,1) ; Omzet . Set $LI(Totaal,$$$PosMarge)=$LG(Totaal,$$$PosMarge)+($P(Result,1)-$P(Result,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,$$$PosMarge) $LI(Cache(LEVNr),$$$PosVerhMargeTot)=$LI(Cache(LEVNr),$$$PosMarge)/$LI(Totaal,$$$PosMarge) . Set:$LI(Cache(LEVNr),$$$PosOmzet) $LI(Cache(LEVNr),$$$PosVerhMargeOmzet)=$LI(Cache(LEVNr),$$$PosMarge)/$LI(Cache(LEVNr),$$$PosOmzet) . Set Sort($LI(Cache(LEVNr),$$$PosOmzet),LEVNr)="" Set:$LI(Totaal,$$$PosOmzet) $LI(Totaal,$$$PosVerhMargeOmzet)=$LI(Totaal,$$$PosMarge)/$LI(Totaal,$$$PosOmzet) 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),0,2), *9, $J($LG(Cache(LEVNr),$$$PosOmzet),0,0), *9, $J($LG(Cache(LEVNr),$$$PosMarge),0,0), *9, $J($LG(Cache(LEVNr),$$$PosVerhMargeOmzet),0,2),! q ; Display DISP Set LEV="" Set File=$$ASKFILE^vhDEV("LEVAANK.TXT") Set Dev=$$OPEN^vhDEV($$DIRUSER^vhDEV,File,"W") Quit:0[Dev Use Dev ; Titel Write "LevNr",$C(9),"LevNaam" For Maand=25:-1:0 Do .Set Mnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M",-Maand),"DM") .Write $C(9),"VKP "_Mnd,$C(9),"AKP "_Mnd ; Data For Set LEV=$O(HULP($J,LEV)) Quit:LEV="" Do .Set LEVNm=$P(^KLE(^KL1(LEV),0),"\",2) .W !,LEV,$C(9),LEVNm .For Maand=25:-1:0 Do ..Set Key=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M",-Maand),"DM4")_" " ..W $C(9),$TR($P($G(HULP($J,LEV,Key)),"\",1),".",","),$C(9),$TR($P($G(HULP($J,LEV,Key)),"\",2),".",",") Close Dev W @F11,@F1