Title: Waardetoekenning Chargesoort P loopt fout bij gegevens geallokkeerd Post by: Heart Informatisering B.V. on November 07, 2018, 05:14:44 pm In een heel enkel geval trad het wel eens op dat als we een Produktieorder gingen goedkeuren waarbij voorraad uit een P.O. was opgeboekt zonder Kostprijs (Chargesoort P), de P.O. weliswaar status "G" kreeg, maar er toch Charges op voorraad bleven liggen met de status "Prijs niet bekend".
Eenmaal wetend wat er fout ging, was de fout redelijk simpel te reproduceren: - Maak een Omvorm Opdracht - Genereer Etiketten voor de Output van de Omvorm Opdracht - Boek via het Scanterminal OPboeken Output 1 Subcharge gereed - Ga vervolgens naar een Scanterminal Verplaatsen Voorraad, scan de zojuist opgeboekte partij, boek deze over naar een Lokatie met een kleinere Identifikatie als waar ze vanaf kwam, maar druk nog even niet op F1 = Verwerken. - Ga nu op een ander werkstation het grondstoffenverbruik afboeken, goedkeuren, en keur de Output v/d P.O. goed. Het 2e werkstation zal nu een melding krijgen "De gevraagde gegevens zijn geallokeerd door een andere gebruiker". Tegen de tijd dat de 1e Gebruiker klaar is, kan de 2e verder, en daar gaat het fout. Omwille van Replikatie van Voorraaditems naar SQL, waarbij een Voorraaditem een tabel betreft waarvan de sleutelgegevens (inhoud, Lokatie) continue wijzigen, is er in 2007 gesteld dat ieder Voorraaditem na een mutatie moet resulteren in een nieuw recordnummer. Dit houdt nu echter in dat als de gebruiker het record vrijgegeven krijgt, ze feitelijk in een 'verwijderd' record terecht komt, en niet "het juiste record" wordt gewijzigd naar een "Normale Charge". Dit effekt wordt nog eens verergerd doordat een SKIP naar het volgende te verwerken record ook tot niets leidt, immers, bij het ' verwijderen van een record wordt de Bedrijfs-id aangepast in de database, en we skippen vervolgens op basis van een record waarvan de positie in de index ook nog eens gewijzigd is. Met ingang van deze Releasenote is dit probleem opgelost v.w.b. de Waardetoekenning van Chargesoort "Prijs niet bekend". LET OP: Op het 1e scherm drukken we op enig moment op F1. Dit boekt bijv. voorraad over van Lokatie B1ALG naar 1B10C. Zo'n transaktie bestaat uit: a. het verwijderen van de voorraad op lokatie B1ALG b. het opboeken van de voorraad op lokatie 1B10C. Zodra stap a. is uitgevoerd (en anders zodra we in b. een nieuw record gaan toevoegen en deze locken), vervalt de recordlock op het oude Voorraaditem-record. Op dat moment zal de andere PC direkt het signaal krijgen "het record is niet meer gelockt" en gaat ze verder. "Verder gaan" betekent hier nu "je moet even opnieuw naar Voorraad van deze Charge zoeken", immers het gevonden (en vrijgegeven record) bestaat niet meer. Maar... dat vrijkomen van het record gebeurt in dit geval noch VOORDAT het nieuwe record is aangemaakt, waarbij die tweede poging alsnog niets doet. Resumer: nadat het record is vrij gegeven, wachten we 10 seconden om "het andere proces" de tijd te geven om het nieuwe record aan te maken. Op zich is die 10 seconden aan de langere kant, maar, deze noodprocedure is enkel nodig als iemand NET op het moment dat wij de order gaan Goedkeuren, die voorraad in gebruik heeft. Gezien het in praktijk opgetreden aantal foutsituaties is die kans klein, en rechtvaardigd dat we voor de zekerheid best even mogen wachten. Tijdens deze wachttijd staat er boven in het scherm een melding: "Record is vrijgegeven; Aktualiseren Data...".
|