Businesslogic voor het verwerken van een product offertelijn
Deze businesslogic is afhankelijk van %blFlowOfferte en deze moet reeds geinstantieerd zijn !
%Prod.Product,BL.EC.Common,BL.Prod
1
LijnAbstract
62124,56517.560495
60207,60266.304448
0
Invullen van de basisgegevens van de lijn.
Enkel oproepen bij de Create() van het Lijn-object.
Deze method wordt in de polymorfe klasse overschreven
PRNr:%Integer,Aantal:%Integer
Voorbereiden van een offertelijn voor import in een order
NoSa:%String
%Status
Voorbereiden van een offertelijn voor prijsberekening en controle
deze is voor
Taal:%String,NoSa:%String
%Status
Invullen van product, prijs en andere gegevens in de lijn of sublijnen
Taal:%String,NoSa:%String
0
%Status
Controle van een lijn op prijs, levertermijn, aantal
What : P = Product, V = Verkoopprijs, L = Levertermijn, A = Aantal
What:%String,Taal:%String,NoSa:%String
%Status
%Status
s ar=##class(BL.Flow.Offerte.LijnProduct).%New().GetProdWithPakket("B 800 450 GRI DM LINE",11211)
PakRef:%String,KLNr:%Integer
%ArrayOfObjects
IdentNr:%String,KLNr:%Integer
1
%ArrayOfObjects
1 Do
. . ; // opbouw mail naar PM --> voorlopig geen mail sturen ..
. . ;Set BodyIsStream = 1
. . ;Set BodyIsHTML = 1
. . ;Set Body = ##class(%GlobalCharacterStream).%New()
. . ;Do Body.WriteLn("Volgende producten hebben het zelfde IdentNr "_(IdentNr) )
. . ;Do Body.WriteLn("")
. . ;For Counter = 1 : 1 : $LL(lbPRNRs) Do
. . ;. Set PRNr=$LG(lbPRNRs,Counter)
. . ;. Set arTable(Counter)="KortTekst "_$$$TAB_$$$PRGet($$$KortTekst)_$$$TAB_"InternNr"_$$$TAB_PRNr
. . ;Do Body.Write($$ArrayToHTMLTable^vhLib(.arTable))
. . ;Do SendMiniMail^vhLib("system@vanhoecke.be",$LB("ICT_ProductMGR"),"Meerdere producten met zelfde IdentNr",Body,BodyIsStream,BodyIsHTML)
. . Set PRNr="" ; geen koppeling indien meerdere identnrs gevonden worden
. Else Set PRNr=$LG(lbPRNRs,1)
Else Do
. Set IdentNr=$$TRIMN^vhRtn1(IdentNr)
. If $L(IdentNr)=8,$D(^KPR2(IdentNr_" ")) Set PRNr=$P(^KPR2(IdentNr_" "),"\") ; exact match
. If $L(IdentNr)=8 Set $E(IdentNr)=""
. If PRNr="",$L(IdentNr)=7 Do
. . For I=0,9,8,1:1:7 Do Quit:PRNr'=""
. . . Set PRNr=$P($G(^KPR2(I_IdentNr_" ")),"\")
. . . If PRNr,I>0,I<7 Set KortTekst=$$$PRGet($$$KortTekst) Set:KortTekst'[("*"_KLNr_"*") PRNr="" ; Kontrole op kundestam
Quit:PRNr="" ""
Do ##class(pxProductSplit).AddProduct(.arProducts,PRNr,1)
Quit $G(arProducts)
]]>
KortTekst:%String,KLNr:%Integer
1
%ArrayOfObjects
1 Set PRNr=""
. Else Set PRNr=$LG(lbPRNRs,1)
Else Do
. Set KortTekst=$$UPTRIMAN^vhRtn1(KortTekst)
. ; De index KPR1 is speciaal opgebouwd het 3de en 12de karakter zijn er speciaal tussengevoegd voor de sortering
. Set NextKT=$E(KortTekst,1,3)
. For Set NextKT=$O(^KPR1(NextKT)) Quit:$E(NextKT,1,3)'=$E(KortTekst,1,3) Do ; Looping met de eerste drie karakters
. . Quit:$E(NextKT,5,1+$S($L(KortTekst)>11:11,1:$L(KortTekst)))'=$E(KortTekst,4,$S($L(KortTekst)>11:11,1:$L(KortTekst)))
. . Quit:($L(KortTekst)>11)&&($E(KortTekst,12,$L(KortTekst))'=$E(NextKT,14,2+$L(KortTekst))) ; Deel 12 tot einde is verschillende
. . Set PRNr=PRNr_";"_$P(^KPR1(NextKT),"\")
. Set $E(PRNr)="" ; verwijder eerste ";"
. Set:PRNr[";" PRNr="" ; Meerdere niet toegelaten
Quit:PRNr="" ""
Do ##class(pxProductSplit).AddProduct(.arProducts,PRNr,1)
Quit $G(arProducts)
]]>
Beschikbaarheid van het product in arbeidsdagen of weken (zonder transport)
vb $LB(3,"A") = 3 arbeidsdagen
vb $LB(1,"W") = 1 week
%List