persistent vhLib.Macro DataM %Library.Persistent 0 Uniekheid index voor property ProductNr 1 ProductNr 1 0 A = 80% van de meest roterende producten B = 15% van de tweede meest roterende producten C = 5% van de minst roterende producten De klassificatie wordt opnieuw berekend door MOVE^PRABC De klassificatie wordt berekend op het (aantal faktuurlijnen/jaar) in ^KSTPR %Library.String 0 A = 80% van de producten met de meeste waarde B = 15% van de producten met de tweede meeste waarde C = 5% van de producten met de minste waarde De klassificatie wordt opnieuw berekend door VKP^PRABC De klassificatie wordt berekend op het (aantal verkocht/jaar * cifppl) in ^KSTPR %Library.String 0 Toeleveringen opgedeeld in drie velden door "#" 1. Aantal stock ++ KOM Format: Numeric: 7 2. Aantal stock Format: Numeric: 7 3. Aantal KOM Format: Numeric: 7 %Library.String 0 Reservatie opgedeeld in drie velden door "#" 1. Aantal Stock + KOM Format: Numeric: 7 2. Aantal Stock Format: Numeric: 7 3. Aantal KOM Format: Numeric: 7 %Library.String 0 %Library.String 0 Format: Char: 2 Waarde: E1,E2,...,H1,H2,... %Library.String 0 Format: Char: 2 Waarde: E1, E2,...,H1,H2,... %Library.String 0 Format: Char: 2 Waarde: E1,E2,...,H1,H2,... %Library.String 0 Format: Char: 2 Waarde: E1,E2,...,H1,H2,... %Library.String 0 Format: Numeric: 1 %Library.String 0 Popup: PRODUKT;PRBARCODE %Library.String 0 Format: 30 char %Library.String 0 Format: Numeric: 7 %Library.Integer 0 Copy van de fysische stock. Genomen bij het begin van de inventaris om na de inventaris een vergelijking te maken %Library.Integer 0 1 = Niet bijhouden "" = Bijhouden %Library.String 0 %Library.String 0 Breedte in mm van de grootverpakking %Library.Integer 0 Format: Numeriek, aantal weken %Library.Integer 0 %Library.Float 1 0 Set {*}=##class(Prod.Product).GetPropViaNr({Id},"CifPPL") 1 Popup PRODUKT;CYCLECOUNT 0 = Nooit 1 = Altijd 2 = Grenswaardeoverschrijding 3 = 2 + 4 4 = Bij leegworden drager %Library.Integer 0 Format: DD.MM.JJ Sys.cDate 0 Geeft aan wanneer een produkt veranderd is zodanig dat nieuwe goederen niet meer mogen bijgestapeld worden. Er moet een nieuwe paletplaats voor voorzien worden. %Library.Date 0 Sys.cDate 0 1 = is FSCHout %Library.String Opgedeeld in Stock en KOM door # Het gemiddelde wordt berekend door (totaal verkoop over 52 weken) / 48 1. Stock gem weekverkoop Format: Numeric: 7 2. KOM gem weekverkoop Format: Numeric: 7 3. Frequentie: hoeveel weken er verkoop is per jaar %Library.String 0 %Library.String 1 0 Set {*}=$P(##class(Prod.Product).GetPropViaNr({Id},"GENTYP"),"\") 1 Bij orderingave wordt deze routine opgeroepen voor kreatie van het afgeleide product %Library.String 0 Format: Real: 12,3 %Library.Numeric 0 Gemiddelde weekverkoop waar de recenste weken zwaarder wegen dan de oude weken ( VerkoopWeekx * (Weekx) MOD 4) / Weekx MOD 4 * ISVERLOF(Weekx) Waar Weekx gaat van 1 (= oudste week) tot 52 (= recenste week) De functie ISVERLOF geeft voor de verlof weken een 0 terug en voor de ander een 1. %Library.String 0 Hoogte in mm van de grootverpakking %Library.Integer 0 Format: String: 11 %Library.String 0 Format: Char: 1 Waarde: Indien empty is geen KATALOOG PRIJS - product Anders L,S,G dan KATALOOG PRIJS - product %Library.String 0 Format: Char: 1 Waarde: Indien empty is geen KATALOOG PRIJS - product Anders L,S,G dan KATALOOG PRIJS - product %Library.String 0 1 = verschijnt in de KS-prijslijst %Library.String 0 %Library.String 0 %Library.String 1 0 Set {*}=##class(Prod.Product).GetPropViaNr({Id},"KindMoeder") 1 Prod.ProductKlas 0 Format: String: 25 %Library.String 0 Lengte in mm van de grootverpakking %Library.Integer 0 %Date K = Kind, H = Halffabr of leeg Indien "K" dan kan dit product niet alleen verkocht worden, alleen als deel van een moederproduct Indien "H" dan kan dit product niet alleen verkocht worden, alleen als onderdeeel van een eindproduct %Library.String 0 Waarde: 1= NON-Aktief, empty = Aktief %Library.String 0 zitten vanaf heden ( 30/09/2010 ) in een enumeratie]]> Prod.enu.NietBeschikbaarVoor Format: String: 26 %Library.String 0 Format: String: 44 %Library.String 0 Boekhoudkundig rekeningnummer waarop gefaktureerd wordt. Wordt gebruikt bv. voor verpakking. %Library.String 0 Popup: PRODUKT;OPSLAGZONE %Library.String 0 Standaard aantal op een pallet %Library.Integer 0 Prod.ProductPrijs 0 %Library.String 1 0 Set {*}=##class(Prod.Product).GetPropViaNr({Id},"ProductGroep") 1 Popup: PRODUKT; STOCKAGEGRP Geeft aan tot welke productgroep dit product behoort voor opslag van dit product in een bep. opslagzone %Library.String 0 %Library.Integer 0 Aantal dat gereserveerd van de fysische stock tijdens het doorsturen van de OL's naar ht WMS en het feitelijke op uitleveringsbon zetten van de lijnen %Library.Integer 0 door "#" gescheiden 1. Rotatie 2. Gem. Fys Stock %Library.String 0 Format: Numeric: 4 %Library.Integer 0 Format: Char: 1 Indien leeg = Simulatie Indien L = LogSteuer (BLUM) Indien numeriek: Limiet met als limietwaarde de ingevulde waarde %Library.String 0 Prod.ProductSchaduw 0 "" = Neen, 1 = Ja %Library.String 0 %Library.String 1 0 Set D="\",{*}=$$SORTKEY^PRODUKT({ID}) 1 Format: Numeric: 2 %Library.Integer 0 Waarde: 1 = stock, empty = Niet stock %Library.String 0 N=NietStock, S=Stock of C=Contract %Library.String 1 0 Set {*}=##class(Prod.Product).StockTypeCalc({Id},{StockNietStock}) 1 %Library.String 1 0 Set {*}=$P(##class(Prod.Product).GetPropViaNr({Id},"GENTYP"),"\",2) 1 Prod.ProductTekst 0 Is een vermenigvuldigingsfaktor om het aantal verkochte producten correct te herleiden naar bv. hoeveel laden hebben we verkocht Indien Telbaar = 0 dan is het produkt niet telbaar bv. accessoires Waarde: 0; 1; 2;...; 0.5; 0.25;... %Library.Float 0 Popup: PRODUKT;SAMPLETYPE E = Eenmalig sampelen B = Altijd hersampelen N = Niet sampelen Opmerking: Indien Sample = E en het produkt wordt geteld door de telweegschaal dan wordt door het WMS 's nachts een feedback gegeven van Sample = "N". Om te melden dat de sample is genomen. %Library.String 0 Popu: PRODUKT;TELWIJZE Z = Zonderbijsamplen B = Bijsamplen L = aansturing meettoestel niet van toepassing %Library.String 0 Format: Numeric: 7 %Library.Integer 0 %Library.Integer 1 Set {*}=##class(Prod.Product).DocLink({ID}) 1 1 insert:%Boolean 1 %Status w ##class(Prod.Product).DocLink(3551) 1 PRNr,Taal 1 code %Library.String M.AB.9 of BQBC1->B.QBC.1 of MAHBC2->M.AH.BC.2 Set vGroep="" Set vDossierNr="" Set vCtrlNr="" ;Input onthouden voor foutmeldigen //New OrigDossier Set OrigDossier=Dossier ;Eventueel reeds geplaatste (foutieve of correcte) punten weghalen Set Dossier=$TR(Dossier,".","") ;Controlecijfer ophalen //New Loop,tmpChar,CtrlNr Set CtrlNr="" ; ControleNr standaard manier. For Loop=$L(Dossier):-1:1 Set tmpChar=$E(Dossier,Loop) Quit:('$IsValidNum(tmpChar)) Do . Set CtrlNr=tmpChar_CtrlNr ; ControleNr TandemBoxen If $E(Dossier,1) = "T" { Set CtrlNr = $E(Dossier,$L(Dossier)) } Quit:(CtrlNr="") "" Write "Controlecijfer: "_CtrlNr,! ;Controlecijfer van dossier strippen //New Rest If $E(Dossier,1) = "T" { Set Rest=$E(Dossier,1,($L(Dossier)-1)) }Else{ Set Rest=$ZSTRIP(Dossier,">N") } Quit:(Rest="") "" ;Controledigit checken Quit:($$CHKDIGIT^HAD(Rest)'=CtrlNr) "" ;Groep (Tandembox,banco,...) strippen (1e char) //New Groep,DossierNr Set Groep=$E(Rest,1) Set DossierNr=$E(Rest,2,99999) Write "Groep: "_Groep,! Quit:(DossierNr="") "" Write "ProdCode: "_DossierNr,! //New DottedProdCode,PCLen Set PCLen=$L(DossierNr) If PCLen<4 Do . Set DottedProdCode=DossierNr Else Do . Set DottedProdCode=$CASE(PCLen,4:$E(DossierNr,1,2)_"."_$E(DossierNr,3,4),5:$E(DossierNr,1,3)_"."_$E(DossierNr,4,5),6:$E(DossierNr,1,2)_"."_$E(DossierNr,3,4)_"."_$E(DossierNr,5,6),:"") Quit:(DottedProdCode="") "" Set vGroep=Groep Set vDossierNr=DossierNr Set vCtrlNr=CtrlNr Quit Groep_"."_DottedProdCode_"."_CtrlNr ]]> code %String 1 code ProdNr:%Library.String %Library.String 1 code Opslagzone:%Library.Integer %Library.String 1 code Groep:%Library.String,DossierNr:%Library.String %Library.String Ophalen van een property via het internproductnummer, zonder het product object te opene 1 code PRNr:%Library.Integer,PropName:%Library.String %Library.String 1 code IdentNr:%Library.String %Library.String code %String code %String Wegschrijven van een property via het internproductnummer, zonder het product object te openen. Geeft 1 terug als OK anders 0 of foutmelding. 1 code PRNr:%Library.Integer,PropName:%Library.String,Val:%Library.String %Library.String code %Library.String KLNr is optioneel 1 code PRNr,StockNietStock,KLNr %String code %String code %String KenmerkGroep:%String,KenmerkNaam:%String %List Geeft $LB(DossierNr) terug. [later uitbreidbaar tot meerdere parameters] %List Flow.Had.OrderHfd). ]]> %String Opties: "PROM" : Omschrijving "PRLK" : Lijst kindproducten incl. "PRIK" : Is kindproduct "PRQTY" : Qty "PRKR" : incl .KLantreferentie "ORDSORT" : SortKey voor Order(Lijnen) code Input:%Library.String,DevObj:%Library.String,Taal:%Library.String,Opties:%Library.String,XSLURL:%Library.String="" ") . Do WRITE^XMLWRITE(DevObj,"") . Do WRITELN^XMLWRITE(DevObj) Do ONEPROD(%this.ProductNr,tmpKLNr,tmpQty,Opties) Quit ONEPROD(PRNr,KLNr,Qty,Opties) //New KortTxt,IDNr,TekRef,Cnt,J,I,Node,Piece,Txt Set Opties=$G(Opties) Do BEGINTAG^XMLWRITE(DevObj,$S(Opties["PRIK":"KINDPRODUCT",1:"PRODUCT")) Do WRITELN^XMLWRITE(DevObj) Set KortTxt=%this.KortTekst ;$P(^KPR(PRNr,0),D) ; Aanpassingen voor GAData.Product: //New GAProdID,GAProd,GENTYP Set GAProdID=$P(^KPR(PRNr,"G"),D,13) If $L(GAProdID) Do . Set GENTYP=$P(##class(Prod.Product).GetPropViaNr(PRNr,"GENTYP"),"\",1) ; Geeft TBX, KAD, BAN, ... terug naargelang het product . Set:(GENTYP="DIV") GENTYP=$P(##class(Prod.Product).GetPropViaNr(PRNr,"GENTYP"),"\",2) . If GENTYP?1(1"TBX",1"TLM",1"GRP",1"ASM") Do .. If (Opties'[";GAO") Do Set Opties=Opties_";GAO" ;XMLWrite van GAData.Product zeker Omschrijving-opties meegeven .. Set GAProd=##class(Prod.GAData.Product).OpenWithCalc(GAProdID) .. Set OrderSortKey=GAProd.OrderSortKey() . Else If GENTYP?1(1"xxx") Do .. Set GAProd="" . Else Do .. If (Opties'[";GAV;GAO") Do Set Opties=Opties_";GAV;GAO" ;XMLWrite van KaderDeur zeker VML & Omschrijving-opties meegeven .. Set GAProd=##class(Prod.GADef.AfgeleidDef).%OpenId(GAProdID) . ; Als GAProd bestaat, dan XMLWrite() uitvoeren. . If $IsObject(GAProd) Do .. Do GAProd.XMLWrite(DevObj,$G(Taal),$G(Opties),"") .. ;Set OrderSortKey=GAProd.OrderSortKey() ; voorlopig alleen voor GAData.Product (TBX) .. Set GAProd="" ; Do GAProd.%Close() Set IDNr=$P(^KPR(PRNr,2),D,25) Do BEGINTAG^XMLWRITE(DevObj,"BARCODE") Do TAGWRITE^XMLWRITE(DevObj,"TYPE",%this.BarcodeType) Do WRITELN^XMLWRITE(DevObj) Do TAGWRITE^XMLWRITE(DevObj,"WAARDE",%this.BarcodeWaarde) Do WRITELN^XMLWRITE(DevObj) Do ENDTAG^XMLWRITE(DevObj,"BARCODE") Do TAGWRITE^XMLWRITE(DevObj,"PRNR",PRNr) Do WRITELN^XMLWRITE(DevObj) Do TAGWRITE^XMLWRITE(DevObj,"KORTTEKST",KortTxt) Do WRITELN^XMLWRITE(DevObj) Do TAGWRITE^XMLWRITE(DevObj,"IDENTNR",IDNr) Do WRITELN^XMLWRITE(DevObj) Do:Opties["PRKR" KLANTREF(PRNr,KLNr) ; Klantreferenties Do:Opties["PRQTY" TAGWRITE^XMLWRITE(DevObj,"QTY",Qty) Do WRITELN^XMLWRITE(DevObj) Set Talen=$G(Taal,"NFDE") If Opties["PROM" For I=1:1:$L(Talen) Do . Set Taal=$E(Talen,I) . Set:Taal="N" List="0.2,0.11,6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,6.10" . Set:Taal="F" List="1.22,3.21,8.1,8.2,8.3,8.4,8.5,8.6,8.7,8.8,8.9,8.10" . Set:Taal="D" List="2.2,3.23,10.1,10.2,10.3,10.4,10.5,10.6,10.7,10.8,10.9,10.10" . Set:Taal="E" List="2.1,3.22,12.1,12.2,12.3,12.4,12.5,12.6,12.7,12.8,12.9,12.10" . Do BEGINTAG^XMLWRITE(DevObj,"OMS",$$PARAMFILL^XMLWRITE("TAAL",Taal)) . Set Cnt=0 . For J=1:1:$L(List,",") Do .. Set Node=$P($P(List,",",J),".",1) .. Set Piece=$P($P(List,",",J),".",2) .. Set Txt=$P($G(^KPR(PRNr,Node)),D,Piece) .. Quit:Txt="" .. Set Cnt=Cnt+1 .. Do TAGWRITE^XMLWRITE(DevObj,"LIJN",$$ConvertToHTML^vhRtn1(Txt),$$PARAMFILL^XMLWRITE("VOLGNR",Cnt)) .. Do WRITELN^XMLWRITE(DevObj) . Do ENDTAG^XMLWRITE(DevObj,"OMS") . Do WRITELN^XMLWRITE(DevObj) Do:Opties["PRLK" KINDPROD(PRNr) Do ENDTAG^XMLWRITE(DevObj,$S(Opties["PRIK":"KINDPRODUCT",1:"PRODUCT")) Do WRITELN^XMLWRITE(DevObj) Do:(Opties["ORDSORT") TAGWRITE^XMLWRITE(DevObj,"SORTKEY",$G(OrderSortKey)) Quit TEKREF(PRNr,Opties) //New TekRef Set TekRef=$P(^KPR(PRNr,0),D) Set TekRef=$E(TekRef,4,99) Set TekRef=$TR($E(TekRef,1,8),".# ","") Set:($E(TekRef,7,8)=16)!($E(TekRef,7,8)=18)!($E(TekRef,7,8)=19) $E(TekRef,7,8)="xx" Set:($E(TekRef,7,8)="IN")!($E(TekRef,7,8)="GR")!($E(TekRef,7,8)="WI") $E(TekRef,7,8)="" Quit $S($L(TekRef):TekRef_".Gif",1:"") KINDPROD(PRNr) //New KPRNr,Sort Set KPRNr="" For Set KPRNr=$O(^PRLINK("D",PRNr,KPRNr)) Quit:KPRNr="" Do . Set Sort($$SORTKEY^PRODUKT(KPRNr))=KPRNr_D_$P(^PRLINK("D",PRNr,KPRNr),D) Set Sort="" For Set Sort=$O(Sort(Sort)) Quit:Sort="" Do . Do ONEPROD($P(Sort(Sort),D,1),$P(Sort(Sort),D,2),"QK") ; Recursie Quit KLANTREF(PRNr,KLNr) ; Dummy Quit ]]> %CacheSQLStorage ^Prod.ProductS data ^KPR delimited {ProductNr} 0.1 s {1D1}={L1} {1D1} '{L1} "\","#" 0 8,2 "\","#" 0 8,1 "\" 0 17 "\" 2 9 "\" 3 20 "\" 1 14 "\" 1 10 "\" 1 15 "\" 1 16 "\" 0 5 "\" 2 13 "\" 2 14 "\" 0 12 "\" 1 9 "\" 0 15 "\" 3 1 "\" 1 5 "\" 1 17 "\" 1 2 "\" 0 13 "\" 1 8 "\" 0 16 "\" 3 5 "\" 1 23 "\" 0 3 "\" 1 13 "\" 1 21 "\" 1 4 "\" 2 25 "\" 1 18 "\" 1 19 "\" 3 3 "\" 3 2 {1D1} "\" 0 1 "\" 1 6 "\" 0 23 "\" 1 25 "\" 3 4 "\" 0 2 "\" 0 11 "\" 0 10 "\" 2 15 "\" 2 16 {1D1} "\" 1 1 "\" 0 9 "\" 1 24 "\" 0 18 "\" 0 24 {1D1} "\" 2 16 "\" 2 8 "\" 1 20 {1D1} "\" 1 7 "\" 2 12 "\" 2 11 "\" 0 6 "\" 0 14