Proxy-klasse voor een Leveringsbon BL.Sys.FOP.Common,BL.Flow.Doc.Common,vhLib.Macro,BL.Derde.KlantSpecifiek 1 %RegisteredObject,%XML.Adaptor 0 LEVERINGSBON Datum van creatie van het document %Library.String Steeds "Leveringsbon" %Library.String Type van de leveringsbon: L/T/M/P (Leveringsbon/TerugnameBon/Monster/Proforma) %String %Library.String %Library.String %Library.String %Library.String %String %Library.String %Library.String %Library.String Type: Industrie of KS-klant %Library.String %Library.String %Library.String %Library.String BL.FOP.Derde.pxLevAdres BL.FOP.Derde.pxAfzenderHoofding %Library.String %String %Integer %Library.String %Library.Integer %String %String list %String %String %String BL.Flow.Proxy.pxFSC BL.FOP.Basis.pxTekstHTML list BL.FOP.Basis.pxTekstHTML list %Integer BL.FOP.Basis.pxAttribUnit pxLevOrd list pxLevRecuPak list pxLevRembours %String %String BL.Flow.Proxy.pxPPODfields Header : contact gegevens %String Aanmaken van een Levering-proxy object (LeveringsBon) s px=##class(BL.Flow.Proxy.pxLevering).Create(320305,0,"F","","",.status) do ProxyToXMLFile^vhLib(px,"\\notes01\shared\p v e\leveringsbon.xml","DOCS",1,1) 1 pxLevering Leveringsbon invullen BONNr:%String,blnShowRembours:%Boolean=0,FactSoort:%String,lbPPODKeywords:%List,Opties:%String %Status 0)&&($TR(..VERZENDWIJZE," ")'=$$$VerzendwijzeGLS)&&(FactSoort="F") ..BuildRemboursData(BONNr) // Lock terug afzetten Lock -^UL("SORT",BONNr) Quit $$$OK flbAddNewOrder(Rec) Set pxOrd=##class(pxLevOrd).%New() Do pxOrd.FillViaRec(Rec) Do ..ORDERS.Insert(pxOrd) Quit pxOrd flbSortOrder(KLNr,FactSoort,BONNr,Sort,CumulTBX) ; Sort via .Local Kill Sort Set OLNr=100,GroepCnt=$A("A"),(TempKlOL,TextBlock)="" For Set OLNr=$O(^KUL(KLNr,FactSoort,BONNr,OLNr)) Quit:'OLNr Do . Set RecL=^KUL(KLNr,FactSoort,BONNr,OLNr) . If KLNr=$$$KlantKeller Do . . Set CumulTBX=1 ; Tijdelijk voor Keller TBX vast op cumul . . Set KlOLNr=$P(RecL,"\",35) Set:$P(RecL,"\",17)="KF5" GroepCnt=GroepCnt+1 . . Do:KlOLNr="" . . . If $P($P(RecL,"\",17),"#")="KF11" Set:TextBlock="" TextBlock=$P($P(RecL,"\",18),";") . . . Else If $P(RecL,"\",17)="KF5" Set KlOLNr=" " . . . Else If $P($P(RecL,"\",17),"#")="KF1925" Set KlOLNr=TempKlOL . . Set $P(KlOLNr,".")=$J($P(KlOLNr,"."),3),PRNr=$P(RecL,"\",2) . . If $G(CumulTBX),PRNr,$$ISTBX^PRODUKT2(PRNr) Do . . . Set SortKey=$C(GroepCnt)_"~"_$$SORTKEY^PRODUKT(PRNr)_"~"_$P(RecL,"\",6) ; Indien prijs verschillend, dan opsplitsen . . . For I=3,9,10,16 Set $P(RecL,"\",I)=$P(RecL,"\",I)+$P($G(Sort(SortKey)),"\",I) . . Else Set SortKey=$C(GroepCnt)_"~"_KlOLNr_"~"_OLNr . . Set Sort(SortKey)=RecL . . Set TempKlOL=KlOLNr . . If $P($P(RecL,"\",17),"#")="KF11",TextBlock'=$P($P(RecL,"\",18),";") Set GroepCnt=GroepCnt+1 . Else Do ; Alle andere klanten . . Set Sort(OLNr)=RecL Quit flbAlgemeen ; (KLNr,KLID,Taal,FactSoort,BONNr) Set Rec=$G(^KUL(KLNr,FactSoort,BONNr,1)) Set Rec3=$G(^KUL(KLNr,FactSoort,BONNr,3)) Set Taal=$S(+Rec3:$P(Rec3,"\",9), 1:$P($$$KLRec(0),"\",9)) ; Ophalen Taal uit Leveringsadres, indien aanwezig, anders uit klantdata Set:(Taal="") Taal="N" Set Munt=$P(Rec,"\",18) Set blnBruto=$P(Rec,"\",27) Set BonType=..CalcBonType(KLNr,BONNr,FactSoort) Set ProfFact="" Set:($P(Rec,"\",25)?1(1"P",1"M")) ProfFact=$S($P(Rec,"\",29)["P":2, 1:1) Set IsPlusMin=$$ISPLMIN^FLOWBON5(BONNr,FactSoort) Set Rembours=$$flbCalcRembours(KLNr,BONNr,FactSoort) Set CheckSumBon=$$flbCalcCheckSumBon(KLNr,BONNr,FactSoort) ;d WLIP^vhDBG(97,"LEV") ;d WLFMT^vhDBG("CheckSumBon: "_CheckSumBon,"W") ;Set MPBon=$P(Rec,"\",25) ;Do:(FactSoort="F") RecuPak^FLOWBON(BONNr) ; Enkel indien niet gefactureerd Set RecuPak=($D(^KUL(KLNr,FactSoort,BONNr,"VP")))&&('IsBlum)&&('IsVH)&&('KlantIsAfzender) Set ..BONTYPE=BonType Set ..DOCDATUM=$$EXTDATE^vhDTyp($H) Set ..LEVERINGSNR=BONNr ; $E(BONNr,2,99) Set ..LEVERINGSDATUM=$P(Rec,"\",2) Set ..CheckDigitLevNr=$$CalcCDigit6^vhRtn2(BONNr) Set ..BarCodeBONNr=BONNr ; _$S(0:"."_CheckDigitLevNr, 1:"") ; Added by WimV on 22/07/2010 If 'KlantIsAfzender Do . Set ..KlantTelefoon=$P($$$KLRec(0),"\",13) Else Do . Set ..KlantTelefoon=$P(^KUL(KLNr,FactSoort,BONNr,3),"\",13) Set ..KlantType=$S($$ISKLANT^KS(KLNr):"K", 1:"I") ; KS of Industrie klant Set ..MUNT=Munt Set ..TAAL=Taal Set ..BRUTONETTO=$S(blnBruto:"B",1:"N") If 'KlantIsAfzender Set ..BTWNR=##class(BL.FOP.Derde.pxAdres).BtwNrTekst($P($$$KLRec(0),"\",16)) ;Set Beloofd = $S($L($P(Rec,"\",16)): $S($P(Rec,"\",23)="N":"N",1:$S('$P(Rec,"\",36):"B",1:"")),1:"") Set ..CodeBeloofd=$S($P(Rec,"\",16)="":"", $P(Rec,"\",23)="N":"N", '$P(Rec,"\",36):"B", 1:"") Set ..ISORGALUX=IsOrgalux Set ..ProfFact=ProfFact ; 1="Proforma", 2="Proforma volgt" Set ..IsPlusMin=IsPlusMin Set ..REMBOURS=Rembours ; 1="Te ontvangen", 2="Rembours" Set:('Rembours) ..Kontant=($P($$$KLRec(0),"\",18)="") ; Geen BetalingsVw voor klant If 'KlantIsAfzender Set ..CheckSumBon=CheckSumBon ; LEVADRES Set pxLAdr=##class(BL.FOP.Derde.pxLevAdres).%New() Do pxLAdr.FillViaKLNr(KLNr,Rec3,Taal) Set ..LEVADRES=pxLAdr If KlantIsAfzender Do ; bij de klant Scachmayer is de afzender SchacherMayer en niet Van Hoecke . Set pxAfzenderHoofding=##class(BL.FOP.Derde.pxAfzenderHoofding).%New() . Do pxAfzenderHoofding.FillViaKLNr(KLNr,Taal) . Set ..AfzenderHoofding=pxAfzenderHoofding . Set ..HeaderType="SCHACHERMAYER" Do:('IsBlum)&&('IsVH)&&('IsOrgalux) ..BuildRecuPak(KLNr,BONNr,FactSoort) ; Niet voor Blum, Van Hoecke of Orgalux Quit flbLevBonEnd ; (KLNr,BONNr,Taal,Rec,Rec3) ; TotaalBedrag If 'KlantIsAfzender Do . If (($G(LandISOCode)="")||'$P($G(^ISO(0,"ISO.LAND",LandISOCode,0)),"\",5))&&('ProfFact) Do ; Alleen factuurwaarde bepalen voor NIET EEG-landen . . Set Pariteit=$$MUNT^vhRtn1(Munt,,12) . . Set ..TotBedragNetto=Netto*Pariteit ; $$FN(Netto*Pariteit,$$MUNT^vhRtn1(,4)) . ; Factuur Aan . Set:(+Rec3)&&($$UPTRIMAN^vhRtn1(Naam)'=$$UPTRIMAN^vhRtn1($P(Rec3,"\",2))) ..FactuurAan=Naam ; $P(Rec3,"\",2) . ; Voorwaarden/Memo's . Do flbVoorWaarden ; (KLNr,BONNr,Taal,RecuPak) => geen tekstboodschappen bij Schachermayer ; Opmerkingen KL Set KLRec5=$$$KLRec(5) For I=3:1:5 Do:($L($P(KLRec5,"\",I))) ..Opmerkingen.Insert($P(KLRec5,"\",I)) ; Verzendwijze Set ..VERZENDWIJZE=$P($P(Rec,"\",7),"#",1) Set ..VERZENDWIJZEOMS=$P($P(Rec,"\",7),"#",2) ; Tekst Set ..VoorOntvangst=0 ; ($G(^KBA(156,Taal,1))'="") ; Boolean ; Handtekenen op afleveringsnota i.p.v. hier. ; Gewicht Set ..Gewicht=##class(BL.FOP.Basis.pxAttribUnit).Create($P($P(Rec,"\",13),"#",3),"kg") If Rembours Do ;Set T=T_$$TXT($S(Rembours=1:"Ontv",1:"Remb")) Set ..FSCData=##class(BL.Flow.Proxy.pxFSC).%New() Do ..FSCData.FSCViaLevering(BONNr,FactSoort,Taal) /*** *** / ; Verpakking Set VerpakType=$P(Rec,"\",30) Set VerpTxt=0 ; ; Port Set Port=$P($P(Rec,"\",13),"#",1,2) Set:(+Port)&&($P(Port,"#",2)) ..PORT=+Port /*** ***/ Quit flbCalcRembours(KLNr,BONNr,FactSoort) Quit ..CalcRembours(KLNr,BONNr,FactSoort) flbCalcCheckSumBon(KLNr,BONNr,FactSoort) Set blLevDoc=##class(BL.Flow.Levering.Doc).%New() ; Instantiate() Set CheckDigitBon=blLevDoc.CheckSumBon(BONNr,FactSoort,KLNr) Set blnLevDoc="" Quit CheckDigitBon flbVoorWaarden ; (KLNr,BONNr,Taal,RecuPak) Do ..BuildVoorWaarden(KLNr,BONNr,Taal,.RecuPak,.GlasProd) Quit flbPPODFields() Quit:($G(lbPPODKeywords)=$LB()) Set Ref="BON;"_BONNr Set pxPPOD=##class(BL.Flow.Proxy.pxPPODfields).Create($$$ppodtLevBon, $G(Regio," "), $G(Taal," "), $G(KLNr," "), Ref, " ", $G(Bijlage," "), $G(DocSort," "), $G(EnvelopKey," "), ) Do:($LL($G(lbPPODKeywords))) pxPPOD.FillFromLB(lbPPODKeywords) Set ..PPODFIELDS=pxPPOD Quit ]]> Toevoegen van de PalletIDs aan de omschrijving 1 Uit ^ORDW ophalen van proxy info en toevoegen aan proxy object 1 Embedded object LevRembours invullen BONNr:%String 0) Set pxLev=%this Set pxRemb=##class(pxLevRembours).%New() Set pxRemb.Rembours=pxLev.REMBOURS Set pxRemb.Taal=pxLev.TAAL Set pxRemb.Datum=$$EXTDATE^vhDTyp($H) Set pxRemb.LeveringsDatum=pxLev.LEVERINGSDATUM Set pxRemb.LeveringsNr=pxLev.LEVERINGSNR Set pxRemb.LevAdres=pxLev.LEVADRES Set pxRemb.Munt=Munt ; pxLev.MUNT Set pxRemb.Bedrag=$J(TeBet,0,2) Set pxRemb.DocSigner="Hendrik" Set ..RemboursData=pxRemb Quit /* * / Set R=^KU1(BONNr,"F"),KLNr=$P(R,D) Set IsRembKL=$$ISREMB^REMBOURS(KLNr) Set KlantInd=^KK1(KLNr),R=^KKL(KlantInd,0) Set Taal=$P(R,D,9) If Taal="" Set Taal="N" ;FTITEL Write $$TXT($S('IsRembKL:"Ontv",1:"Remb")) Write $$TXT("Date")_" "_$$EXTDATE^vhDTyp($H) ; $TR(DT,".","-") Set BonDat=$P(^KUL(KLNr,"F",BONNr,1),"\",2) ; $TR($P(^KUL(KLNr,"F",BONNr,1),"\",2),".","-") Set:(IsRembKL) T=$$TXT("Betr")_" : "_$$TXT("LevBon")_" "_$FN(BONNr,",")_" "_$$TXT("Van")_" "_BonDat Set T=$$TXT("Bovic") ; Aan de chauffeurs ;BODY Write $$TXT("Gel") ; Gelieve bij Set:'LevAdr T=T_$$FIRMANM^DCALG("K",KLNr) Set:LevAdr T=T_$$FIRMANM^DCALG(,,Naam,Aanspr,Land) ;Set LevAdr = LeveringsAdres van de LevBon If KLNr=8545,$L(T),$L(Toenaam) Set R=T,T=Toenaam,Toenaam=R If $L(Toenaam) Do .Do CACHE(""),PASTE(PCount,LCount,Toenaam,Allign,"","") Write Straat ; Do CACHE(""),PASTE(PCount,LCount,Straat,Allign,"","") Write PostNr_" "_Woonpl ; Do CACHE(""),PASTE(PCount,LCount,PostNr_" "_Woonpl,Allign,"","") If Land'="BE" Do CACHE(""),PASTE(PCount,LCount,$$LAND^vhRtn1(Land,2,Taal),Allign,"","") Set R=$$BON^REMBOURS(BONNr) Set TeBet=$P(R,D),Munt=$P(R,D,7) If TeBet'>0 Kill C Quit Set TeBet=$J(TeBet,0,2) Write $$TXT("TOntv") Write $$FN(TeBet,2)_Munt ;LFOOTER Set T=$$TXT("Dank") ; Dank bij voorbaat, Set T=$$TXT("Hendr") /* */ ]]> BonRec is piece-delimited string met de berekende bedragen voor de levering: [TeBet_D_Goederen_D_KontKrt_D_Btw_D_Port_D_Extra_D_Munt] BONNr:%String 0 %String Embedded object RecuPak invullen KLNr:%String,BONNr:%String,FactSoort:%String="F" Rembours bepalen voor deze bon: Geeft 0, 1 of 2 terug. 2: rembours-klant; 1: éénmalig "Te ontvangen" van Niet-rembours klant; 0:niet-rembours KLNr:%String,BONNr:%String,FactSoort:%String="F" 0 %Integer Type van de LeveringsBon bepalen Return values: L/T/M/P/ KLNr:%String,BONNr:%String,FactSoort:%String="F" %String LeveringsBon Voorwaarden ProcedureBlock doesn't allow use of $NAME(...) function KLNr:%String,BONNr:%String,Taal:%String,RecuPak:%String,GlasProd:%String 0 Is een Orgalux order ? 1 BONNr:%String 0 %Boolean