Table of Contents

Izveštaj o stanju lagera sa presekom na dan po FIFO metodu

Izveštaj treba da omogući analizu razlike knjigovodstvene vrednosti skladišta vođenog po metodu srednje nabavne cene u odnosu ekvivalentno stanje ako bi se magacin vodio po FIFO metodu.

Balans zvanično ne podržava rad po FIFO metodu pa se radi isključivo o simulaciji.

Realizacija izveštaja neće se oslanjati na detekciju svake promene u sistemu i dodeljivanje FIFO zapisa, već će biti iskorišćen inverzan pristup. Suština se sastoji u zapažanju da prema FIFO-u preostala količina robe na lageru mora da je zaprimljena po poslednjem ulazu. Ukoliko je ima više od toga, znači da deo pripada pretposlednjem i tako dok se zaliha ne izravna sa nulom.

Algoritam se sastoji od sledećih koraka:

  1. Formirati spisak nabavki određenog artikla na određenom magacinu sortiran po datumu prijema u opadajućem poretku.
  2. Obrisati sve stavke koje su nastale nakon dana sa kojim se vrši presek.
  3. Formirati lager listu na dan preseka.
  4. Procesirati stavku po stavku sa lager liste usaglašavajuči je sa spiskom nabavki tako da se zadovolje uslovi iz pomenutog zapažanja.
  5. Obrisati sve stavke iz spiska nabavki kojima nije dodeljena količina iz lager liste. Zapažanje nalaže da su u pitanju nabavke robe koja je prodata i ne učestvuje u lager listi.
  6. Napraviti izveštaj koji će prikazati rezultujući spisak nabavki kao Lager listu na dan X - po FIFO metodu.

Procesni zadatak

Priroda posla je takva da ne može biti realizovana u jednoj SQL proceduri u okviru Jet-a (moglo bi na standardnim SQL serverima). Osnovu algoritma čini petlja za raspoređivanje preostale količine po lager listi na spisak nabavki.

Posao će biti poveren BLMrdSys biblioteci. Sistem će činiti izveštaj Lager na dan X - po FIFO obračunu koji će u okviru svog mrd-a zahevati novu sistemsku funkciju @LFF.

@LFF

Komanda BLMrdSys biblioteke ima sledeća dejstva:

  1. Upit korisnika za datum preseka stanja na lageru (sem ako se datum preda na drugi način)
  2. Upit korisnika da odabere magacin koji se obračunava (bez opcije “sva skladišta”)
  3. Priprema tabele TmpKorSimpCalc (u njoj će se čuvati obrađeni podaci)
    1. brisanje svih zapisa pokrenutih pre više od 2 dana
    2. provera da li neko već radi istu stvar za isto skladiše i obaveštenje o mogućem usporenju
  4. Prosleđivanje dobijenog JobID-a izveštaju

Tabele "TmpKorSimpCho" i "TmpKorSimpCalc"

Tabela sadrži rezultat obračuna @LFF procedure. Ona je podskup tabele TmpKorSimpCho u kojoj se evidentira tok procesa obračuna kako bi ostali korisnici mogli da preduzmu neophodne korake (sačekati da se tekući obračun završi ili prekinuti tekući obračun i započeti sopstveni).

tmpkorsimpcalc.jpeg

TmpKorSimpCho

Polje Vrsta Vrednost Opis
JobID Long
Funkcija Long 1001 Indikator vrste obračuna koji se obrađuje u slogovima TmpKorSimpCalc tabele.

Vrednosti su registrovane u KontneGrupe > KontneGrupeSas tabelama pod KGrID=1195 (Privremeni zapisi obračuna). Zapisi su dostupni i preko viewa FN_TempCalc.
IDFld Long Skladista.SklID
Identifikacioni broj skladišta koje se obračunava.
Za sada je predviđeno da se obračun uvek vrši za sve artikle na odabranom magacinu. Po potrebi moguće je dodavanje dodatnih filtera (KatID, PodKatID).
AddID Long 0-100 Procenat završenosti posla.
Datum1 Date Datum i vreme pokretanja procesa.
Datum2 Date Datum i vreme poslednjeg osvežavanja statusa AddID.
Datum3 Date Datum i vreme završetka procesa.
Datum4 Date Datum i vreme sa kojim je izvršen presek stanja (datum preseka lagera).

Algoritam:

  1. Korisnik zadaje skladište i datum (opciono i vreme) preseka stanja.
  2. Provera da li je proces za dati magacin sa takvim parametrom preseka već pokrenut, kao i da li je u logičnim okvirima.
    Ako je pokrenut: Ponuditi “kačenje” na proces koji je već u toku
    Ako nije zadovoljen logički okvir: Ponuditi prekid pokrenute procedure i započinjanje nove
    Ako nije ni pokrenut: Upis vrednosti SklID u IDFld, resetovanje vrednosti :
    AddID =0
    Datum1 =Datum i vreme pokretanja procedure
    Datum2 i Datum3 = NULL
    Datum4 =Zabeležiti datum i vreme na koje se radi presek
  3. Pokretanje @LFF procesa izračunavanje dužine trajanja procesa i upis progresa u AddID polje.
  4. Osvežavati polje AddID napretkom obračuna, istovremeno upisivati u polje Datum2 vreme kada je poslenje osveženje obavljeno. Osveženja se rade u koracima od po 1 (%). Znači biće 100 osvežavanja zapisa.

TmpKorSimpCalc

Polje Vrsta Vrednost Opis
TmpsccID Long, PK AUTOINCREMENT Jedinstveni primarni ključ sloga.
TmpsmpID Long, FK UniBroj.UsrFn (blbrUNIFUN) Refernca ka tabeli TmpKorSimpCho.
DocID Long Ulaz.UlID Identifikator dokumenta (UlID) ulazne kalkulacije koja je predmet obračuna.
SasID Long SasUlaz.SasUlID Identifikator pozicije u sastavu ulazne kalkulacije koja je predmet obračuna.
DTStamp Double Vremenski pečat transakcije (kako bi se ispravno sortiralo u opadajućem poretku).
ElID Long SasUlaz.ElID Identifikator artikla koji se obrađuje.
KolCalc Double Količina koja se sa lager liste “raspoređuje” na konkretan slog. Sve što ostane sa NULL (neraspoređeno) se briše