STREGOMZ ;Regio omzetten [ 11/08/2003 8:40 PM ] ;Per maand, per boekjaar of cumul tov referentie. Do SHOW() Quit SHOW(Periode,Type,Opties) ;New Ind,Regio,Bestand,PerHV,PerHT,PerRV,PerRT,Som,Total,Lijst Do INIT Do FETCH,WRITE For Do COMMAND Quit:Input="-" Do CLEAN Quit COMMAND Set Input=$$SCROLL^vhLIST(.Lijst) If Input="M",$S($G(ShowMarg):1,1:$$ASK^vhWACHTW("VPMINAP")) Set ShowM='$G(ShowM) Do WRITE If Input="COM" Set Input="" Do CALL^vhMenu("STREGOMZ") If Input="SPEC" Set Input="" Do CALLSPEC^vhMenu(Lijst("POS")+Lijst("SELECT")_";80","STREGOMZD","E") Quit:Input="" Do EXEC^vhMenu("STREGOMZ",.Input) Quit INIT New Sort,SortNr,Cnt,Regio,Rec Do:'$D(Q) .New Periode,Type,Opties .Do INIT^vhTERMINA Set:'$D(Periode) Periode=$$CALCDATE^vhLib.DataTypes($H,"M",-1,"MD") Set:$G(Type)="" Type="C" ;Cumul tov ref Set Opties=$G(Opties) Set Global="^KKAAM",Pool=0 ; Huidig bestand Set:Opties["G" Global="^KKAAM",Pool=1 ; Huidig bestand Set Regio="",IndMax=0 Kill Ind,PoolReg #dim RegioIDIt As TECH.Iterator = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefRegioIDIterator() While RegioIDIt.HasNext() { #dim Regio As %String = RegioIDIt.Next() #dim RegioObj As DOM.VKP.Regio = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefRegio(Regio) #dim OmzetGroepering As %Integer = RegioObj.GeefOmzetGroepering() If Pool && (OmzetGroepering'="") && (OmzetGroepering'=Regio) { Set PoolReg(Regio)=OmzetGroepering ; Te cumuleren regio }Else{ Set PoolReg(Regio)=Regio ; Naar zichzelf Set Sort(RegioObj.GeefVolgNr())=Regio ; VolgNr door cumulatie van de pool kunnen er gaten ontstaan } } Set (SortNr,Cnt)="" For Set SortNr=$O(Sort(SortNr)) Quit:SortNr="" Do .Set Cnt=Cnt+1 .Set Ind(Sort(SortNr))=Cnt Quit CLEAN Quit FETCH If Type="M" Do ; Maand .Set PerHV=Periode .Set PerHT=PerHV .Set PerRV=$$CALCDATE^vhLib.DataTypes(Periode,"M",-12,"MD") .Set PerRT=PerRV If Type="B" Do ; Boekjaar lopend boekjaar tov volledig vorig boekjaar .Set PerHV=$$CALCDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(Periode,"BJ","FD"),"M") .Set PerHT=Periode .Set PerRV=$$CALCDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(Periode,"BJ",-1,"FD"),"M") .Set PerRT=$$CALCDATE^vhLib.DataTypes(Periode,"M",-12,"MD") If Type="C" Do ; Cumul van 12 maanden tov vorig boekjaar .Set PerHT=Periode .Set PerHV=$$CALCDATE^vhLib.DataTypes(Periode,"M",-11,"MD") .Set PerRV=$$CALCDATE^vhLib.DataTypes(Periode,"BJ",-1,"FD") .Set PerRT=$$CALCDATE^vhLib.DataTypes(Periode,"BJ",-1,"LD") If Type="T" Do ; Cumul van 12 maanden tov van 12 maanden ervoor .Set PerHT=Periode .Set PerHV=$$CALCDATE^vhLib.DataTypes(Periode,"M",-11,"MD") .Set PerRV=$$CALCDATE^vhLib.DataTypes(Periode,"M",-23,"MD") .Set PerRT=$$CALCDATE^vhLib.DataTypes(Periode,"M",-12,"MD") If Type="Q" Do ; Cumul van 12 maanden tov van 12 maanden ervoor .Set PerHT=Periode .Set PerHV=$$CALCDATE^vhLib.DataTypes(Periode,"M",-11,"MD") .Set PerRV=$$CALCDATE^vhLib.DataTypes(Periode,"M",-12,"MD") .Set PerRT=$$CALCDATE^vhLib.DataTypes(Periode,"M",-1,"MD") Kill Som,Total Do CALC(PerRV,PerRT,0) Do CALC(PerHV,PerHT,1) ; Berekenen van het percentage Korting en Winst For Ind=1:1 Quit:'$D(Som(Ind)) Do .Quit:$L(Som(Ind))="" .Set:$P(Som(Ind),D,2) $P(Som(Ind),D,4)=1-$J($P(Som(Ind),D)/$P(Som(Ind),D,2),0,4) ; Korting .Set:$P(Som(Ind),D,1) $P(Som(Ind),D,5)=$J($P(Som(Ind),D,3)/$P(Som(Ind),D,1),0,4) ; Marge .If Ind+1#2,$P(Som(Ind-1),D) Set $P(Som(Ind),D,6)=+$J($P(Som(Ind),D)/$P(Som(Ind-1),D),0,4) ; Verschil tussen vorig en nu For Ind=1:1:2 Do .Set:$P(Total(Ind),D,2) $P(Total(Ind),D,4)=1-$J($P(Total(Ind),D)/$P(Total(Ind),D,2),0,4) ; Korting .Set:$P(Total(Ind),D,1) $P(Total(Ind),D,5)=$J($P(Total(Ind),D,3)/$P(Total(Ind),D,1),0,4) ; Marge If $P(Total(1),D) Set $P(Total(2),D,6)=+$J($P(Total(2),D)/$P(Total(1),D),0,4) ; Verschil tussen vorig en nu Quit CALC(Van,Tot,Inc) New Mnd,Regio Set Mnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(Van,"M",-1),"DM4")_" " Set Tot=$$EXTDATE^vhLib.DataTypes(Tot,"DM4")_" " Set Regio="" ; Labeling If '$D(Total) Do .For Set Regio=$O(Ind(Regio)) Quit:Regio="" Do ..Set $P(Som(Ind(Regio)*2-1),D,10)=Regio ..Set $P(Som(Ind(Regio)*2),D,11)=1 .Set $P(Total(1),D,10)="Totaal" .Set $P(Total(2),D,11)=1 ; Sommatie For Set Mnd=$O(@Global@(Mnd)) Quit:Mnd="" Quit:Mnd]Tot Do .For Set Regio=$O(@Global@(Mnd,Regio)) Quit:Regio="" Do ..Set Ind=Ind(PoolReg(Regio))*2+Inc-1 ..Set Rec=$G(@Global@(Mnd,Regio)) ..For I=1:1:3 Set $P(Som(Ind),D,I)=$P(Som(Ind),D,I)+$P(Rec,D,I) ..For I=1:1:3 Set $P(Total(1+Inc),D,I)=$P(Total(1+Inc),D,I)+$P(Rec,D,I) Quit TITC ; CUMUL tov. referentie TITB ; Lopend BOEKJAAR tov. vorig boekjaar TITM ; MAAND tov. dezelfde maand vorig jaar TITT ; 12 MAANDEN tov 12 maanden, 12 maanden ervoor TITQ ; 12 MAANDEN tov 12 maanden, 1 maand ervoor WRITE Do INIT^vhLIST("STREGOMZ",$S($G(ShowM):"MARGE",1:"CUMUL"),.Lijst) Do TITEL Write @F11,@F1,@FMTI," ",$P(Titel,D)," - ",QN," ",@FMTi Set FP=100+sScr("KOL")-$L($P(Titel,D,2)) Write @F,@FMTB,$P(Titel,D,2),$S($G(ShowM):"*",1:""),@FMTb Set FP=345 Write @F,Begin(1) Set FP=445 Write @F,@FMTB,Begin(2)," ",@FMTb If $G(^KKAAM) Set FP=302 Write @F,"Geactualiseerd : ",$$FMTDT^vhLib.DataTypes(^KKAAM) Do WRITE^vhLIST(.Lijst) Quit TITEL Set Titel="Omzet per regio" Set Titel=Titel_D_$P($T(@("TIT"_Type)),";",2,99) Set Begin(1)="Referentie : "_$$EXTDATE^vhLib.DataTypes(PerRV,"DM4") Set:PerRV'=PerRT Begin(1)=Begin(1)_" - "_$$EXTDATE^vhLib.DataTypes(PerRT,"DM4") Set Begin(2)=" Selectie : "_$$EXTDATE^vhLib.DataTypes(PerHV,"DM4") Set:PerHV'=PerHT Begin(2)=Begin(2)_" - "_$$EXTDATE^vhLib.DataTypes(PerHT,"DM4") Set sFL(1)=Total(1),End(1)=$$LIJN^vhFMT($NA(Lijst("FMT",$P(Lijst("SET"),"`",6))),0) Set sFL(1)=Total(2),End(2)=$$LIJN^vhFMT($NA(Lijst("FMT",$P(Lijst("SET"),"`",6))),0) Quit ASKDAT Do INIT^vhTERMINA Set Datum=$$ASK^vhINP("Datum : ",7,$$EXTDATE^vhLib.DataTypes(Periode,"DM4"),"Ingave maand waarvan u de regio omzetten wenst te bekijken","Formaat : JJJJ.MM of JJ.MM of MM") Set Datum=$$INTDATE^vhLib.DataTypes(Datum,"DM") Set:Datum Periode=Datum Do FETCH,WRITE Quit PRINT New %J Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Merge ^HULP(%J)=Som Set Cnt=$O(Som("")) Set ^HULP(%J,$O(Som(""),-1)+1)=Total(1) Set ^HULP(%J,$O(Som(""),-1)+2)=Total(2) Do INIT^vhLISTO("STREGOMZ","CUMUL",.PrintD) Set PrintD(11)=Titel Set PrintD(10)="CBPRINT^STREGOMZ" ;Callback Set PrintD(1)=$NA(^HULP(%J)) Set PrintD(2,1)="92\1.1;C;L;50" Set PrintD(2,2)="92\2.1;C;L;50" Set PrintD(5)=76 Do PRINT^OUTPUT(.PrintD,"P") Quit CBPRINT(Ref) If Ref="B" Do Quit ";1\;2" .Merge FL(3)=Begin ;If Ref="E" Do Quit "BR;\;1\;2" ;.Merge FL(3)=End If $L(Ref)>1,$P(@Ref,D,10)="Totaal" Quit "BR;\;" Quit "" TRANSF ;Tranfert van de omzetten New Regios,Regio,Rec,CumulReg,CumulRec,I,Dat Do STORE^vhTERMINA() Set File=$$ASKFILE^vhDEV("OMZREG.TXT") Set Dev=$$OPEN^vhDEV($$DIRUSER^vhDEV,File,"W") Set FP=2001 Write @F,@F1,!,"Tranfert van de omzetten" Set Dat=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M",-61),"DM4")_" " Set Dat=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M",-73),"DM4")_" " Set EDat=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M"),"DM4")_" " Use Dev Write "Datum" S Regio="" #dim RegioIDIt As TECH.Iterator = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefRegioIDIterator() While RegioIDIt.HasNext() { #dim Regio As %String = RegioIDIt.Next() #dim RegioObj As DOM.VKP.Regio = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefRegio(Regio) If (RegioObj.GeefSubdivisieNrVoorTrans()="") || (RegioObj.GeefSubdivisieNrVoorTrans()=Regio){ Set CumulRegio=Regio }Else{ Set CumulRegio = RegioObj.GeefSubdivisieNrVoorTrans() } Set Ind(Regio)=CumulRegio Set Sort(CumulRegio)="" } ;Write hoofding Set CumulRegio=$O(Sort("")) While CumulRegio '= "" { Write $C(9),"OA.",CumulRegio,$C(9),"OV.",CumulRegio Set CumulRegio=$O(Sort(CumulRegio)) } Set Dat=$O(@Global@(Dat)) While ((Dat'="") && '(Dat]EDat)){ Write $C(13),Dat Set Regio="" Kill RegOmz ;Cumuleren van bep. regios #dim RegioIDIt As TECH.Iterator = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefRegioIDIterator() While RegioIDIt.HasNext() { #dim Regio As %String = RegioIDIt.Next() Set CumulRegio=Ind(Regio) Set Rec=$G(@Global@(Dat,Regio)) For I=1:1:3 Set $P(RegOmz(CumulRegio),D,I)=$P($G(RegOmz(CumulRegio)),D,I)+$P(Rec,D,I) } ;Write van de gecumuleerde regios Set CumulRegio="" Set CumulRegio=$O(Sort(CumulRegio)) While CumulRegio '= "" { Set Rec=$G(RegOmz(CumulRegio)) Write $C(9),$TR($P(Rec,D,3),".",","),$C(9),$TR($P(Rec,D,1),".",",") Set CumulRegio=$O(Sort(CumulRegio)) } Set Dat=$O(@Global@(Dat)) } Close:0'[Dev Dev Do REFRESH^vhTERMINA() Quit