KPOSW G 0 ;OVERZICHT STOCKWAARDE ;KPOSW; [ 05/24/2002 2:53 PM ] #Define IdealStockRotatie 7 #Define KolomLabel "STOCK;CONTRACT;NIET-STOCK;WERKVLOER;HALFFABR;TOTAAL" #Define RowLabel "MAG;BON;RCP;TOT" 0 Set K=$P($T(+1),";",2)_QN_" " S FP=203+$L(K) W @F11,@F1,@F,@F5 S FP=202 W @F,@F4,K,@F5 Set FP=2303 Write @F,"Halux = H[], Van Hoecke=[]" Set FP=2103 Write @F,"Magazijn selectie : " Read K Set Owner="VH" If $zcvt($E(K),"U")="H" Set Owner="HALUX" 1 Kill SelDat Set Owner=$G(Owner,"VH") Do FetchDatums(.SelDat) Set SelDat=$O(SelDat(""),-1) ; Laatste datum als default 2 Do FetchCache(SelDat),DispCache Set FP=2101 Write @F, "Getoonde data berekend op ",@FMTI,$$EXTDATE^vhDTyp(SelDat,"DK"),@FMTi Set FP=2301 Write @F,"-=Exit, H=Herrekenen, V=Verwijder ",$$EXTDATE^vhDTyp(SelDat,"DK"),@FMTi Set FP=2401 Write @F If $O(SelDat(SelDat),-1)'="" Write "(=Vorig "_$$EXTDATE^vhDTyp($O(SelDat(SelDat),-1),"DK") If $O(SelDat(SelDat))'="" Write " )=Volgend "_ $$EXTDATE^vhDTyp($O(SelDat(SelDat)),"DK") 3 Set Input=$$IN^vhKEY() ; Vorig If Input="(",($O(SelDat(SelDat),-1)'="") Do Goto 2 . Set SelDat=$O(SelDat(SelDat),-1) ; Volgend If Input=")",($O(SelDat(SelDat))'="") Do Goto 2 . Set SelDat=$O(SelDat(SelDat)) ; Verwijder If $$UPTRIMAN^vhRtn1(Input)="V" Do Goto 1 . Set FP=301 Write @F,@F1 . Do ##class(DW.StockWaarde).Clean(SelDat) ; Herrekenen If $$UPTRIMAN^vhRtn1(Input)="H" Do Goto 1 . Set FP=301 Write @F,@F1 . Do ##class(DW.StockWaarde).FetchAll() ; Exit If (Input="-")||(Input=".") Quit ; Exit Goto 3 HALUX Set Owner="HALUX" Goto 1 FetchDatums(Dat) ;Dat via .Local New Datum &sql(DECLARE C2 CURSOR FOR SELECT DISTINCT Datum INTO :Datum FROM DW.StockWaarde) &sql(OPEN C2) For &sql(FETCH C2) Quit:(SQLCODE '= 0) Do . Set Dat(Datum)="" &sql(CLOSE C2) Quit FetchCache(SelDat) ;Set Owner=$S($ZU(110)="ADMIN2":"HALUX",1:"VH") &sql(DECLARE C1 CURSOR FOR SELECT StockType,sum(StockWaarde),sum(WerkVloerWaarde),sum(HalfFabrWaarde),sum(LeveringWaarde),sum(ReceptieWaarde) ,sum(JaarVerkoopWaarde),sum(GemStockWaarde) INTO :StockType,:Stock,:WerkVloer,:HalfFabr,:Levering,:Receptie,:JaarVKPtmp,:GemStocktmp FROM DW.StockWaarde WHERE Datum=:SelDat And Owner=:Owner GROUP BY StockType) Set (JaarVKPTot,JaarVKPStock,GemStockTot,GemStockStock)=0 &sql(OPEN C1) Kill C For &sql(FETCH C1) Quit:(SQLCODE '= 0) Do . Set C("M",StockType)=Stock . Set C("M","W")=$G(C("M","W"))+WerkVloer . Set C("M","H")=$G(C("M","H"))+HalfFabr . Set C("M","TOT")=$G(C("M","TOT"))+Stock+WerkVloer+HalfFabr . Set C("B",StockType)=Levering . Set C("B","TOT")=$G(C("B","TOT"))+Levering . Set C("R",StockType)=Receptie . Set C("R","TOT")=$G(C("R","TOT"))+Receptie . Set C("TOT",StockType)=$G(C("TOT",StockType))+Stock+Levering+Receptie . Set C("TOT","W")=$G(C("TOT","W"))+WerkVloer . Set C("TOT","H")=$G(C("TOT","H"))+HalfFabr . Set C("TOT","TOT")=$G(C("TOT","TOT"))+Stock+WerkVloer+Levering+Receptie+HalfFabr . If StockType="S" Set JaarVKPStock=JaarVKPtmp,GemStockStock=GemStocktmp . Set JaarVKPTot=$G(JaarVKPTot)+JaarVKPtmp,GemStockTot=$G(GemStockTot)+GemStocktmp &sql(CLOSE C1) Set RotatieTot=0 If $G(JaarVKPTot),$G(GemStockTot) Set RotatieTot=JaarVKPTot/GemStockTot Set RotatieTot=$J(RotatieTot,0,2) Set RotatieStock=0 If $G(JaarVKPStock),$G(GemStockStock) Set RotatieStock=$J(JaarVKPStock/GemStockStock,0,2) Set RotatieStock=$J(RotatieStock,0,2) Set StockWaardeIdeal=0 If $G(JaarVKPStock),$$$IdealStockRotatie Set StockWaardeIdeal=JaarVKPStock/$$$IdealStockRotatie Set StockWaardeIdeal=$J(StockWaardeIdeal,0,0) Quit DispCache ;Titel S K=$P($T(+1),";",2)_QN_" " S FP=203+$L(K) W @F11,@F1,@F,@F5 S FP=202 W @F,@F4,K,@F5 Set K=$S(Owner="HALUX":"Magazijn HALUX",1:"Magazijn VAN HOECKE") Set FP=280-$L(K)-1 Write @F,@FMTB,K,@FMTb ; Kader W @FCH S (R,RT)="401\1480",(RH,RHT)="601#680\801#880\1001#1080\1201#1280" S (RV,RVT)="407#1407\419#1419\431#1431\443#1443\455#1455\467#1467" D ^cA319 Set RowLabel=$$$RowLabel Set KolomLabel=$$$KolomLabel Set RijPos=1+($P(RT,D)\100)*100 For J=1:1:$L(RVT,D) Do . Set KolPos=1+($P(RVT,D,J)#100) . Set FP=RijPos+KolPos Write @F . Set KolLength=$P($P(RVT_D_$TR(RT,D,"#"),D,J+1),"#",2)#100-$P($P(RVT_D_$TR(RT,D,"#"),D,J),"#")#100-2 . Do CEL^vhFMT(1,"$P(KolomLabel,U,J)","C","R",KolLength,0,"","","","") For I=1:1:$L(RHT,D) Do . Set RijPos=1+($P(RHT,D,I)\100)*100,KolPos=5+($P(RT,D)#100)-$L($P(RowLabel,U,I)),FP=RijPos+KolPos . Write @F,$P(RowLabel,U,I) ; Data Write ! For I=1:1:$L(RHT,D) Do . Set Rij=$LI($LB("M","B","R","TOT"),I) . Set RijPos=1+($P(RHT,D,I)\100)*100 . For J=1:1:$L(RVT,D) Do . . Set Kol=$LI($LB("S","C","N","W","H","TOT"),J) . . Set KolPos=1+($P(RVT,D,J)#100) . . Set FP=RijPos+KolPos Write @F . . Set KolLength=$P($P(RVT_D_$TR(RT,D,"#"),D,J+1),"#",2)#100-$P($P(RVT_D_$TR(RT,D,"#"),D,J),"#")#100-2 . . Do CEL^vhFMT(1,"$G(C(Rij,Kol))","+N","R",KolLength,0,"","","","") Set FP=1601 Write @F Write "Stockwaarde bij rotatie ",$$$IdealStockRotatie," van de stockgoederen =",$$CEL^vhFMT(0,"StockWaardeIdeal","+N","R",12,0,"","","","") Write !," Gerealiseerde rotatie op de stockgoederen = ",$$CEL^vhFMT(0,"RotatieStock","+N","R",5,1,"","","","") Write !," Gerealiseerde rotatie op alle goederen = ",$$CEL^vhFMT(0,"RotatieTot","+N","R",5,1,"","","","") Quit BLDCONTR ;Build contract index (bevat stock en niet-stock produkten) New PRNr,KLNr Kill ContrInd Set (PRNr,KLNr)="" For Set KLNr=$O(^KPBI("D",KLNr)) Quit:KLNr="" Do .For Set PRNr=$O(^KPBI("D",KLNr,PRNr)) Quit:PRNr="" Do ..Set ContrInd(PRNr)=$S($D(ContrInd(PRNr)):ContrInd(PRNr)_";",1:"")_KLNr Quit StockLijst ; Maandelijkse stocklijst voor voorraadbeheer Write @F11,@F1,@FMTI," Stocklijst transfert ",QN," ",@FMTi Set FP=2101 Write @F Set Datum=$TR($$EXTDATE^vhDTyp($$CALCDATE^vhDTyp($H,"M",-1),"DM"),"-."," ") Do BLDCONTR^KPOSW Set PRNr=0 Set Dev=$$OPEN^vhDEV($$DIRUSER^vhDEV,"Stocklijst "_Datum_".txt","W") Use Dev Write $Tr("PRNr;KortTekst;Klas;LevNr;LevNm;Stock;IsNotKind;Kost;CifPPL;Qty;ABC;ABCKwot;GemWVK;GewGemWVK;Rotatie;GemStock;GemKost;MinBH;LevTrm;WVStock;WVStWaarde",";",$C(9)),! For S PRNr=$O(^KPR(PRNr)) Q:PRNr="" Do .If $$ISORGAL^ORGALUX(PRNr),$D(^PRLINK("D",PRNr)) Quit ; Indien orgalux en het is een moederproduct dan product niet opnemen in de stock .Set Kind=$E($P(^KPR(PRNr,2),D,25))=6 .Set JKey=$O(^KPR(PRNr,"J")) Quit:$E(JKey)'="J" .Set RecJ=^KPR(PRNr,JKey) .Set IKey=$O(^KPR(PRNr,"I")) Quit:$E(IKey)'="I" .Set RecI=^KPR(PRNr,IKey) .Set Rec0=^KPR(PRNr,0) .Set Rec1=^KPR(PRNr,1) .Set Stock=$P(Rec1,D,20) .Set Stock=$S(Stock:"S",1:"N") .Set:$D(ContrInd(PRNr))&'$P(Rec1,D,20) Stock="C" .Set Afgeleid=$P(Rec0,D,3)?4.7N .Set FysStock=$P($G(^PRSTOCK("D",PRNr)),D,1) ; fysische stock .Set WVStock=$P($G(^PRSTOCK("D",PRNr)),D,5) ; werkvloerstock .If Afgeleid,Stock="N",'WVStock,'FysStock Quit ; Afgeleide producten zonder stock niet opnemen in lijst .Set CifPPL=$J($P(RecJ,D,23),0,4) .Set ABC=$P($P(^KPR(PRNr,0),D,8),"#",2) .Set ABCKwot=$$ABCKWOT^PRODUKT2(PRNr,1) .Set GGemWvk=$P(Rec1,D,21) .Set GGemWvk=$P(GGemWvk,"#")+$P(GGemWvk,"#",2) .Set GemWvk=$P(Rec1,D,23) .Set GemWvk=$P(GemWvk,"#")+$P(GemWvk,"#",2) .Set GemSt=$P(Rec1,D,24) .Set MinBH=$P(RecJ,D,6) .Set LevTrm=$P(RecJ,D,7) .Set Rot=$P(GemSt,"#") .Set GemSt=$P(GemSt,"#",2) .Write PRNr,$C(9),$P(Rec0,D,1),$C(9),$P(RecI,D,3),$C(9),$P(RecJ,D,1),$C(9),$P(^KLE(^KL1($P(RecJ,D,1)),0),D,2),$C(9),Stock,$C(9),'Kind,$C(9),$S(Kind:0,1:$TR(CifPPL*$P(Rec0,D,14),".",",")),$C(9),$TR(CifPPL,".",",") .Write $C(9),$P(Rec0,D,14),$C(9),ABC,$C(9),"="""_ABCKwot_"""",$C(9),GemWvk,$C(9),GGemWvk,$C(9),Rot,$C(9),GemSt,$C(9),$S(Kind:0,1:$TR(CifPPL*GemSt,".",",")),$C(9),MinBH,$C(9),LevTrm,$C(9),$TR(WVStock,".",","),$C(9),$TR(WVStock*CifPPL,".",","),! Close Dev Quit