BL.EC.Common 1 %RegisteredObject Flow.Offerte.Hoofding %String 1 1 Voorbereiden van de offerte voor import in een order Voor alle lijnen van de offerte wordt GenerateLijn opgeroepen vb 1 : Creatie van afgeleide producten vb 2 : Vertalen van SearchKeys naar product(en) NoSa:%String Voorbereiden van een offertelijn voor import in een order De generatie is polymorph - soort lijn afhankelijk oLijn:Flow.Offerte.Lijn,NoSa:%String %Status Voorbereiden van de offerte voor prijsberekening en controle Voor alle lijnen van de offerte wordt SimulateLijn opgeroepen vb 1 : Simulatie van afgeleide producten zonder creatie van het afgeleide product vb 2 :Vertalen van SearchKeys naar product(en) Taal:%String,NoSa:%String Voorbereiden van een offertelijn voor prijsbereking en controle De simulatie is polymorph - soort lijn afhankelijk oLijn:Flow.Offerte.Lijn,Taal:%String,NoSa:%String %Status Controle van alle offertelijnen op prijs, aantal en levertermijn What : P = Prijzen, L = Levertermijn, A = Aantal What:%String,Taal:%String,NoSa:%String Controle op prijs, aantal en levertermijn What : multiple van P = Product, V = Verkoopprijs, L = Levertermijn, A = Aantal De controle is polymorph - soort lijn afhankelijk oLijn:Flow.Offerte.Lijn,What:%String,Taal:%String,NoSa:%String %Status Creatie van een nieuwe offerte KlantNr:%Integer,Oorsprong:BL.Flow.Offerte.enu.Oorsprong,NoID:%String="" Flow.Offerte.Hoofding Lock van een bestaande offerte OfferteID:%String %Status Unlock OfferteID:%String %Status TODO: rekening houden met prijswijzigingen Offerte:Flow.Offerte.Hoofding,RefDate:%String %String %Boolean ClassMethod versie van IsVervallen 1 Offerte:Flow.Offerte.Hoofding %Boolean Openen van een bestaande offerte OfferteID:%String,LockType Flow.Offerte.Hoofding Opent een offertelijn bepaald door de aard van InputObj. InputObj is een Object of een ObjectID van klasse Flow.Offerte.Hoofding of Flow.Offerte.Lijn Indien Hoofding dan wordt de eerste OfferteLijn uit de hoofding genomen. Geeft steeds een Object van de klasse Flow.Offerte.Lijn terug (of leeg indien niet bepaald) 1 InputObj:%String Flow.Offerte.Lijn OfferteID Opslaan van een offerte (hoofding en lijnen) %Status %Status Aanmaken van het subobject adres Flow.Offerte.Adres Verwijderen van de offerte Offerte mag niet geopend zijn om deze te kunnen verwijderen OfferteID %Status Verwijderen van de offerte %Status Days Status,NoMail:%Boolean=0 %Status OfferteID:%String %String Bepaalt de minimum leveringsdatum door de levertermijn van elke lijn te bepalen en de grootste te weerhouden en daarna af te ronden volgens de verzendingswijze 0 %Date MinDatum MinDatum=Datum ; afronden op verzendingswijze Set MinDatum=%blLeverTermijn.AfrondenLeverDag(MinDatum) Quit MinDatum ]]> DagOfWeek : "A" = Arbeidsdagen, "W" = Weken Aantal : Aantal arbeidsdagen of weken bij te tellen bij Begindatum rekeninghoudend met de verlofkalender 1 BeginDatum,DagOfWeek,Aantal IsResend 0 Status wordt steeds per paar opgeslagen. De oneven items bevatten de code, de even items de comment Men kan de comment ook toevoegen aan een reeds bestaande comment dit als AddComment=1 Het comment gedeelte van de status kan undefined zijn of leeg, dit betekent hetzelfde ! oLijn:Flow.Offerte.Lijn,Code:%String,Comment:%List="",AddComment=0 Verwijderd de code en de comment oLijn:Flow.Offerte.Lijn,Code:%String Toevoegen van een product aan de offerte. GroepKey:%String,InsertWijze:%String="AP;L",PRNr,Aantal Flow.Offerte.Lijn Wijzigen van een productlijn GroepKey:%String,PRNr,Aantal Flow.Offerte.Lijn Toevoegen van een afgeleidproduct aan de offerte Flow.Offerte.Lijn Wijzigen van een afgeleidproduct Flow.Offerte.Lijn Toevoegen van een text aan de offerte GroepKey:%String,InsertWijze:%String="AP;L",Text:%String Flow.Offerte.Lijn Wijzigen van een textlijn GroepKey:%String,Text:%String Flow.Offerte.Lijn Verwijderen van een lijn of meerdere sublijnen Nivo : G = Groep, L = Lijn, S = Sublijn, B = backorderlijn Referentie voor vewijderen is de GroepKey GroepKey:%String,Nivo:%String="L" %Status Invoegen van sublijnen vertrekkend van de moederlijn en een lijst van producten. format: $LB($LB(PRNr,Aantal),...) vb. $LB($LB(7458,4),$LB(105215,1)) oLijn:Flow.Offerte.Lijn,lbProducts:%List rechtstreeks wijzigen . Set PRNr=$LI($LI(lbProducts),1) . Quit:PRNr'?4.7N . Quit:'$D(^KPR(PRNr)) . Set Faktor=$LI($LI(lbProducts),2) . Do oLijn.ProductSetObjectId(PRNr) . Quit:'Faktor . Quit:Faktor=1 . Set oLijn.Faktor=Faktor . Set oLijn.Aantal=oLijn.Aantal*Faktor Else Do ; Meerdere producten -> sublijnen . For I=1:1:$LL(lbProducts) Do . . Set PRNr=$LI($LI(lbProducts,I),1) . . Set Faktor=$LI($LI(lbProducts,I),2) . . Set oSubLijn=##class(Flow.Offerte.LijnProduct).Create(PRNr,oLijn.Aantal*Faktor) . . Set oSubLijn.Faktor=Faktor . . Set oSubLijn.LeverDatum=oLijn.LeverDatum . . Set oSubLijn.Referentie=oLijn.Referentie . . Set oSubLijn.ProjectRef=oLijn.ProjectRef . . Do ..InsertLijn(oSubLijn,oLijn.GroepKey,"AP;S") . Do ..SetStatus(oLijn,$$$OffStatMoederProduct) . ;Do ..AddStatus(oLijn,$$$OffStatMoederProduct) Quit ]]> Controle of de lijn een sublijn is houdt geen rekening met backorders oLijn:Flow.Offerte.Lijn %Boolean Controle of de lijn sublijnen heeft, als de lijn zelf een sublijn is dan 0 oLijn:Flow.Offerte.Lijn %Integer Opbouw van de sortcache dmv het doorlopen van alle lijnen Toevoegen van een lijn object aan de SortCache oLijn:Flow.Offerte.Lijn Zoekt het product en geeft de groepkeys terug van de lijnen waar het product voorkomt PRNr:%Integer %List Ophalen van het lijn object vertrekkend van de groepkey GroepKey:%String Flow.Offerte.Lijn Invoegen van een lijn object rekeninghouden met de GroepKey en de InsertWijze InsertWijze bestaat uit twee delen met ";" gescheiden 1 : relatieve plaats tov van groepkey, volgend ecodes zijn mogelijk AP = Append, IB = Insert before, IA = insert after, FI = First 2 : op welk nivo er moet toegevoegd worden G = Groep, L = Lijn, S = Sublijn, B = backorderlijn De GroepKey is het referentiepunt voor de InsertWijze, als Nivo is S of B dan moet de GroepKey ingevuld zijn. oLijn:Flow.Offerte.Lijn,GroepKey:%String,InsertWijze:%String="AP;L" %Status Bepalen van een nieuwe groepkey vertrekkend van een bestaande groepkey zodanig dat met deze nieuwe groepkey een lijn kan toegevoegd worden. InsertWijze : AP=append, IB=insertbefore, IA=insertafter, FI=first InsertAtNivo : G=groep, L=lijn, S=sub, B=backorder Voor nivo S en B moet de GroepKey meegegeven worden ! GroepKey:%String,InsertWijze:%String="AP;L" Samenstellen van een GroepKey vertrekken van de subkeys Grp:%String,Ln:%String,Sub:%String,BO:%String %String Een subtree van de SortCache cache werd verplaats en de nieuwe groepkeys doorvoeren naar de lijnen GrpLim,LnLim %Library.CacheStorage ^BL.Flow.Offerte.BuildD BuildDefaultData ^BL.Flow.Offerte.BuildD ^BL.Flow.Offerte.BuildI ^BL.Flow.Offerte.BuildS %%CLASSNAME oOfferte