#include vhLib.Macro #define TAB *9 #define FAIL 0 #define OK 1 #define OLD 2 // Haalt gegevens over gefactureerde TBX laden uit de orderlijnen van KFA. Het verpakkingstype // wordt mee weggeschreven. De gevraagde week is de week zoals ingevuld in de orderlijnen // (typisch door OV, rekening houdend met productiedelay). // // Verpakkingstype kan "OLD" zijn. Dit is het geval als de factuur verwijst naar een product // dat niet meet in de database zit (typisch worden producten ouder dan 6 maanden of zo // verwijderd). // // Als de kenmerken niet gekend zijn, wordt "?" als verpakkingstype gegeven. Dis is het geval voor sifonlades // besteld door Group Nivelles. Dit was een oude manier van ingeven en is sinds januari 2010 vervangen door // een ander systeem. De oude producten hadden geen kenmerken. // // Hieruit kan men volgende info halen: // - Historische verdeling V1/Pallet/Comm/Vhoss // - Trends verkoop vd verschillende verpakkingstypes // - Absolute verkoopcijfers per week // // Update 05/02/2010: geeft nu ook info over binnenladen, sifonladen, spoelbakladen en tip-on. // TBXFact Set Dev=0 Set Dev=$$OPEN^vhDEV(,"TBXFAKT.TXT","W","T") Use Dev ; Begin met een header W "Gevraagde week FakNr Factuurmaand Factuurjaar Klant PRNr SubGT Aantal VPK BM LT KLAS", ! Kill PRNotFound Do FactInfo(100000,199999,.PRNotFound) ; Boekhoudjaar 2010 Do FactInfo(900000,999999,.PRNotFound) ; Boekhoudjaar 2009 Do FactInfo(800000,899999,.PRNotFound) ; Boekhoudjaar 2008 Do FactInfo(700000,799999,.PRNotFound) ; Boekhoudjaar 2007 Do CLOSE^vhDEV(Dev) Quit FactInfo(VanNr,TotNr,PRNF) ; Verzamel gegevens over alle facturen binnen het opgegeven bereik van factuurnummers ; Set FAKNr = VanNr For Set FAKNr=$O(^KFA("F",FAKNr)) Quit:FAKNr="" Do Quit:FAKNr>TotNr .Set Rec=^KFA("F",FAKNr,0,0) .Set Dat=$P(Rec,D,6) .Set Mnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(Dat),"M","FD"),"DM4") .Set KLNr=$P(Rec,D,1) .Set KLNaam=$P(^KKL(^KK1(KLNr),0),D,2) .Set ULNr="U" .For Set ULNr=$O(^KFA("F",FAKNr,ULNr)) Quit:ULNr="" Do ..Set LNr=100 ..For Set LNr=$O(^KFA("F",FAKNr,ULNr,LNr)) Quit:LNr="" Do ...Set FRec=^(LNr) ...Set PRNr=$P(FRec,D,2) ...Set Type=$P(FRec,D,17) ...Set LevTerm=$P(FRec,D,25) ...Quit:(Type'["KF6") ...Set Qty=$P(FRec,D,3) ...Set GenTyp=$$GENTYP^HAD(PRNr,1) ...Quit:($P(GenTyp,$$$D)'="TBX") ...// Determine VPK. ...Set res = $$GetProdKenm(PRNr, .arKenm) ; Get kenmerken ...Set VPK = $S(res=$$$OK: arKenm("VPK"), res=$$$OLD: "OLD", 1:"?") ...Set BM = $S(res=$$$OK: arKenm("BM"), res=$$$OLD: "OLD", 1:"?") ...Set KLAS = $S(res=$$$OK: arKenm("KLAS"), res=$$$OLD: "OLD", 1:"?") ...Set LT = $S(res=$$$OK: arKenm("LT"), res=$$$OLD: "OLD", 1:"?") ...W:(Qty>0) LevTerm, $$$TAB, FAKNr, $$$TAB, $P(Mnd,".",2), $$$TAB, $P(Mnd,".",1), $$$TAB, KLNaam, $$$TAB, PRNr, $$$TAB, $P(GenTyp,$$$D,2), $$$TAB, Qty, $$$TAB, VPK,$$$TAB, BM, $$$TAB, LT, $$$TAB, KLAS, ! Quit TBXMnd New arKenm Set EndMnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M",-1),"DM4")_" " Set StartMnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M",-47),"DM4")_" " Write "Periode: ",StartMnd," - ",EndMnd,! Set Dev=$$OPEN^vhDEV(,"TBXMnd.txt","W","T") Use Dev Set PRNr=0 Write "Maand Jaar GenTyp SubGT PRNr KLNr KLNm Regio Qty VPK",! For Set PRNr=$O(^KSTPR(PRNr)) Quit:PRNr="" Do . Set GenTyp=$$GENTYP^HAD(PRNr,1) . Quit:$P(GenTyp,"\")'="TBX" . Set KLNr=0 . For Set KLNr=$O(^KSTPR(PRNr,KLNr)) Quit:KLNr="" Do . . Set Mnd=StartMnd . . For Set Mnd=$O(^KSTPR(PRNr,KLNr,Mnd)) Quit:Mnd="" Do . . . Set Qty=$P(^KSTPR(PRNr,KLNr,Mnd),"\",1) . . . Quit:+Qty<1 . . . Set res = $$GetProdKenm(PRNr, .arKenm) ; Get kenmerken . . . Set VPK = $S(res=$$$OK: arKenm("VPK"), res=$$$OLD: "OLD", 1:"?") . . . Set KLNm=$P(^KKL(^KK1(KLNr),0),D,2) . . . Set Regio=$P(^KKL(^KK1(KLNr),0),D,20) . . . Set MndDag=$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(Mnd,"DM4"),"DKP"),".","-") . . . Write $P(MndDag,"-",2), *9, $P(MndDag,"-",3),*9,$P(GenTyp,"\",1),*9,$P(GenTyp,"\",2),*9,PRNr,*9,KLNr,*9,KLNm,*9,Regio,*9,$P(Qty,"\",1),*9,VPK,! Do CLOSE^vhDEV(Dev) Quit GetProdKenm(PRNr, arKenm) ; arKenm als .local Kill arKenm Quit:$G(^KPR(PRNr,0))="" $$$OLD Set arKenm("KT")=$P(^KPR(PRNr,0),$$$D,1) Set arKenm("DS")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DS")) ; Design Quit:arKenm("DS")="" $$$FAIL Set arKenm("DC")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DC")) ; Designcode Set arKenm("LD")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD")) ; Ladediepte Set arKenm("IB")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IB")) ; Internebreedte Set arKenm("LC")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC")) ; LadeCode Set arKenm("LT")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LT")) ; LadeType Set arKenm("RH")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"RH")) ; Rughooogte Set arKenm("KL")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KL")) ; Kleurlade Set arKenm("DK")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK")) ; Draagkracht Set arKenm("KLAS")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS")) ; Klasse (Spoelbak, Lade, ...) Set arKenm("BIN")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BIN")) ; Binnenlade Set arKenm("DK")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK")) ; Draagkracht Set arKenm("KB")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KB")) ; Kleurbodem Set arKenm("VPK")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) ; Verpakking Set arKenm("IsSR")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IsSR")) ; Stalenrug Set arKenm("BS")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BS")) ; Boxside Set arKenm("KV")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KV")) ; Kleurvulling Set arKenm("BM")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BM")) ; Blumotion Set arKenm("ASM")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ASM")) ; Antislipmat Set arKenm("FS")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"FS")) ; Frontbevestiging Set arKenm("BGRP")=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BGRP")) ; Binnengreep Quit $$$OK