persistent Prod.Product %Persistent 0 %String D ##class(PD.Test).%New().RunLevAankoopQry() %SQLQuery pItemID:%String select * from Prod_GAmeta_BT.Kostmateriaal where ItemID like :pItemID 1 BeginMnd, EindMnd bevat de maand in $H formaat AddTotal : Indien leeg geen totaal, indien = B dan als eerste rij, indien = L dan als laatste rij %Query BeginMnd:%Date,EindMnd:%Date,AddTotal:%String 1 0 %Status 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 . 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 ; Toevoegen van verhouding en sorteren volgens omzet 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) . Quit:'$D(^KL1(LEVNr)) ; test only . Quit:'$D(^KLE(^KL1(LEVNr),0)) ; test only . Set $LI(Cache(LEVNr),$$$PosLEVNaam)=$P(^KLE(^KL1(LEVNr),0),"\",2) . Set Sort($LI(Cache(LEVNr),$$$PosOmzet),LEVNr)="" Set:$LI(Totaal,$$$PosOmzet) $LI(Totaal,$$$PosVerhMargeOmzet)=($LI(Totaal,$$$PosOmzet)-$LI(Totaal,$$$PosAankoop))/$LI(Totaal,$$$PosOmzet) ; Flatlist volgens sortering Set (Omzet,LEVNr)="" Kill %Rows Set:AddTotal="B" %Rows($I(%Rows))=Totaal For Set Omzet=$O(Sort(Omzet),-1) Quit:Omzet="" Do . For Set LEVNr=$O(Sort(Omzet,LEVNr)) Quit:LEVNr="" Do . . Set %Rows($I(%Rows))=Cache(LEVNr) Set:AddTotal="E" %Rows($I(%Rows))=Totaal Set %Rows="" Quit $$$OK ]]> 1 LevAankoopExecute %Status 1 LevAankoopExecute %Status %Library.CacheStorage ^PD.TestD TestDefaultData ^PD.TestD ^PD.TestI ^PD.TestS listnode %%CLASSNAME NewProperty1