Orderregels N invullen obv berekening in cellen

FabianNCFabianNC Member Posts: 78
edited 2007-11-07 in NAV Dutch speaking only
De orderregels worden bij ons ingevuld obv een berekening.

Benodigd aantal * overleverpercentage = voorstelaantal.

Dit voorstelaantal wordt overgetypt in het Oorspronkelijke Navision Veld 'Aantal'.

Is het mogelijk om dit veld automatisch te laten vullen obv de berekening of eventuele wijzigingen daarin?

Ik had gehoopt dat dit bv via een OnModify en dan bv VoorstelAantal := Aantal te regelen was, maar ik kom er niet uit.


Natuurlijk moet het Aantal veld wel handmatig te overschrijven zijn.

We gebruiken het Benodigd aantal nu om op de Purchase order te plaatsen, zodat we niet te veel hoeven te bestellen.
Het magazijn kan echter het aantal in het veld 'Aantal' ontvangen, en dit kans dus met een deel overlevering zijn.
Navision 4.0 SP2 | Win 2003 TS

Answers

  • Marije_BrummelMarije_Brummel Member, Moderators Design Patterns Posts: 4,262
    Het bijwerken van alle Aantal velden (het zijn er onder water heel wat) is best lastig vanwege alle code die er aan vast hangt.

    Ik zou hier zeker niet zelf mee gaan klooien met alle risico's van dien.

    Even een senior engineer opzetten.
  • DenSterDenSter Member Posts: 8,307
    Dit soort processen wordt onder water gebruikelijk in de OnValidate trigger geregeld. Mark heeft gelijk, er zitten wat lastige haken en ogen aan de berekeningen omtrent aantallen, dus het is wel verstandig om hier door een pro naar te laten kijken. Kan je gewoon naast zitten en van leren :).
  • FabianNCFabianNC Member Posts: 78
    Misschien was mijn voorbeeld een beetje te kort en wat krom.

    Normaal vul je binnen de orderregels in het veld aantal in: 1.000 stuks

    Op deze manier verschijnt op de Inkooporder 1.000 stuks
    Het magazijn mag dan maximaal 1.000 stuks ontvangen.

    In ons geval hebben we bijna altijd een afspraak mbt overlevering.
    Bij een bestelling van 1.000 stuks mag de leverancier bv maximaal 1.100 leveren en ook factureren.

    Binnen de orderregels heb ik daarvoor extra velden aangemaakt.
    Hier vullen we de originele aantallen in die we eigenlijk wilden bestellen (dus 1.000). Vervolgens vullen we het overlever% in (bv 10%).
    Dit is niet erg spannend: gewoon 2 veldjes met een berekening.

    In de orderregels wordt dan een berekening gemaakt dat het aantal voor Navision 1.100 moet zijn. Dit voorgestelde aantal wordt op dit moment overgetypt in een veldje verder, namelijk het Aantal veld dat standaard al in Navision zat.

    De 1.000 stuks van het nieuwe veld komen op de Inkooporder, en het magazijn kan nu maximaal 1.100 ontvangen.

    Voor ons is dit een zeer flexibele eenvoudige werkzame oplossing.

    Nu gaat het dus enkel om het overtypen van het veldje 'Voorgestelde Aantal' naar het standard Navision veld 'Aantal'.
    Ik blijf dus binnen de orderregeltabel en wil eigenlijk alleen maar 1 handeling overbodig maken.

    Heel vaak wordt namelijk het berekende aantal (voorstel) 1:1 overgenomen in het Aantal veld.

    Natuurlijk kan het ook zijn dat jullie dit al hadden begrepen en dat het dus nog steeds niet mogelijk is, maar ik denk dat ik een heel eenvoudig iets veel te omslachtig en onduidelijk heb uitgelegd. Sorry voor mijn uitlegkunsten ;-).


    Groeten, Fabian
    Navision 4.0 SP2 | Win 2003 TS
  • Marije_BrummelMarije_Brummel Member, Moderators Design Patterns Posts: 4,262
    Wil je dat het veld aantal altijd wordt overschreven met voorgesteld aantal of soms?

    Als het altijd is kun je volstaan met de OnValidate trigger van Voorgesteld Aantal met de vode Validate(Aantal, Voorgesteld Aantal)
  • FabianNCFabianNC Member Posts: 78
    Wat ik nu merk is dat er wel een Veld "Overlever Voorstel" is, maar dit wordt op dit moment niet gebruikt.

    In de Source expression in het Form staat bij de Variabele "Voorstel Aantal":

    "Overlever Basis"+("Overlever Basis"/100)*"Overlever %"

    Wat ik waarschijnlijk moet doen is deze berekening verplaatsen naar de Tabel. De berekening zal niet veel anders zijn (hooguit nog wat IF THEN's om het wat netter te maken bij ontbreken van waarden).

    Wat is de beste locatie om deze berekening te plaatsen?
    Het lijkt mij ook weer in de [Overlever Voorstel - OnValidate()].

    Als het 'Voorstel Aantal' veld wijzigt obv de berekening kan ik onderstaande code idd gebruiken en dan geloof ik wel dat het werkt :-).

    OnValidate trigger van "Voorstel Aantal" met de code Validate(Quantity, "Voorstel Aantal")
    Navision 4.0 SP2 | Win 2003 TS
  • DenSterDenSter Member Posts: 8,307
    Wat wij weleens hebben gedaan is dit process bij het ontvangen oplossen. Dus het order ingeven blijft hetzelfde, en bij het ontvangen gaat het systeem bepalen of het over-aantal toegestaan is.

    Stel je hebt een order voor 1000 stuks, en er komt in werkelijkheid 1050 binnen. Dan zou je op de Leverancierkaart (of purchase & payable setup, of waar dan ook) een 'toegestaan overleverantie percentage' waarde hebben. Het systeem checkt of de waarde binnen die grens ligt, en intern wijzigt die dan de order tot precies de waardes die zijn ingegeven. Dus stel de leverancier heeft 10%, dan kijkt het systeem 'we mogen 1100 ontvangen voor deze leverancier', en gaat vervolgens de order heropenen, aantal aanpassen, en weer releasen. Voor dit voorbeeld is dat redelijk eenvoudig, en dat kan je zo ingewikkeld maken als nodig is.

    Het voordeel van deze methode is dat als je alles hebt ontvangen, wordt de order meteen volledig verwerkt. Er zijn op die manier geen 'backorder' waarden, omdat je niet kunstmatig het aantal hoog houdt voor het geval dat je meer ontvangt.
  • DenSterDenSter Member Posts: 8,307
    FabianNC wrote:
    In de Source expression in het Form staat bij de Variabele "Voorstel Aantal":

    "Overlever Basis"+("Overlever Basis"/100)*"Overlever %"
    Door het in de form als SourceExpr te zetten, is het nooit een waarde in een veld, het alleen een waarde in het form object. Als gevolg kan je die waarde nooit opvangen in code later (tenzij je die berekening nogmaals doet, maar dan kan je 'm net zo goed in de tabel doen).
    FabianNC wrote:
    Wat ik waarschijnlijk moet doen is deze berekening verplaatsen naar de Tabel. De berekening zal niet veel anders zijn (hooguit nog wat IF THEN's om het wat netter te maken bij ontbreken van waarden).

    Wat is de beste locatie om deze berekening te plaatsen?
    Het lijkt mij ook weer in de [Overlever Voorstel - OnValidate()].

    Als het 'Voorstel Aantal' veld wijzigt obv de berekening kan ik onderstaande code idd gebruiken en dan geloof ik wel dat het werkt :-).

    OnValidate trigger van "Voorstel Aantal" met de code Validate(Quantity, "Voorstel Aantal")
    Ja inderdaad zou ik het ook in een validatie trigger doen. Je kan ook een hybride oplossing doen, waar je op de lijn de toegestane waarde uitrekent, en bij het ontvangen kijkt of het daadwerkelijk ontvangen aantal gelijk of kleiner is dan die waarde, en dan order heropen, aantal aanpassen, en weer sluiten. Dan kan je mooi in een loopje doen aan het begin van de boeking.
  • FabianNCFabianNC Member Posts: 78
    Vandaag toch maar besloten om deze optie niet te blijven gebruiken.

    Het werkt perfect voor het invoeren van de Orderaantallen.

    Bij het ontvangst kan echter ook minder dan de maximale overlevering geleverd worden. In dat laatste geval is het handiger om alleen het Orderaantal te hoeven aanpassen, dan om een passende berekening te maken via het voorstel en een percentage.

    In dat geval zou namelijk ook de origineel uitgezette orders niet meer inzichtelijk / terug te vinden zijn.

    Natuurlijk kan ik in de berekening ook nog een veld invoeren ter correctie of afronding van de uiteindelijk binnengekomen aantallen, maar daar moet ik nog even over nadenken of dat alles oplost... en of dat mogelijk is.

    Alvast super bedankt voor de uitleg, dit kan ik in de toekomst in meerdere situaties toepassen!
    Navision 4.0 SP2 | Win 2003 TS
Sign In or Register to comment.