KF20 G 1 ;MODULE FAKTURATIE (SELEKTIE ORDER-UITLEV.NRS.) ;Quit naar KF27 - Do naar KF21,KF26,KF21P [ 09/12/2003 1:40 PM ] #Include BL.Derde.Kennis #Include %occInclude ; M1 S MSG="DEZE TERMINAL HEEFT GEEN TOEGANG TOT DE FAKTURATIE" G MY M2 S MSG=UOU_"BESTAND VAN DEZE KLANT IN GEBRUIK" G MY M3 S MSG="FAKTURATIEADRES VERSCHILLEND VAN VOORGAANDE "_UOU G MY M4 S MSG="KLANT IN GEBRUIK" G MY M5 S MSG="FAKTUURNUMMER IN GEBRUIK" G MY M6 S MSG="FAKTURATIEMUNT VERSCHILLEND VAN VOORGAANDE "_UOU G MY M7 S MSG="VOORGAANDE "_UOU_$P("\ NIET",D,UEB+1)_" VOOR EXPORT DEZE "_UOU_" "_$P("NIET\WEL",D,UEB+1) G MY M8 S MSG="LEVERINGSADRES VERSCHILLEND VAN VOORGAAND "_UOU G MY M9 S MSG="PRIJZEN NETTO/BRUTO VERSCHILLEND VAN VOORGAANDE "_UOU G MY M10 S MSG="EEN MONSTER EN EEN ANDERE "_UOU_" KAN MEN NIET MENGEN" G MY M11 S MSG="EEN PROFORMA EN EEN ANDERE "_UOU_" KAN MEN NIET MENGEN" G MY M12 S MSG="DIT IS EEN MONSTER "_$P("ZONDER\MET",D,VWT["P"+1)_" PROFORMA, KAN NIET GEMENGD WORDEN" G MY M13 S MSG="DIT IS EEN PROFORMA "_$P("ZONDER\MET",D,VWT["P"+1)_" FAKTUUR, KAN NIET GEMENGD WORDEN" G MY M15 S MSG="EEN ORGALUX-ORDER, KAN NIET GEMENGD WORDEN" G MY M16 S MSG="MET - EN ZONDER REMBOURS KAN MEN NIET MENGEN" G MY M17 S MSG="EEN ORGALUX-ORDER STEEDS AFZONDERLIJK VOOR DEZE KLANT" G MY MY S FP=2403+F60 W @F,@F2,@F4,MSG," [] = OK ",@F5,@F0 R K MZ W @F,@F1 K MSG Q ; S4 S KCF=KCN,UFA=KFA,VM=UVM,UVB=UEB,XLA=KLA,NBP=UNBP,UTF(UR)="",USBX=USB,VWTX=VWT,XOL=ORLU,REMB=UREMB Q ; S5(KC,UR,Action) N X S Action=$G(Action,"+"),X=^KUL(KC,"F",UR,1) X "S Paletten=Paletten"_Action_"$P($P(X,D,24),""#"")" X "S Collo=Collo"_Action_"$P($P(X,D,24),""#"",2)" X "S Kartons=Kartons"_Action_"$P($P(X,D,24),""#"",3)" Q ; 1 S SW12=1,Q5="^KBA(BJ,""VFNR"")" G 4:'$D(^KBA(35)),4:^(35)[(D_$I_D) D M1 G YZ 4 G YZ:'$$CheckFactFreq(KC,$$INTDATE^vhLib.DataTypes(FDT)) L ^KUL(KC,"F"):2 E S FP=2203+F60 W @F,@F1 D M2 G YZ 6 K A,UTA,UTB,Paletten,Collo,Kartons,Verpak S (Paletten,Collo,Kartons,Verpak)=0,(DekWaarb,DekTerug)=0 F FP=365,465 W @F,@F2 S FP=UD*100+1 W @F,@F1 7 S UL=UD,Y=-1,(KCF,UFA,KFA,XLA,USBX,VWTX,XOL,REMB)="",(VM,UVB,KLA,NBP)=0 S K=$$ShowKennisAnker(KC,,1) If K="ANNULEER" S K="-" G 39 8 S K=$$SELBON(KC,.KUR,.UTF,$G(IsBulk),$G(BulkGroep)) G 39:K="-",YZ:K='"F" S K=$$ShowKennisAnker(KC,.UTF,1) If K="ANNULEER" S K="-",FP=UD*100+1 W @F,@F1 G 39:$N(^($N(^KUL(KC,"F",-1))))=-1 K:EENOPERF UTF D:EENOPERFOL G 6:'$D(UTF),8 G 39 .New BONNr .Set BONNr=$O(UTF("")) .;If BONNr,$$ISORGAL^FLOWCHK("L",BONNr) Kill UTF 21 S UL=UD,Y=-1,FP=UL*100+1 W @F,@F1 G 6:'$D(UTF) 23 G 25:UL>19 S Y=$N(UTF(Y)) 24 I Y'=-1 S UL=UL+1,FP=UL*100+1 W @F,$C(13),?(7-$L(Y)),Y,?10,$P(^KUL(KC,"F",Y,1),D,2),?21,$P(^(1),D,3) G 23 25 S R="K\22\3\FAKTURATIE\""F[] = faktureren" S:Y'=-1 R=R_" [] = vervolg" S R=R_"""\1\\""-,F""[K\\" D R0 G 25:K=""&(Y=-1) 26 G YZ:K="," I K="-" S FP=UD*100+1 W @F,@F1 G 39:$N(^($N(^KUL(KC,"F",-1))))=-1 K:EENOPERF UTF D:EENOPERFOL G 6:'$D(UTF),8 .New BONNr .Set BONNr=$O(UTF("")) .;If BONNr,$$ISORGAL^FLOWCHK("L",BONNr) Kill UTF 260 S FP=UD*100+1 W @F,@F1 G 23:K="" New BonNrs Merge BonNrs=UTF Kill UTF Do ##class(Flow.Facturatie.BulkFacturatie).Serie(.BonNrs) Goto YZ 39 I $D(SW12) S UL=+UD,FP=UD*100+1 W @F,@F1 L ^KUL(KC,"F",UR) ; YZ K Q5,UTF,UFA,Paletten,Collo,Kartons,DekPlaat,DekWaarb,DekTerug,RecupVp,VM,UVM,KFA,KCF,KCN,FNR,I1,UPKK,NBP,UNBP,USB,USBX,VWT,VWTX,XOL,ORLU,REMB,UREMB Q ; VERPAK S:'Paletten Paletten="" S:'Collo Collo="" S:'Kartons Kartons="" I 'Verpak S K="",UPKK=Paletten_"#"_Collo_"#"_Kartons Q S FP=1903 W @F,"PALETTEN : ",Paletten,!?2,"COLLO : ",Collo,!?2,"KARTONS : ",Kartons VP1 ;S R="K\23\3\VERPAKKING\""[] = ok .[] = wijzigen""\1\\""-,.""[K" D R0 ;G VP5:K="" Q:"-,"[K VP2 S R="K\23\3\AANTAL PALETTEN\C1\3\\""-,""[K!(K?.N)\" D R0 ;G VP1:K="-" Q:K="," I $L(K),K'=Paletten S Paletten=K,FP=1914 W @F,K,@F2 Q:K="-"!(K=",") I $L(K),K'=Paletten S Paletten=K,FP=1914 W @F,K,@F2 VP3 S R="K\23\3\AANTAL COLLO \C2\3\\""-,""[K!(K?.N)\" D R0 G VP2:K="-" Q:K="," I $L(K),K'=Collo S Collo=K,FP=2014 W @F,K,@F2 VP4 S R="K\23\3\AANTAL KARTONS \C3\3\\""-,""[K!(K?.N)\" D R0 G VP3:K="-" Q:K="," I $L(K),K'=Kartons S Kartons=K,FP=2114 W @F,K,@F2 ;G VP1 VP5 S:'Paletten Paletten="" S:'Collo Collo="" S:'Kartons Kartons="" S UPKK=Paletten_"#"_Collo_"#"_Kartons ;I UPKK="##",$$LAND^vhRtn1($P(^KKL(^KK1(KCF),0),D,8)'="BE" G VP4 Q ; PARIT S:VM="BF" VM="" S UPAR="" S:VM'="" UPAR=$$MUNT^vhRtn1(VM,,12) Q ; CHKPRIJS(KLNr,BONNrs) New R,BONNr,OLNr,Prijs,Netto,Probl,Count,PrijsOk,KortText,LD Set BONNr="",Count=0,PrijsOk=1 For Set BONNr=$O(BONNrs(BONNr)) Quit:BONNr="" Do .Set ULNr=100 .For Set ULNr=$O(^KUL(KLNr,"F",BONNr,ULNr)) Quit:'ULNr Do ..Set R=^KUL(KLNr,"F",BONNr,ULNr),PRNr=$P(R,D,2),Prijs=$P(R,D,6),Netto=$P(R,D,9) ..Quit:Prijs Quit:Netto ..If 'PRNr,$P($P(R,D,17),"#")'="KF1925" Quit ..If PRNr Set R=^KPR(PRNr,0),KortText=$P(R,D) ..Else Set KortText=$P(R,D,5) ..Set Count=Count+1,Probl(Count)=BONNr_D_KortText Do:Count .Do STORE^vhTERMINA() .Do INIT^vhLIST("KF20","CHKPRIJS",.LD) .Do:Count<16 ..Set R=LD("POS") ..Set $P(R,";")=$P(R,";")+(16-Count\2) ..Set $P(R,";",3)=$P(R,";")+Count-1 ..Set LD("POS")=R .Do WRITE^vhLIST(.LD) .For Set PrijsOk=$$SCROLL^vhLIST(.LD) Quit:1[PrijsOk .Do REFRESH^vhTERMINA() Quit PrijsOk ; CHKEDIFAX(KLNr,Document,DocNum) New Optie,ToFax,ToMail,DefData If Document="F",$P(^KKL(^KK1(KLNr),1),D,2)["E" Set ^KFBEDI(Document,KLNr,DocNum)="" Do:$P(^KKL(^KK1(KLNr),1),D,2)["@" ; Mail het origineel . Set Optie("NOPOP")=1,Optie("FILTER")=1,Optie("PIECE")="5,6",Optie("CONNECT")="E",Optie("DOCVOORKEUR")="F" . Set ToMail=$P($$SELECT^PERSS("K",KLNr,.Optie),";") . Do:'$L(ToMail) . . Set Optie("VWBEPERK")="BK2" . . Kill Optie("DOCVOORKEUR") . . Set ToMail=$P($$SELECT^PERSS("K",KLNr,.Optie),";") . Set DefData("TextId")="S",DefData("BackGround")=1,DefData("Exemplaren")=$$REPLACE^vhRtn1($$Exemplaren^DCFOP(KLNr),"\A","") . Set DefData("Van")=$$USERNAME^vhUSER($$INTVW^KLOPV(KLNr),"@1") . Do AUTO^DCPRINT(Document,DocNum,"Mail",ToMail,.DefData) Do:$P(^KKL(^KK1(KLNr),1),D,2)["F" ; Fax een copie . Set Optie("NOPOP")=1,Optie("FILTER")=1,Optie("PIECE")="5,6",Optie("CONNECT")="F",Optie("DOCVOORKEUR")="F" . Set ToFax=$P($$SELECT^PERSS("K",KLNr,.Optie),";") . Do:'$L(ToFax) . . Set Optie("VWBEPERK")="BK2" . . Kill Optie("DOCVOORKEUR") . . Set ToFax=$P($$SELECT^PERSS("K",KLNr,.Optie),";") . Set DefData("TextId")="S" . Set DefData("Van")=$$USERNAME^vhUSER($$INTVW^KLOPV(KLNr),1) . Do AUTO^DCPRINT(Document,DocNum,"Fax",ToFax,.DefData) Do:$P(^KKL(^KK1(KLNr),1),D,2)["M" ; Mail een copie . Set Optie("NOPOP")=1,Optie("FILTER")=1,Optie("PIECE")="5,6",Optie("CONNECT")="E",Optie("DOCVOORKEUR")="F" . Set ToMail=$P($$SELECT^PERSS("K",KLNr,.Optie),";") . Do:'$L(ToMail) . . Set Optie("VWBEPERK")="BK2" . . Kill Optie("DOCVOORKEUR") . . Set ToMail=$P($$SELECT^PERSS("K",KLNr,.Optie),";") . Set DefData("TextId")="S",DefData("BackGround")=1 . Set DefData("Van")=$$USERNAME^vhUSER($$INTVW^KLOPV(KLNr),"@1") . Do AUTO^DCPRINT(Document,DocNum,"Mail",ToMail,.DefData) Quit ; R0 S R7="K'[D&(K'?.E1C.E)" S:$P(R,D,8)'="" R7=R7_","_$P(R,D,8) S:$P(R,D,7)'="" R7=R7_","_$P($T(@$P(R,D,7))," ",2,99) R0A S R2=$P(R,D,2),R3=$P(R,D,3),R4=$P(R,D,4),R5=$P(R,D,5),R6=$P(R,D,6) R0B S R0=$L(R4)+R3+3 S FP=R2*100+R3+F60 W @F W:R3<4 @F1 W @F2,R4," : " I R5'="" W:R5["""" !,?2,@R5 D:R5'["""" @R5 R0C S FP=R2*100+R0+F60 W @F,@F2 W $E("........................................",1,R6),@F,@F0 R0D R K S:$P(R,D,7)="DCTR" RD=$P(K,".",1),RM=$P(K,".",2),RJ=$P(K,".",3) W @F2 I $L(K)'>R6,@R7 S @$P(R,D,1)=K G R0F R0E G R0C R0F S FP=$P(R,D,9)*100+($P(R,D,10)*1) I FP W @F,$E(" ",1,R6),@F,K R0Z K R,R0,R2,R3,R4,R5,R6,R7,RD,RM,RJ Q C1 W !?2,"[] = ",$S(Paletten:Paletten,1:"geen") Q C2 W !?2,"[] = ",$S(Collo:Collo,1:"geen") Q C3 W !?2,"[] = ",$S(Kartons:Kartons,1:"geen") Q ; SELBON(KLNr,AutoSel,Fakt,IsBulk,BulkGroep) New R,BonNr,Count,LD,Input,zb,Quit,SelFakt Set (BonNr,Count)=0 Do INIT^vhLIST("FLOWFAKT","BONSEL",.LD) For Set BonNr=$O(^KUL(KLNr,"F",BonNr)) Quit:'BonNr Do .Quit:$$CHECKWMS^FLOW(,,,,BonNr) .;Quit:$$ISORGAL^FLOWCHK("L",BonNr) ; Tijdelijk geen ORGALUX factureren:PV .If IsBulk,$P(^KUL(KLNr,"F",BonNr,1),D,38)'=BulkGroep Quit .If $L($G(BulkGroep)),$$ISTERUGN^FLOWBON5(BonNr) Quit ; Terugnames niet tonen bij bulkfacturatie .Do RecalcCommKort^FLOWMANL("KUL",KLNr,BonNr) .Set Count=Count+1,BonNr(Count)=BonNr .Set:BonNr=$G(AutoSel) LD("SELECT")=Count,SelFakt=$P(^KUL(KLNr,"F",BonNr,1),D,12) If $L(BulkGroep) Do SortBon(.BonNr,BulkGroep,.AutoSel) Do WRITE^vhLIST(.LD) For Set Input=$S(EENOPERF&$D(Fakt):"F",$G(SelFakt):"ENTER",1:$$SCROLL^vhLIST(.LD)) Do Quit:Quit .Kill SelFakt .Set Quit="\-\,\F\"[(D_Input_D) Quit:Quit .Quit:'$O(BonNr("")) .Set BonNr=BonNr(LD("SELECT")) .If Input="COM" Do CALL^vhMenu("FLOWFAKT","E*") .If Input="SPEC" Do CALLSPEC^vhMenu(LD("POS")+LD("SELECT")_";80","FLOWFAKTSP") .Set:Input="S" Input="-" .Set Quit="\-\,\F\"[(D_Input_D) Quit:Quit .Set:"\COM\SPEC\"[(D_Input_D) Input="" .Do EXEC^vhMenu("FLOWFAKT",.Input) .;If EENOPERFOL,$D(Fakt),$D(UTF(BonNr)),$$ISORGAL^FLOWCHK("L",BonNr) Set Input="F",Quit=1 Quit Input ; SortBon(BonNr,BulkGroep,AutoSel) New Sort,SortKey,Count,RefDate,BonDate If $G(AutoSel) Set RefDate=$$INTDATE^vhLib.DataTypes($P(^KUL(KLNr,"F",AutoSel,1),D,2)) For Count=1:1 Quit:'$D(BonNr(Count)) Do . Set BonNr=BonNr(Count) . If $L($P(^KUL(KLNr,"F",BonNr,1),D,38)) Set SortKey=$S($P(^KUL(KLNr,"F",BonNr,1),D,38)=BulkGroep:10,1:30) . Else Set BonDate=$$INTDATE^vhLib.DataTypes($P(^KUL(KLNr,"F",BonNr,1),D,2)),SortKey=$S(BonDate0,K>0 Quit ..Set PlusMinOk=0 If K="" Set:'$P($P(X,D,13),"#",2) X=$P(X,D,1,12)_D_"0#"_$P($P(X,D,13),"#",2,3)_D_$P(X,D,14,99),^KUL(KC,"F",UR,1)=X Else If "-,"'[K Set X=$P(X,D,1,12)_D_K_"#"_$S('K:"",1:1)_"#"_$P($P(X,D,13),"#",3)_D_$P(X,D,14,99),^KUL(KC,"F",UR,1)=X Set FP=2101 Write @F,@F1 If $G(Refresh),K'="-",K'="," Do LINE^vhLIST(.LD,LD("SELECT")) Quit K ; ; CHECK(UR) New X,Check Set Check=1 Set X=^KUL(KC,"F",UR,1),KCN=$P(X,D,6),UEB=$P(X,D,14),UVM=$P(X,D,18) Set USB=$P(X,D,25),UNBP=$P(X,D,27),VWT=$P(X,D,29),UREMB=+$P(X,D,39),(KFA,KLA)=0 Set:$D(^KUL(KC,"F",UR,2)) KFA=$P(^KUL(KC,"F",UR,2),D,1,8) Set:$D(^KUL(KC,"F",UR,3)) KLA=$P(^KUL(KC,"F",UR,3),D,1,8) Set:USB="" USB=" " Set ORLU=$$ISORGAL^FLOWCHK("L",UR) Do .If USB="M",VWT'[VWTX D M12 Set Check=0 Quit .If USB="P",VWT'[VWTX D M13 Set Check=0 Quit .If USB="M"!(USBX="M"),USB'[USBX D M10 Set Check=0 Quit .If USB="P"!(USBX="P"),USB'[USBX D M11 Set Check=0 Quit .If EENOPERFOL,$D(UTF),$$ISORGAL^FLOWCHK("L",UR) D M17 Set Check=0 Quit .If KCF=""!(KCN=KCF)&(UFA=""!(UFA=KFA))&(VM=0!(VM=UVM))&(UVB=0!(UVB=UEB))&(XLA=""!(XLA=KLA))&(NBP=0!(NBP=UNBP))&(XOL=""!(XOL=ORLU))&(REMB=""!(REMB=UREMB)) .Else Do @$S(UVB'=UEB:"M7",VM'=UVM:"M6",XLA'=KLA:"M8",NBP'=UNBP:"M9",XOL'=ORLU:"M15",REMB'=UREMB:"M16",1:"M3") Set Check=0 Quit Check ; MARK New R Set R=^KUL(KLNr,"F",BonNr,1),$P(R,D,12)=$S($P(R,D,12):"",1:1) Set ^KUL(KLNr,"F",BonNr,1)=R If $D(Fakt(BonNr)) Do S5(KLNr,BonNr,"-") Kill Fakt(BonNr) Do LINE^vhLIST(.LD,LD("SELECT")) Quit ; RPLKL(KLNr) New R Do STORE^vhTERMINA() Set R=$$RAADPL^KLANT(KLNr,"L",1) Do REFRESH^vhTERMINA() Do WRITE^vhLIST(.LD) Quit ; SELALL(KC) New R,X,UR,Ok,Exit Do MOVE^vhLIST(.LD,"HO","") Set BonNr=BonNr(LD("SELECT")),Ok=1 For Do Quit:Exit .Do:'$D(Fakt(BonNr)) ..Set UR=BonNr ..Set R=$$PORT(KC,UR),Ok=R'="-" ..Quit:'Ok ..Do S5(KC,UR) ..Set $P(^KUL(KC,"F",UR,1),D,12)="",UTF(UR)="" ..Do LINE^vhLIST(.LD,LD("SELECT")) .Set Exit='Ok .Set:'Exit Exit=LD("SELECT")=LD("MAX") .Do:Ok ..Do MOVE^vhLIST(.LD,"DO","") ..Set BonNr=BonNr(LD("SELECT")) Quit ; NEXT(KC,UR) New R,X,Ok,FUR Set Ok=0,FUR=UR For Set UR=$O(^KUL(KC,"F",UR)) Quit:UR=FUR Do Quit:Ok .Quit:'UR .Quit:$$CHECKWMS^FLOW(,,,,UR) .Do:'$D(Fakt(UR)) ..Set X=^KUL(KC,"F",UR,1),KCN=$P(X,D,6),UEB=$P(X,D,14),UVM=$P(X,D,18) ..Set USB=$P(X,D,25),UNBP=$P(X,D,27),VWT=$P(X,D,29),UREMB=+$P(X,D,39),KFA=0 ..Set:$D(^KUL(KC,"F",UR,2)) KFA=$P(^KUL(KC,"F",UR,2),D,1,8) ..Set:$D(^KUL(KC,"F",UR,3)) KLA=$P(^KUL(KC,"F",UR,3),D,1,8) ..Set:USB="" USB=" " Set ORLU=$$ISORGAL^FLOWCHK("L",UR) ..If USB="M",VWT'[VWTX Quit ..If USB="P",VWT'[VWTX Quit ..If USB="M"!(USBX="M"),USB'[USBX Quit ..If USB="P"!(USBX="P"),USB'[USBX Quit ..If EENOPERFOL,$D(UTF),$$ISORGAL^FLOWCHK("L",UR) Quit ..If KCF=""!(KCN=KCF)&(UFA=""!(UFA=KFA))&(VM=0!(VM=UVM))&(UVB=0!(UVB=UEB))&(XLA=""!(XLA=KLA))&(NBP=0!(NBP=UNBP))&(XOL=""!(XOL=ORLU))&(REMB=""!(REMB=UREMB)) Set Ok=1 Quit $S(Ok:UR,1:0) ; CHKREMB(KLNr,Bons) New R,BONNr,Extra Set BONNr="" For Set BONNr=$O(Bons(BONNr)) Quit:BONNr="" Do .Set R=^KUL(KLNr,"F",BONNr,1),Extra=$P(R,D,11) .If Extra Do ..Do ENDEXTRA^REMBOURS(KLNr,BONNr,0) .Else If $$ISREMB^REMBOURS(KLNr) Do REMBFAKT^REMBOURS(KLNr,BONNr) Quit ; ; Afsluiten van eventuele klacht KLACHT(KLNr,Type,FANr,Bons) New R,BONNr,KlachtId,Close Set BONNr="",Close("AUTO")=1 For Set BONNr=$O(Bons(BONNr)) Quit:BONNr="" Do .Set KlachtId="" .For Set KlachtId=$O(^KlachtI("B",BONNr,KlachtId)) Quit:KlachtId="" Do ..Set R=$G(^KlachtD(KlachtId)) ..Quit:$P(R,D)'="K" Quit:$P(R,D,2)'=KLNr ..Quit:$P(R,D,31)<$$CALCDATE^vhLib.DataTypes(,"J",-1) ; Klacht is meer dan een jaar oud (i.v.m. rotatie orders en leveringen) ..Set ^KlachtD(KlachtId,"R",$O(^KlachtD(KlachtId,"R",""),-1)+1)=Type_"#"_FANr ..Do BLDIND^KLACHT(KlachtId) ..Do:$$CHKCLOSE(KlachtId,.Bons) CLOSE^KLACHTO(KlachtId,.Close) Quit ; ; Controle of een klacht automatisch mag gesloten worden CHKCLOSE(KlachtId,Bons) New I,R,Close,ORDNr,BONNr,FANr Set Close=1 For I=1:1 Set R=$G(^KlachtD(KlachtId,"R",I)) Quit:R="" Do Quit:'Close .Do:$P(R,"#")="O" ..Set ORDNr=$P(R,"#",2),R=$G(^KO1(ORDNr,"F")) ..Quit:'$L(R) ; order is verwijderd ..Set BONNr=$P(R,D,2) ..If 'BONNr Set Close=0 Quit ; order nog niet op bon ..Set R="B#"_BONNr .Do:$P(R,"#")="B" ..Set BONNr=$P(R,"#",2) ..Quit:$D(Bons(BONNr)) ; BONNr is opgenomen in de te factureren bons ..Set R=$G(^KU1(BONNr,"F")) ..Quit:'$L(R) ; bon is verwijderd ..Set FANr=$P(R,D,2) Set:'FANr Close=0 Quit Close ; ; Verzendwijze VERZW(BONNr) New VerzW,Transporteur,Transport,BulkGroep Set Transporteur=$$TRANSPORT^ULTOER(BONNr,2) If $L(Transporteur) Set Transport=$P($$FDATA(X,8),";"),BulkGroep=$$FDATA(X,38),VerzW=Transporteur_" ("_$S($L(Transport):"TP"_Transport,1:BulkGroep)_")" Else Set VerzW=$P($$FDATA^KF20(X,7),"#",2) Quit VerzW ; ; Verwerking van de recupereerbare verpakking RecuPak(FANr,BONNrs,FactuurDatum) New R,BONNr,KLNr,AskVarVerpAantal,VerpakPRNr Set BONNr="" For Set BONNr=$O(BONNrs(BONNr)) Quit:BONNr="" Do . Set KLNr=+^KU1(BONNr,"F"),(VerpakPRNr,AskVarVerpAantal)="" . For Set VerpakPRNr=$O(^KUL(KLNr,"F",BONNr,"VP",VerpakPRNr)) Quit:VerpakPRNr="" Do Quit:AskVarVerpAantal . . Set R=^KUL(KLNr,"F",BONNr,"VP",VerpakPRNr) . . Set AskVarVerpAantal='$P(R,D,3) Set:AskVarVerpAantal AskVarVerpAantal='$P(R,D,5) ; Aantal geleverd en aantal terug=0 . Do ##class(BL.Flow.RecuPak.Main).AddHistFromFaktuur(FANr,BONNr,FactuurDatum,AskVarVerpAantal) Quit ; ; Verwerking servo-drive (invullen van het factuurnummer) ChargeTraceFactuur(FANr) New R,BONNr,ChargeTraceID,ErrStr Set BONNr="U" For Set BONNr=$O(^KFA("F",FANr,BONNr)) Quit:$E(BONNr)'="U" Do . Set BLNr=100 . For Set BLNr=$O(^KFA("F",FANr,BONNr,BLNr)) Quit:BLNr="" Do . . Set R=^KFA("F",FANr,BONNr,BLNr),ChargeTraceID=$P(R,D,43) . . Quit:'ChargeTraceID . . Set ErrStr=##class(ProdHist.ChargeTrace).SetFactuurNr(ChargeTraceID,FANr) Quit ; ; Verwerking servo-drive (invullen van het proformanummer) ChargeTraceProforma(PROFNr) New R,BONNr,ChargeTraceID,ErrStr Set BONNr="U" For Set BONNr=$O(^KFAP("F",PROFNr,BONNr)) Quit:$E(BONNr)'="U" Do . Set BLNr=100 . For Set BLNr=$O(^KFAP("F",PROFNr,BONNr,BLNr)) Quit:BLNr="" Do . . Set R=^KFAP("F",PROFNr,BONNr,BLNr),ChargeTraceID=$P(R,D,43) . . Quit:'ChargeTraceID . . Set ErrStr=##class(ProdHist.ChargeTrace).SetFactuurNr(ChargeTraceID,PROFNr) Quit ; ; Geef alle ongelezen ankers eventueel tot klant beperkt ; Indien BONNrs doorgegeven dan productafhankelijke ankers, anders de productonafhankelijke GetKennisAnker(KLNr, BONNrs, InclGeneral) New PRNr,lbProduct,BONNr,BLNr,varErrStr Set InclGeneral=$G(InclGeneral) Set BONNr="" For Set BONNr=$O(BONNrs(BONNr)) Quit:BONNr="" Do . Set BLNr=100 . For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Do . . Set PRNr=$P(^KUL(KLNr,"F",BONNr,BLNr),D,2) . . Set:PRNr $LI(lbProduct,$LL($G(lbProduct))+1)=PRNr Quit ##class(BL.Derde.Kennis.Kennis).GetIDsToPopup(KLNr,.varErrStr,$LB($$$adOrderVerwerkingFacturatie),$G(lbProduct),$G(CUserId,$G(QU(1))),,,InclGeneral) ; ; Toon alle ongelezen ankers eventueel tot klant beperkt ; Indien BONNrs doorgegeven dan productafhankelijke ankers, anders de productonafhankelijke ShowKennisAnker(KLNr, BONNrs, InclGeneral) New PopUp,PRNr,lbProduct,BONNr,BLNr Set InclGeneral=$G(InclGeneral) Set BONNr="" For Set BONNr=$O(BONNrs(BONNr)) Quit:BONNr="" Do . Set BLNr=100 . For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Do . . Set PRNr=$P(^KUL(KLNr,"F",BONNr,BLNr),D,2) . . Set:PRNr $LI(lbProduct,$LL($G(lbProduct))+1)=PRNr Set PopUp("Buttons")="GELEZEN;ANNULEER" Set PopUp("Titel")="Ongelezen" Set PopUp("KLNr")=KLNr,PopUp("List")=1 Set PopUp("Criteria",2)=KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2) If InclGeneral,KLNr'=4682 Set PopUp("Criteria",3)=4682_" "_$P(^KKL(^KK1(4682),0),D,2) Quit ##class(CHUI.Derde.Kennis.Kennis).PopUp(KLNr,$LB($$$adOrderVerwerkingFacturatie),$G(lbProduct),$G(CUserId,$G(QU(1))),,,InclGeneral,,,.PopUp) ; ; Controle van de facturatiefrequentie CheckFactFreq(KLNr,FactDag) New OkToFact,FactFreq,IsFactDag,TekstPopTekst,LastFactDag,FactKLNr Set FactKLNr=$$FactCust^FLOW(KLNr) Set OkToFact=1,FactFreq=$$GetFactFreq^FactFreq(FactKLNr,FactDag) Do:$L(FactFreq) . Set IsFactDag=$$IsFactDag^FactFreq(FactFreq,FactDag) . If 'IsFactDag Set TekstPopTekst=$S(FactDag=+$H:"Vandaag",1:$$EXTDATE^vhLib.DataTypes(FactDag,"DC"))_" "_$$EXTDATE^vhLib.DataTypes(FactDag)_" is dus geen facturatiedag!!!" . Else If $E(FactFreq)="V",$D(^KFA1("F",FactKLNr)) Do . . Set LastFactDag=-$O(^KFA1("F",FactKLNr,"")) . . Set:LastFactDag'<$$CALCDATE^vhLib.DataTypes(FactDag,"W","FD") TekstPopTekst="Laatste factuurdatum "_$$EXTDATE^vhLib.DataTypes(LastFactDag) ; Er is deze week reeds gefactureerd . Set:$L($G(TekstPopTekst)) OkToFact=$$^vhTXTPOP("KF20","FACTFREQ"_$S(KLNr=FactKLNr:"",1:2),"",$P(^KKL(^KK1(KLNr),0),D,2),$$Display^FactFreq(FactFreq),TekstPopTekst,$P(^KKL(^KK1(FactKLNr),0),D,2)) . If OkToFact,FactFreq="N" Set OkToFact=$$ASK^vhWACHTW("PROGMODE",,,0) ; Indien facturatiefrequentie is 'NOOIT' toelating vragen aan PV of CW Quit OkToFact ; ; Nazicht of minstens een lijn van de factuur een waarde zal hebben IsZero(KLNr,BONNrs) New R,IsZero,BONNr,BLNr,CheckedBonnrs Set (BONNr,CheckedBonnrs)="",IsZero=1 For Set BONNr=$O(BONNrs(BONNr)) Quit:BONNr="" Do Quit:'IsZero . Set CheckedBonnrs=CheckedBonnrs_","_BONNr,BLNr=99 . For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Set R=^KUL(KLNr,"F",BONNr,BLNr),IsZero='$P(R,D,9) Quit:'IsZero Do:IsZero . Set $E(CheckedBonnrs)="" . Set:$L(CheckedBonnrs,",")>9 CheckedBonnrs=$P(CheckedBonnrs,",",1,9)_",..." . Set IsZero='$$^vhTXTPOP("KF20","CHKZERO","",$P(^KKL(^KK1(KLNr),0),D,2),CheckedBonnrs) ; Mag deze nul factuur toch opgemaakt worden? Quit IsZero ; ; Opslaan voor mail naar boekhouding indien klant met 'automatisch incasso' CheckIncasso(FANr) New KLNr,Incasso Set KLNr=$P($G(^KFA("F",FANr,0,0)),D) If KLNr { Set Incasso=$P(^KKL(^KK1(KLNr),0),D,23) If Incasso=1,$$LAND^vhRtn1(KLNr,"K",1)="NL" Set ^HULP("Incasso",FANr)="",$P(^KFA("F",FANr,0,3),D,26)=1 } Quit ; ; Print en archiveren facturen en proforma's PrintAndFileDoc(Document,DocNum) New PrintAndFileOk,KLNr,PDFLink,Exemplaren,MailOrigineel,ProcessorFlag,DocIsProforma If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("KF20_MagPrintenEnArchiveren") Do ; Enkel op 'DEN ADMIN' . Set DocIsProforma=($G(Document)="P") . If DocIsProforma Set KLNr=$P(^KFAP("F",DocNum,0,0),D),PDFLink=$P(^KFAP("F",DocNum,0,3),D,18) . Else Set KLNr=$P(^KFA("F",DocNum,0,0),D),PDFLink=$P(^KFA("F",DocNum,0,3),D,18) . If $L(PDFLink),$$^vhTXTPOP("KF20","ARCHIVEER","",$S(DocIsProforma:"Proforma",1:"Factuur"),$$EXTNUM^vhLib.DataTypes(DocNum,0,".",0),$P(^KKL(^KK1(KLNr),0),D,2),PDFLink) Set PDFLink="" ; Document is reeds gearchiveerd . Do:PDFLink="" . . If DocIsProforma,'$$CheckPrintProforma^DCFOP(DocNum) Quit ; Proforma welke niet moet worden afgedrukt (Proforma's moeten nooit gearchiveerd worden) . . Set Exemplaren=$$Exemplaren^DCFOP(KLNr) . . Set MailOrigineel=($E($P(^KKL(^KK1(KLNr),1),D,2))="@")||($select(DocIsProforma:0,1:##class(APPS.OV.ElektronischVersturenFacturenService).%New().WordtElektronischVerstuurd(DocNum))) . . Quit:(DocIsProforma)&&(MailOrigineel) ; Deze proforma zal gemaild worden; moet dus niet afgeprint worden; en aangezien proforma's ook niet gearchiveerd worden, moet er hier dus niks meer gebeuren. . . Set:MailOrigineel Exemplaren=$S(Exemplaren["A":"A",1:"") ; Indien mail enkel origineel 'O' voor archive en eventueel 'A' voor copie aan . . Set ProcessorFlag="AO;PP" . . If MailOrigineel,Exemplaren="" Set ProcessorFlag="AO" . . Set PrintAndFileOk=##class(BL.Flow.Factuur.Doc).PrintAndFileDoc(DocNum,.Document,Exemplaren,ProcessorFlag) . . ;Set PrintAndFileOk=##class(BL.Flow.Factuur.Doc).PrintAndFileDoc(DocNum,.Document,Exemplaren,"PP") ; Om enkel te printen . . If $$$ISERR(PrintAndFileOk) Do . . . Do WARN^vhTXTPOP("PrintAndFileDoc failed: ~"_$$ParseStatus^vhLib(PrintAndFileOk),"") . . . Set PrintAndFileOk=0 . . Else Do PRINT^LOG($S(DocIsProforma:"PROF",1:"FAKT"),DocNum,"P") Quit $G(PrintAndFileOk) ; ; Herarciveren van facturen ReArchive(FANr) New FilePath,Exists,Result,Archive,FactDate,Text,Buttons If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("KF20_MagPrintenEnArchiveren") Do ; Enkel op 'DEN ADMIN' . Set FilePath=##class(BL.Flow.Factuur.Doc).ArchiveFullPathUser(FANr) . Do:$L(FilePath) . . Set Exists=##class(%File).Exists(FilePath) . . Quit:'Exists . . Set Result=##class(%File).Delete(FilePath) . . Write:'Result $$$ERROR($$$GeneralError,"Could not delete file/dir/pattern: "_FilePath) . Set Archive=##class(BL.Flow.Factuur.Doc).PrintAndFileDoc(FANr,"F","O","AO") . ; Controle van de gearchiveerde facturen . Set FactDate=$P(^KFA("F",FANr,0,0),D,6) . Set Text(1)="Gelieve enkele ogenblikken te wachten" . Set Text(2)="en vervolgens de controle op te starten." . Set Text(3)="" . Set Text(4)="Do ##class(CHUI.Flow.Factuur).CheckDatum("""_FactDate_""","""_FactDate_""")" . Set Text(5)="" . Set Text(6)="Wenst u de controle nu op te starten?" . Set Buttons(1)="Starten&1",Buttons(2)="Later&*" . If $$WILD^vhTXTPOP("C;C","","Text","Buttons") Do ##class(CHUI.Flow.Factuur).CheckDatum(FactDate,FactDate) Quit ; ; Verwijderen archief van facturen DeleteArchive(FANr) New FilePath,Exists,Result If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("KF20_MagPrintenEnArchiveren") Do ; Enkel op 'DEN ADMIN' . Set FilePath=##class(BL.Flow.Factuur.Doc).ArchiveFullPathUser(FANr) . Do:$L(FilePath) . . Set Exists=##class(%File).Exists(FilePath) . . Quit:'Exists . . Set Result=##class(%File).Delete(FilePath) . . Write:'Result !,"Factuur:",FANr," - Could not delete file/dir/pattern: "_FilePath Quit ;