#include BL.Derde.LevSpecifiek PRDUPLI ;Product duplicering [ 12/16/2003 11:36 AM ] new ProductService , Parameters , Product new PRNr, PRNrNieuwProduct set ProductService = ##class(APPS.PM.ProductService).%New() If '$D(Q) Set Q="K" D ^cA604,INIT^vhTERMINA set PRNr="" while PRNr'="-" { set Parameters = ##class(APPS.PM.dto.ProductKopieerParameters).%New() do TITEL Set PRNr=$$SELECT^PRODUKT6("","","","Te dupliceren product : ",,,,,,1) continue:'PRNr set Parameters.ProductIDOrigineelProduct = PRNr set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(PRNr) do Display(3,1,"Te dupliceren product",Product.GeefKorttekst()) continue:'$$InputVragen(Product) if $$YesNoCancel^vhINP("Product kopieeren adhv bovenstaande gegevens") { set PRNrNieuwProduct = ProductService.DupliceerProduct(Parameters) set X=$$WIJZIG^PRODUKT(PRNrNieuwProduct,1) do MailHaefele^PRODUKT(PRNrNieuwProduct,"D") ; Mail naar Haefele } } quit InputVragen(Product) new IdentNr,LevNr,Stop,PRNr,KortT set PRNr = Product.GeefID() #dim PartijAPI As DOM.PARTIJ.PartijAPI = ##class(DOM.DomeinContext).Instance().GeefPartijAPI() #dim LegacyPartijAPI As DOM.PARTIJ.LegacyPartijAPI = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI() set LevID = Product.GeefLeverancierID() set LevNr = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefLeverancierNummerVoorPartijID(LevID) set IdentNr = Product.GeefIdentNr() set KortT = Product.GeefKorttekst() set Stop=0 set LevNr = $$SELECT^LEVER(1,LevNr,"Eventueel andere leverancier : ") If 'LevNr Quit 0 set Parameters.LeverancierID = LegacyPartijAPI.GeefLeverancierPartijID(LevNr) Do Display(4,1,"leverancier",LevNr_" "_PartijAPI.GeefPartij(Parameters.LeverancierID).GeefNaam()) if Parameters.LeverancierID = ##class(DOM.AKP.enu.Leverancier).Blum() { do IdentNrVoorLevBlum(.IdentNr,.Stop) } else { do IdentNrVoorAndereLev(.IdentNr,.Stop) } quit:Stop=1 0 Do Display(5,1,"identnr",IdentNr) set Parameters.IdentNr = IdentNr if ( Product.GeefActiefStatus() '= ##class(DOM.PM.enu.ActiefStatus).Actief() ) { set Parameters.ActiefStatus = $$^vhTXTPOP("PRDUPLI","NONAKT") } else { set Parameters.ActiefStatus = ##class(DOM.PM.enu.ActiefStatus).Actief() } do Display(6,1,"ActiefStatus",##class(DOM.PM.enu.ActiefStatus).LogicalToDisplay(Parameters.ActiefStatus)) set Parameters.Limiet = $P(^KPR(PRNr,0),"\",24) if Parameters.Limiet set Parameters.Limiet=$$^vhTXTPOP("PRDUPLI","LIMIET") do Display(7,1,"Limiet",Parameters.Limiet) set JKey = $O(^KPR(PRNr,"J")) if $extract(JKey)="J" { set Parameters.BPrijs = $piece(^KPR(PRNr,JKey),"\",18) if Parameters.BPrijs Set X=$$^vhTXTPOP("PRDUPLI","BPRIJS") Set:X Parameters.BPrijs=0 do Display(8,1,"BPrijs",$$BooleanToString(Parameters.BPrijs)) set Parameters.Vork = $piece(^KPR(PRNr,JKey),"\",27) if Parameters.Vork'=40 Set Parameters.Vork=$$^vhTXTPOP("PRDUPLI","VORK","",40) do Display(9,1,"Vork",Parameters.Vork) set IKey = $O(^KPR(PRNr,"I")) if $extract(IKey)="I" { Set Klas=$P(^KPR(PRNr,IKey),D,4),WinstVolgensClassificatie=$J($P(^KLAS("K",Klas),D,11)*100,0,2) Set:+WinstVolgensClassificatie=(WinstVolgensClassificatie\1) WinstVolgensClassificatie=$J(WinstVolgensClassificatie,0,0) Set WinstBeh=0 Set Parameters.Winst = $P(^KPR(PRNr,JKey),"\",24) if Parameters.Winst'=+WinstVolgensClassificatie,+WinstVolgensClassificatie { set Parameters.Winst = $$^vhTXTPOP("PRDUPLI","WINST",0,Parameters.Winst,WinstVolgensClassificatie) } do Display(10,1,"Winst",Parameters.Winst) } } Set ProductAPI = ##class(DOM.DomeinContext).Instance().GeefProductAPI() Set ProductKenmerken = ProductAPI.GeefProductMetKenmerken(PRNr) If (ProductKenmerken.GeefKenmerkenSetsIterator().HasNext()) { set Parameters.KopieerKenmerken = $$^vhTXTPOP("PRDUPLI","COPYKENMERK","",Product.GeefKorttekst()) do Display(11,1,"Kopieer kenmerken",$$BooleanToString(Parameters.KopieerKenmerken)) } else { do Display(11,1,"Kopieer kenmerken","geen kenmerken") } if ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("PRDUPLI_MagImagesCopieren"),##class(BL.Prod.ImageLink).HasImage(PRNr) { set Parameters.KopieerAfbeeldingen = $$^vhTXTPOP("PRDUPLI","COPYIMAGE","",Product.GeefKorttekst() ) do Display(12,1,"Kopieer afbeeldingen",$$BooleanToString(Parameters.KopieerAfbeeldingen)) } else { do Display(12,1,"Kopieer afbeeldingen","geen afbeeldingen") } If ##class(BL.Prod.OptiBox.Optimize).HasOptiData("PR",PRNr) { ; Heeft optibox data gekoppeld aan het product set Parameters.KopieerVerpakkingDefinities=$$^vhTXTPOP("PRDUPLI","COPYOPTIBOX","",Product.GeefKorttekst()) do Display(13,1,"Kopieer verpakkingdefinities",$$BooleanToString(Parameters.KopieerVerpakkingDefinities)) } else { do Display(13,1,"Kopieer verpakkingdefinities","geen verpakkingdefinities") } If $data(^PRBS("BS",PRNr)) { set Parameters.KopieerBouwstenen = $$^vhTXTPOP("PRDUPLI","COPYKIND","",Product.GeefKorttekst()) do Display(14,1,"Kopieer bouwstenen",$$BooleanToString(Parameters.KopieerBouwstenen)) } else { do Display(14,1,"Kopieer bouwstenen","geen bouwstenen") } set Parameters.KopieerCatalogusPrijsVoorIndustrie = $P(^KPR(PRNr,1),"\",19) if $length(Parameters.KopieerCatalogusPrijsVoorIndustrie) set Parameters.KopieerCatalogusPrijsVoorIndustrie='$$^vhTXTPOP("PRDUPLI","KATPRIJS") do Display(15,1,"KatPrijs",Parameters.KopieerCatalogusPrijsVoorIndustrie) If $length($piece(^KPR(PRNr,0),D,3)) { ; Generisch/ Afgeleid Set X=$$^vhTXTPOP("PRDUPLI",$S($P(^KPR(PRNr,0),D,3)?4.7N:"AFGELEID",1:"GENERISCH"),"",$E($S($P(^KPR(PRNr,0),D,3)?4.7N:$P(^KPR($P(^KPR(PRNr,0),D,3),0),D),1:$$LABEL^GENPROD($P(^KPR(PRNr,0),D,3))),1,35)) Set:X="N" Parameters.AfgeleidProduct="" Set:X="A" Parameters.AfgeleidProduct=PRNr ; Afgeleid } do Display(16,1,"AfgeleidProduct",Parameters.AfgeleidProduct) if $length(Parameters.AfgeleidProduct) { Set KortT=$$NEXTABD^PRODUKT2(PRNr) Quit:KortT="-" 0 Set:KortT="" KortT=Product.GeefKorttekst() set DossierRef=$$DossierRef^PRODUKT2(PRNr) if $length(DossierRef) { New Dossier,DosPar,DosPos Set Parameters.NieuwDossier=$$^vhTXTPOP("PRDUPLI","MODDOSSIER","",KortT) Quit:'Parameters.NieuwDossier Set DosPar=$$DOSPAR(DossierRef,"????"),DosPos=$P(DosPar,";"),Dossier=$P(DosPar,";",2) Xecute "Set $e(KortT,"_DosPos_")=Dossier" } do Display(18,1,"NieuwDossier",Parameters.NieuwDossier) } do VraagKortTekst(.KortT,Parameters.LeverancierID,.Stop) quit:Stop=1 0 Do Display(6,1,"Korttekst",KortT) set Parameters.Korttekst = KortT quit 1 VraagKortTekst(KortT,LevID,Stop) set Stop = 0 if LevID = ##class(DOM.AKP.enu.Leverancier).Blum() { new BlumKortTekst set BlumKortTekst = $$GeefBlumKortTekst($E(IdentNr,2,99)) if $length(BlumKortTekst) set KortT = BlumKortTekst } while 'Stop { Set KortT=$$KORTTEXT^PRODUKT2("Ingave nieuwe Korttekst : ",KortT) Set Stop=$select(".-"[KortT:1,1:2) } quit GeefBlumKortTekst(BlumIdentNr) new Korttekst set KortTekst = "" if ##class(Blum.Product).%ExistsId(BlumIdentNr) { set Korttekst = ##class(Blum.Product).%OpenId(BlumIdentNr).KortTekst } quit KortTekst TITEL Write @F11,@F1,@FMTI,"PRODUCT DUPLICERING - ",QN,@FMTi Quit IdentNrVoorLevBlum(IdentNr,Stop) set Stop=0 For Do Quit:Stop . Set IdentNr=$$ASK^vhINP("Ingave nieuw identnummer : ",11,IdentNr,,,,,,"E") . If ".-"[IdentNr Set Stop=1 Quit . Set:IdentNr?8N IdentNr=$E(IdentNr)_"."_$E(IdentNr,2,4)_"."_$E(IdentNr,5,7)_"."_$E(IdentNr,8) . If '$$IsValidIdentNr^PRODUKT2(IdentNr) Do TXT^vhINP("Identnummer heeft foutief formaat") Quit . Set Som=$E(IdentNr,3)*6+($E(IdentNr,4)*5)+($E(IdentNr,5)*4)+($E(IdentNr,7)*3)+($E(IdentNr,8)*2)#11 . Set CheckD=$S(Som=0:1,Som=1:0,1:11-Som) . ; Index kan op raad van BLUM verhoogd worden . For Index=1:1:1 Quit:$E(IdentNr,9)=CheckD Set CheckD=$S(Som+Index<11:11+Index-Som,1:0) . Set CheckD=$E(CheckD,$L(CheckD)) . If $E(IdentNr,9)'=CheckD Do ; Controle tweede wijze voor parts, promotion en catalogues . . Set Som=$E(IdentNr,3)*1+($E(IdentNr,4)*3)+($E(IdentNr,5)*1)+($E(IdentNr,7)*3)+($E(IdentNr,8)*1)+($E(IdentNr,9)*3)#10 . . Set CheckD=10-Som . . If $E(IdentNr,11)'=CheckD Do TXT^vhINP("IdentNummer met mogelijk foutieve checkdigit") Quit . . Else Do TXT^vhINP("IdentNummer OK, dit voor onderdelen, promotieartikelen en katalogen") Quit . If $D(^KPR2($$TRIMIDENT^vhRtn1(IdentNr)_" ")) Do TXT^vhINP("IdentNr bestaat reeds") Quit . Set Stop=2 quit IdentNrVoorAndereLev(IdentNr,Stop) For Do Quit:Stop . Set Stop=0 . Set IdentNr=$$ASK^vhINP("Ingave nieuw identnummer (eerste karakter) : ",1,$E(IdentNr)) . If ".-"[IdentNr Set Stop=1 Quit . If "1,2,3,4,6,7,8,9"'[IdentNr Do TXT^vhINP("Foutief beginnummer voor een identnummer") Quit . Set Stop=2 Display(XPos,YPos,Label,Tekst) set FP=XPos*100+YPos write @F,@F2,@F write ##class(TECH.StringUtils).AddTrailingSpace(Label,35)_" : " ,Tekst set FP=1500 write @F,@F1 quit ; Geef de parameters voor het plaatsen van een dossier vb '8,11; CT' DOSPAR(DossierRef,Dossier) New DosPar,Pos,Allign,Length Set Dossier=$G(Dossier,$$NextDossier^PRODUKT2(DossierRef)) Set DosPar=$P($P($P("HDNR;8,11;L\POMNR;8,11;L\TBXNR;8,11;L\TLMNR;8,11;L\GLNR;8,11;R\SDMNR;8,11;R\MATNR;9,11;L\PLNR;5,8;L\SGNR;7,10;R",DossierRef,2),D),";",2,3) Set Pos=$P(DosPar,";"),Allign=$P(DosPar,";",2),Length=$P(Pos,",",2)-$P(Pos,",")+1 Set Dossier=$E(Dossier,1,Length) If Allign="L" Set Dossier=Dossier_$J("",Length-$L(Dossier)) Else Set Dossier=$J("",Length-$L(Dossier))_Dossier Quit Pos_";"_Dossier BooleanToString(Boolean) new result set result = "Ja" if 'Boolean set result = "Nee" quit result