Uprawnienia
# | Nazwa uprawnienia | Opis |
---|---|---|
1 | orderlist | przeglądanie zamówień |
2 | orderInsertUpdate-externalorder | Dodawanie zamówienia i pozycji zewnętrzengo |
3 | orderInsertUpdate-internalorder | Dodawanie Zamówienia i pozycji wewnętrzenego |
4 | orderInsertUpdate-salesorder | Dodawanie Zamówienia i pozycji handlowego |
Typy zamówień (słownik orderType)
# | Nazwa | Opis |
---|---|---|
1 | Externalorder | Zamówienie zewnętrzne do dostawcy (ZAKUPU) |
2 | Internalorder | Zamówienie wewnętrzne (WEWNĘTRZNE) |
3 | salesorder | Zamówienia na produkcje (SPRZEDAŻY) |
Statusy zamówienia (orderStatus)
# | Nazwa | Opis | |
---|---|---|---|
1 | -1 | anulowany | |
2 | 0 | Szkic (status domyślny) – tylko statusy > 0 są brane pod uwagę w logice | |
3 | 1 | Zatwierdzony | |
4 | 2 | Częściowo zrealizowany | |
5 | 3 | Zrealizowany |
Numeracja
Baza Danych
# | Nazwa obiektu | Uprawnienie | Opis |
---|---|---|---|
1 | Document.order | Nagłówek | |
2 | document.orderline | Pozycje | |
3 | [document].[order_InsertUpdate] | Dodanie nagłówka zamówienia | |
4 | [document].[orderLine_InsertUpdate] | Dodanie pozycji | |
5 | [document].[orderLine_UpdateOrderLineStatus] | Zatwierdzenie nagłówka przycisk zatwierdź | |
6 | [document].[order_UpdateOrderStatus] | orderInsertUpdate | Zmiena statusów zamówienia |
7 | [document].[orderLine_document] | Pzoycje dla dokumentu magazynowego |
Walidacja
Nazwa błędu | Opis |
---|---|
error.order.statusChangeInvalid | Nie można zmienić statusu nagłowka zamówienia na 1 z innego statusu niz 0 |
error.order.statusChangeInvalidNoLines | Nie można zatwierdzać zamówienia bez pozycji |
Zmiany statusów:
- Zatwierdzanie nagłówka możliwe tylko gdy status jest szkic (od razu również zmieniają się statusy pozcji z 0 na 1)
- Anulowanie pozycji jest możliwe tylko gdy itemQuantityLeft = itemQuantity
- Nie można edytować rodzaju zamówienia po dodaniu
- Itemquantity = itemquantityleft – odejmuje się jeśli dokument jest wystawiony (itemquantityleft w bazie może być ujemne ale wyświetlamy jako 0 jeśli jest ujemne)
- Dodawanie zamóienia
- Jednostka zamówień – podpowiada się z jednostki zamowien lub jeśli brak z jednostki głownej
- W zamówieniu pozycje są dodawane w dwóch jednostkach. Automatycznie przelicza się ilość i cena w drugiej jednostce przy zmianach w pierwszej. Domyślne ilość w jednostce zamówienia.
- W zamówieniu itemQuantityLeft w drugiej jednostce iliczone jest ze wzoru QL2 = Q2/Q1*QL1
- document.orderLine.itemQuLeft.show0IfManRealized w configuration.configuration na true to dla wszystkich zrealizowanych pozzycji do realizacji się objawia jako 0 mimo, że w bazie jest prawdziwa wartość.
- Można edytować zamówienie po zatwierdzeniu ale nie można zmniejszyć ilości poniżej zrealizowanej ilości
Manualna realizacja pozycji zamówienia
- Jeśli zmieniamy na zrealizowane ustawiany jest status na wszystkich zaznaczonych pozycjach
- Opcja ustaw na niezrealizowane pozwala na wycofanie się z decyzji o tym, że pozycja jest zrealizowana. Wysyłany jest do procki status specjalny 20000. Status pozycji jest wtedy ustawiany na podstawie itemQuantity i itemQuentityLeft
- Anulować można tylko te, które mają itemQuantity = itemQuantityLeft
Zamówienia wewnętrzne
- Po zatwierdzeniu możliwość wystawienia ZZ
- Na ZZ automatem ustawia się typ zamówienia. Firma i dane pod nią przenosza się automatem i można zmienić
- Po zatwierdzeniu nagłówka wstawiają się automatycznie pozycje zamówienia z zamówienia wewnętrznego
- Pozycje zamówień są ze sobą powiązane
- Na razie nie robie logiki automatycznej realizacji zamówienia wewnętrznego przy wystawianiu zamówienia zakupu (nie jestem do tej ścieżki przekonany)
Edycja zamówienia zatwierdzonego
- Z uprawnieniem order.approved.line.edit można edytować pozycje zamówienia i dodawać do niego pozycję. System pilnuje jedynie aby nie dało się zmniejszyć ilośći poniżej zrealizowanej ilości z zamówienia.
Dokumenty magazynowe
Baza Danych
# | Nazwa obiektu | Uprawnienie | Opis |
---|---|---|---|
[document].[createDocumentLineFromOrderLine] | [documentlineInsertUpdate] | Zwracanie 1 pozycji dokumentu magazynowego na podstawie 1 pozycji zamówienia. Zapis pozycji jest dokonywany inną procedurą | |
[document].[document_InsertUpdate] [document].[document_List] | [documentInsertUpdate] [documentList] | Zapis nagłówka dokumentu (przychodu lub rozchodu) Lista dokumentów | |
[document].[document_List_Dictionary] | [documentList] | Lista dokumentów do prompta | |
[document].[document_udpateDocumentStatus] | [documentInsertUpdate] | Zatwierdzanie dokumentu niezależnie od kierunku (wywołuje zatwierdzanie pozycji) | |
[document].[documentline_List] | [documentlineList] | Lista pozycji dok. Magazynowego | |
[document].[documentline_List_dictionary] | [documentlineList] | Lista pozycji dok. Do prompta | |
[document].[documentline_updateOrderRealizedQuantity] | Aktualizacja zrealizowanej ilości na zamówieniu – wywoływana przy zapisie(zmianie) pozycji dok. Magazynowego jako szkic | ||
[document].[documentline_updateStockBalance] | Aktualizacja stanu magazynowego ogólnego i miesięcznego (wołana przy zatwierdzaniu pozycji dokumentu magazynowego) | ||
Walidacja
Nazwa błędu | Opis |
---|---|
error.document.commited.cannotBeModified | Brak możliwości edycji nagłówka lub pozycji już zatwierdzonego dokumentu |
error.document.header.withLinesCannotBeModified | Brak możliwości edycji nagłówka posiadającego pozycje |
error.document.withoutLinesCannotBeApproved | Brak możliwości zatwierdzenia dokumentu bez pozycji |
error.documentLine.invalidQuantity | Nie można utworzyć pozycji z ilością <= 0 |
error.documentLine.itemNotSelected | Nie można dodać pozycji itemId null lub Guid.empty lub innym nieistniejącym guidem w wms.item |
error.documentLine.itemSerialNumberRequired | Dla indeksw seryjnych nr seryjny jest wymagany |
error.documentLine.cannotCorrectDocumentOverItsQuantity | Nie można skorygować dokumentu na więcej niz posiada na pozycji |
documentMonth liczy się automatem po stronie bazy na podstawie documentDate
Usuwanie pozycji szkiców – logika
- Usuniete pozycje zmieniaja numer pozycji na ujemny aby nie powodowac ewentualnych problemów
- Pozycje o numerze większym niż numer pozycji usuwanej są przenumerowane
Przychody
Baza Danych
# | Nazwa obiektu | Uprawnienie | Opis |
---|---|---|---|
[document].[documentline_InsertUpdate] | [documentlineInsertUpdate] | Wstawienie pozycji przychodu jako szkic. Update pozycji. Przy usuwaniu pozycji szkic ta procka też jest wołana na razie. | |
[document].[documentlineIN_Commit] | Zatwierdzenie pozycji przychodu | ||
[wms].[locationByWarehouse_list_dictionary] | Wybór lokacji indeksu z prompta (ostatnia lokacja na początku listy) |
Walidacja
Nazwa błędu | Opis |
---|---|
error.documentLine.itemSerialNumberMustBeUnique | Nr seryjny musi być unikalny w ramach pary indeks-przychód |
error.orderLineOverRealized | Próba nadrealizacji pozycji zamówienia |
Wstawianie lub zmiana, usuniecie pozycji jako szkic – logika
- Aktualizacja zrealizowanej ilości na zamówieniu zakupu jeśli jest powiązane
Zatwierdzenie pozycji przychodu – logika
- Status pozycji na 1
- Aktualizacja maksymalnej ceny indeksu jeśli na pozycji wyższa
- Aktualizacja ostatniej ceny indeksu
- Aktualizacja stanów magazynowych
- Uzupełnienie ostatniej lokacji indeksu na magazynie (zapisuje się w stockBalance)
Sign = 1.
ItemQuantityLeft – trzyma ilości nierozchodowaną
Walidacje
- Użytkownik nie może dać na pozycji większej ilośći niż na realizowanej pozycji zamówienia jeśli pozycja realizuje zamówienie.
- Nie można wpisać ujemnej wartości ani 0 w pozycję.
Towary seryjne – logika
- trzeba dodawać ręcznie tyle pozycji ile potrzeba.
- Jeśli towar jest seryjny to numer seryjny musi być wypełniony
- Sprawdzana jest unikalnośc numeru seryjnego w ramach dokumentu przyjęcia oraz indeksu
PZ pozycje sa dodawane w dwóch jednostkach – na razie brakuje walidacji po stronie serwera czy przeliczenie się zgadza.
Wybór lokalizacji – pierwsza pojawia się lokalizacja gdzie towar ostatnio był
ZW – w bazie wygląda tak jak korekta RW (ma dodatkowo commisionLineId) (może korygować kilka RW)
Rozchody
Baza Danych
# | Nazwa obiektu | Uprawnienie | Opis |
---|---|---|---|
[document].[documentlineOUT_InsertUpdate] | [documentLineInsertUpdate] | Dodanie lub zmiana pozycji rozchodu (szkic) | |
[documentlineOUT_Commit] | [documentLineInsertUpdate] | Zatwierdzenie pozycji zamówienia | |
[wms].[item_ListForDocumentOut_dictionary] | zwraca towary wraz ze stanem na magazynie do prompta | ||
[wms].[item_ListForDocumentOutRw_dictionary] | zwraca towary wraz ze stanem na magazynie oraz uwzględniając już pobrane ze zlecenia produkcyjnego do prompta dla rw | ||
[wms].[locationByWarehouseDocumentOut_list_dictionary] | zwraca lokalizacje na których towar faktycznie jest |
Walidacja
Nazwa błędu | Opis |
---|---|
error.documentLine.outOfStock | Brak wystarczającej ilości towaru na magazynie |
Zatwierdzanie pozycji rozchodu
- Zatwierdzana pozycja szkic jest anulowana przez common.deleterecord (z docoment.document_updateStatus)
- Pobierane sa przychody z ktorych mozna zrobic rozchod
- W przypadku braku lokalizacji i nr seryjnego pobieramy przychody wg. FIFO
- Jeśli pozycja ma wybraną lokację to szukamy towarów nierozchodowanych w danej lokacji w kolejności FIFO
- Jeśli pozycja ma nr seryjny poszukujemy pozycji przychodu z konkretnym nr seryjnym
- Tworzone są pozycje rozchodu ze statusem 1 (zatwierdzony) powiązane z pozycjami przychodów
- Powiązanie poprzez wstawienie id pozycji przychodu do sourceDocumentLineId na pozycji rozchodu
- Zmniejszenie ilości itemQuantityLeft na pozycji przychodu o ilość rozchodowaną
- Jeśli pozycja rozchodu musiałaby być powiązana z wieloma pozycjami przychodów to tak naprawdę tworzy się tyle samo pozycji rozchodowych co powiązanych przychodowych. Pozycje są powiązane 1 do 1 między przychodem a rozchodem. Pozycje rozchodu mają wtedy ten sam nr pozycji i sa grupowane po stronie interefejsu.
- Aktualizowane są stany magazynowe
Wybór zlecenia produkcyjnego
- Nagłówek RW można opcjonalnie powiązać ze zleceniem produkcyjnym.
- Id powiązanego zlecenia w commisionId
- Dodatkowo wtedy w commisionLineId zapisuje się id domyślnej pozycji (pierwszej) zlecenia,które będzie się przypisywać do pozycji rw.
- Wybór powiązanej pozycji zlecenia dla pozcyji RW
- Jeśli powiązany ze zleceniem w naglowku to lista pozycji tylko z tego zlecenia oraz domyslnie wybrana 1 pozycja z tego zlecenia
- Jeśli nie ma powiazania w naglowku to lista wszystkich pozycji zlecen produkcyjnych \
Faktura zakupu
Mozliwość skopiowania pozycji z istniejących dokumentów PZ
Przy podpowiadaniu dokumentów PZ brana pod uwagę jest firma, waluta i magazyn.
Skopiowanie pozycji z PZ powoduje dodanie powiązania między pozycją faktury a pozacjami pz (koluma documentLineId w tabeli document.invoiceLine)
Przy podpowiadaniu Pztek są brane pod uwagę wszystkie powiązane i zatwierdzone faktury oraz faktura wystawiana.
Przy zatwierdzaniu jest sprawdzane czy po zatwierdzeniu suma na powiązanych zatwierdzonych fakturach przekraczałaby ilość na przychodach i jeśli tak system na to nie pozwala. (error.invoice.cannotConnectWithDocumentAboveItsQuantity)
Po dodaniu przynajmniej 1 pozycji do faktury nie można zmienić firmy, waluty i magazynu.
Dok. mag. <-> faktury
- Jesli tworzymy fakturę z zatwierdzonego dokumentu magazynowego to na pozycjach invoiceLine zapisuje sie documentLineId źródłowy. Po zatwierdzeniu faktury na źródłowych documentLine zapisuje się invoiceLineId
- Jesli tworzymy dok. mag. z zatwierdzonej faktury to na pozycjach documentLine zapisuje sie invoiceLineId źródłowy. Po zatwierdzeniu dok.mag. na źródłowych invoiceLine zapisuje się documentLineId
- Jeśli tworzymy fakturę z magazynowego to kopiują się tylko te pozycje z magazynowego, które nie posiadają zatwierdzonej faktury czyli które nie mają invoiceLineId
- Jeśli tworzymy dok. mag.z faktury to koopiują się tylko te pozycje faktury, które nie posiadają zatwierdzonego dok. mag. czyli te które nie mają documentLineId.
- Pozycje powiązane między magazynowymi a fakturami muszą mieć tę samą ilość (itemQuantity)
Przesunięcia
Powiązania
- pozycja MM+(WM+) jest powiązana z MM-(WM-) przez outcomeShiftLineId
- nagłówek MM+(WM+) jest powiązany z MM-(WM-) przez outcomeShiftId
- nagłówek i pozycje PO są powiązane z ZO przez outcomeShiftId
Po wystawieniu i zatwierdzeniu MM- (WM-) tworzy się automatycznie zatwierdzone MM+(WM+).
Przy wystawianiu MM- musimy podać lokację na magazynie docelowym jeśli magazyn docelowy wymaga podawania lokacji
Przy wystawianiu ZO oprócz danych indeksu zdejmowanego ze stanu podajemy indeks odpadowy jak i lokacje docelową jeśli magazyn tego wymaga. Jeśli indeks zdejmowany ze stanu i indeks odpadowy mają inne jednostki podstawowe to system próbuje dokonać przy zapisie pozycji ZO przeliczenia ilości między jednostkami. Aby było to możliwe musi istnieć przelicznik między tymi jednostkami w indeksie zdejmowanym lub jeśli nie istnieje to w indeksie odpadowym. Jeśli w żadnym nie ma przelicznika między jednostkami pozycja się nie zapisze. Przy zatwierdzaniu ZO indeksy odpadowe i przeliczone ilości są używane do wystawianie zatwierdzonego PO.
Korekty
Tabela document
correctedDocumentId | Id korygowanego dokumentu |
---|---|
initialCorrectedDocumentId | Id pierwszego korygowanego dokumentu. Jeśli np wystawiamy 1 korektę a potem 2ga. To 1 korekta ma correctedDocumentID wskazujące na oryginalny dokument. 2 korekta poprzez correctedDocumentId wskazuje na 1 korektę. Obie korekty poprzez initialCorrectedDocumentId wskazują oryginalny dokument |
Tabela documentLine
sourceDocumentLineId | Id pozycji korygowanej (może być id pozycji z korekty jeśli mamy więcej niż 1 korektę) |
---|---|
initialSourceDocumentLineId | Wskazuje korygowaną pozycję w dokumencie oryginalnym (nie korekcie) |
isCorrectiveLine | Oznaczenie pozycji korygującej |
correctedItemQuantity | Ilość na pozycji po korektach – aktualizowana na oryginalnym korygowanym dokumencie. Na korektach jest 0. |
correctedItemPrice | Ilość na pozycji po korektach |
Podczas korygowania dozwolone jest:
- zmniejszenie ilości na pozycji ale nie poniżej ilości rozchodowanej.
- zmiana ceny ale nie w przypadku gdy nie było żadnych rozchodów w pozycji
- dodanie zupełnie nowej pozycji do korekty
- korygowanie wielokrotne
W bazie zapisywane sa tylko te pozycje które coś korygują aczkolwiek jeśli ktoś w drafcie najpierw coś skoryguje a potem przywróci poprzednią wartość to pozostanie pozycja z 0 itemQuantity. Oczywiście w przypadku korekty ceny pozycja ma 0 itemQuantiy. Na pozycji która koryguje jakąś inną pozycję mamy ustawioną flagę isCorrectiveLine. Mamy również identyfikatory pozycji która jest korygowana w sourceDocumentLineId oraz jeśli korygujemy już kolejny raz poprzed kolejny dokument to id pozycji która była korygowana jako pierwsza w initialSourceDocumentLineId. InitialSourceDocumentLineId zawsze będzie miało wartość dla pozycji korygującej – jeśli jest to pierwsza korekta to sourceDocumentLineId i initialSourceDocumentLineId wskażą na to samo.
Pozycja korygująca ma zawsze znak przeciwny niż na oryginalnym korygowanym dokumencie. Np na PZ pozycja ma znak 1 a na korekcie PZ pozycja korygująca ma znak -1. ItemQuantity jest wpisana ilość o którą dokonywana jest korekta i zawsze jest nieujemna. W itemPrice wpisana jest cena po korekcie.
Na pozycji nie korygującej korekty (nowej pozycji) znak jest ten sam co na korygowanym dokumencie. Czyli na korekcie przychodu będzie 1 a na korekcie rozchodu -1. Na takiej pozycji flaga isCorrectiveLine jest ustawiona na false. Przy zatwierdzaniu taka pozycja jest
Pozycje korygujące przychodów mają jednoznaczne powiązanie z pozycjami przychodów.
, Przy zatwierdzaniu pozycji korygujących zmienia status się pozycji korygującej na 1. Aktualizuje również stan magazynowy jak i aktualizuje dane na pozycji na którą wskazuje initialSourceDocumentLineId. Zmniejsza tam itemQuantiyLeft oraz correctedItemQuantity oraz ustawia correctedItemPrice na taką samą jak na pozycji korygującej.
Zatwierdzanie pozycji korygującej przychodu jest realizowane oddzielną procedurą documentlineInCorrective_Commit która pozostawia powiązania między pozycją korygowaną i korygującą.
Tworzenie pozycji korygujących rozchodów jest nieco bardziej złożone. Rozchody bowiem mogą mieć rozbite pozycje dla każdej pozycji przychodu z którą są powiązane. Interface pokazuje na rozchodzie pozycje bez rozbicia. Tak samo musi się dziać przy korekcie rozchodu. Korekta jak draft ma 1 pozycję korygującą nawet jeśli odnosi się do pozycji rozchodu rozbitej w bazie na kilka pozycji. Przy zatwierdzaniu jeśli pozycja korygująca rozchodu ściąga z więcej niż z jednej pozycji rozchodu to pozycja korygująca ulega rozbiciu i wiąże się z odpowiednimi pozycjami poprzez initialSourceDocumentLineId. Natomiast sourceDocumentLineId jest takie samo jak na drafcie (zatem rozbite pozycje będą miały ten sam sourceDocumentLineId)
Definicje dokumentów (documentType)
Tabela documentType zawiera następujące kolumny
- documentType – nazwa wyświetlana typu dokuentu. Wykorzystywana jako część nr dokumentu. Rzadko specyficznne wartości wyróżniają się specjalną logiką (zmiana nazw dla tych typów spowoduje nie działanie logiki). Są to:
- PZI - dla tego dokumentu przyjęcia zewnętrznego pojawiają się te same pola co dla innnych przyjęć zewnętrznych + dane kursu. Przy zapisie dane kursu służą do obliczenia wartości i ceny w walucie systemowej.
- PI-,PI+ - różnice inwentaryzacyjne. Na podstawie nazwy typu dokumentu pojawia się kontrolka przy dodawaniu pozycji do wyboru pozycji arkusza spisowego. Również przy wystawianiu automatycznych dokumentów różnicowych do inwentaryzacji kod dokumentu jest „hardcodem” na jedną z tych dwóch wartości.
- ZO – zdjęcie odpadu. Na podstawie nazwy typu pojawiają się kontrolki dowyboru (indeks) danych dla automatycznego PO
- MM- przy zatwierdzaniu tworzy się automatycznie dokument o nazwie MM+
- WM- przy zatwierdzaniu tworzy się automatycznie dokument o nazwie WM+
- ZO przy zatwierdzaniu tworzy się automatycznie dokument o nazwie PO
- description – zwyczajny opis tekstowy (wyświetlany w kombo do wyboru typu dokumentu do wystawienia)
- componentName – nazwa komponentu. W przypadku dokumentów magazynowych dokładnie ta nazwa która jest zapisana w tej kolumnie jest używana jako komponent do obsługi dokumentu. W przypadku faktur to komponent nazywa sie invoice natomiast wartość z componentName jest wewnętrznie używana przez komponent do ukrycia bądź pokazania kontrolek dla faktur sprzedaży bądź zakupu
- baseDocumentType – nazwa bazowego typu dokumentu służy mi głównie do rozróżnienia grup dokumentów o podobnych cechach dla któryh logika jest taka sama lub zbliżona. Zmiany w tym polu będą powodowały zmiany w zachowaniu nowowystawianych dokumentów. Ogólnie korekty mają te same pola co dokumenty korygowane tylko niektóre nieedytowalne. Muszą mieć więc typy bazowe odróżniające je od innych korekt.
- PZ – przyjęcia zewnętrzne. Posiadają kontrahenta. Posiadają możliwość wpisania z palca numeru faktury jak i numeru powiązanego dokumentu magazynowego. Mogą realizować zamówienia zakupu. Jest możliwość podawania ilości i cen w dwóch jednostkach. Brak powiązań ze zleceniami produkcyjnymi. Jest możliwość wystawienia do nich faktur zakupowych.
- PR_PZ – korekta PZ
- PR_PZI – korekta PZ w walucie obcej (osobny typ ze względu na logikę)
- WZ – wydania zewnętrzne. Trzeba podać kontrahenta. Można wystawić do nich fakturę lub wystawić je z faktury. Nie mają powiązań ze zleceniami produkcyjnymi.
- PR_WZ – korekta WZ
- FW – faktura zakupu (faktura wewnętrzna). Możliwość wystawiania jej z PZ lub wielu PZ. Możliwość wystawianie z niej PZ.
- MM – przesunięcia międzymagazynowe posiadają magazyn przeciwny, lokację przeciwną
- PW – przyjęcie wewnętrzne niepowiązane ze zleceniem. Brak kontrolek do wyboru kontrahenta i zlecenia.
- PWCO – przyjęcie wewnętrzne opcjonalnie powiązane ze zleceniem. Brak kontrolek wyboru kontrahenta. Są kontrolki do wyboru zlecenia oraz pozycji zlecenia ale nieobowiązkowe do wypełnienia.
- PWP – przyjęcie wewnętrzne które musi być powiązane ze zleceniem produkcyjnym – posiada kotrolki które trzeba wypełniać
- KO_PW – korekta przyjęcie wewnętrznego PWP
- RW – rozchód wewnętrzny bez powiązań ze zleceniami produkcyjnymi. Oczywiście brak kontrahenta.
- RWCO – rozchód wewnętrzeny z opcjonalnym powiązaniem ze zleceniem
- RWO – rozchód wewnętrzny obowiązkowy powiązany ze zleceniami produkcyjnymi
- KO_RW – korekta rozchodu wewnętrznego nie powiązanego ze zleceniem produknyjnym
- KO_RWP – korekta rozchodu wewnętrzego powiązanego ze zleceniem (RWP)
- RWPWPO – formularz do wystawiania dokumentów po cięciu laserem. Zbiorcze wystawienie RWP, PWP, PO i ZO
- WMM – przesunięcie wewnątrzmagazynowe. Posiada jedną kotrolkę wyboru magazynu ale na każdej pozycji podawana jest lokacja źródłówa z ktróej jest rozchód oraz lokacja docelowa z której jest przychód
- displayOrder – kolejność w jakiej typy dokumentów pojawiają się w kombo do wyboru
- documentCategory – na podstawie tej wartości odpowiednie dokumenty pojawiają się w odpowiednich podmenu
- commercial – dokumenty pojawiające się do wyboru przy wystawianiu faktur.
- Dokumety które mają componentName saleInvoice pojawiają się do wyboru w menu wyboru typu faktury sprzedaży.
- Dokumenty które mają componentName orderInvoice pojawiają się do wyboru w menu wyboru typu faktury zakupu.
- warehouse – dokumenty pojawiające sie do wyboru przy wystawianiu dokumentów magazynowych. Jeśli componentName:
- documentIn – w menu przychodów
- documentOut – w menu rozchodów
- documentHybrid – w menu inne
- warehouseC – korekty, nie są możliwe do wyboru z menu wystawiania dokumentów a jedynie w panelu istniejącego dokumentu.
- warehouseH – ukryte dokumenty których nie można wystawić manualanie a jedynie automatycznie z innych dokumentów. Nie pojawiają się w menu. Aktualnie są to: MM+ i WM+
- commercial – dokumenty pojawiające się do wyboru przy wystawianiu faktur.
- correctiveDocumentType – Typ dokumentu który koryguje dokument danego typu. Pojawia się na buttonie do wystawiania korekty w kontekście dokumentu. Jeśli wartość jest null tzn że dokumetu nie da się korygować (dotycy dokumentów magazynowych). Na korektach też jest wypełniany gdyż po korekcie można wystawić kolejną korektę.
- cooperationDocumentType – jeśi dokument przychodowy ma wypełniony ten typ to dla niego wyświetlany jest komponent wiązania z dokumentami rozchodowymi do tego samego kontrahenta. Również po tej wartości filtrowane są dokumenty rozchodowe z którymi można wiązać dokument przychodowy.
Inwentaryzacja
Dokumenty różnicowj e
Dokumenty różnicowe do arkusza spisowego można wystawić na 2 sposoby:
- Wybrać PI- lub PI+ z listy dokumentów. Przy dodawaniu pozycji wybrać pozycję zamkniętego arkusza spisowego podczas dodawania pozycji dokumentu różnicowego.
- Przy zamknięciu inwentaryzacji wystawią się wszystkie dokumenty różnicowe z wyjątkiem tych pozycji dla których są już wystawione sposobem z p.1 albo są to pozycje na indeksy seryjne – wtedy zostaną pominięte ale dla pozostałych pozycji dokumenty się wystawią.
Dla dokumentów różnicowych powiązanych z arkuszami spisowymi na dokumentach zasady są następujące
- Ilość na pozycji dokumentu magazynowego musi zgadzać się z różnicą na pozycji arkusza spisowego
- Indeks musi być identyczny na dokumencie magazynowym jak i arkuszu spisowym
Powiązanie:
W tabeli documentLine istnieje kolumna inventorySheetLineId która jest uzupełniana identyfikatorem pozycji powiązanego arkusza spisowego.
Blokowanie obrotu magazynowego
Blokowanie obrotu jest realizowane według następujących reguł
- jeśli na arkuszu spisowym uzupełniona jest lokacja to zawsze blokowany jest obrót magazynowy tylko na tej lokacji ale nie na całym magazynie
- na całym magazynie obrót jest blokowany jeśli dodana jest pozycja do arkusza spisowego która ma pustą lokację
- blokowanie polega na uniemożliwieniu zatwierdzenia dokumentu magazynowego na lokację lub/i magazyn który jest zablokowany
- w czasie blokady można wystawić drafty
Rozwiązanie techniczne
- w tabeli wms.stockBalance jest kolumna lockedInventorySheetLineId która jest uzupełniana gdy pozycja jest dodawana do arkusza spisowego
- przy próbie zatwierdzania dokumentu magazynowego są porównywane są magazyn i lokacja w stockBalance które mają wypełniają kolumne locked.. wypełnioną
- lokacja, magazyn odblokowuje się gdy
- usuwana jest pozycja arkusza spisowego która blokuje
- zatwierdzana jest inwentaryzacja powiązana z pozycją arkusza która blokuje
Bilans
Podstawowe inforamcje
- Tabela MRP.requisition – wstepnei przetworzone dane o zleceniach i pozycjach zlecenia
- Procedura [MRP].[requisition_reset] - uzupelnia tabele MRP.requisitionlist odpalana przy zaminach na zleceniu
- Requisitionlist – widok po stronie systemu
Założenia głowne
- Tylko zlecenia które maja ustawione uwzglednij w bilansie isMRPincluded – sa obliczane ma to na celu odfiltrowanie wstępne smieci
Algorytm
- Tabela mrp.requisition uzupelniana jest prz
Przykłąd wywołania
;EXEC [MRP].[requisition_list] @username= 'marcin.kotynia', @commisionID=null, @commisionLineID=null, @itemID=null, @regroup = 'False', @page = '1', @inputxml = '<root><item remoteid="00000000-0000-0000-0000-000000000000" remotesource="">
<col name="warehouseIdListSelectedValues">077673f3-cdb9-4dda-893e-de73db325712</col>
<col name="commisionStatusSelectedValues">953c9ffd-7dd7-4887-9ed0-443011c026b9</col>
<col name="missing">False</col>
<col name="isDivision">False</col></item></root>'