Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: SlawekPL w Grudzień 03, 2015, 14:13:15
-
Witam!
Potrzebuję uzyskać informację o stanie magazynowym danego produktu na koniec zadanego dnia.
Znalazłem tablicę [dok_MagRuch], zgaduję że wydania to te pozycje, które nie mają ustawionego mr_MagID więc przygotowałem takiego SQL'a
Stan towaru o ID:1 z magazynu MAG:1
-- Stan towaru o ID:1 z magazynu MAG:1
SELECT sum ( case when mr_MagId is null then -mr_Ilosc else mr_Ilosc end )
FROM [dok_MagRuch]
where (mr_MagID is null or mr_MagId=1) and mr_Data<'2008-08-10' and mr_TowId=1
Czy to jest OK, czy powinienem podejść do tego w inny sposób?
Jeszcze jedno: nie bardzo rozumiem znaczenie pola mr_Pozostalo. Przy większości wydań jest ono równe mr_Ilosc, ale czasami jest mniejsze.
--
Sławek
-
Jeśli "produktu", to zakładam, że jednego. Informator do tego nie wystarczy?
-
Aldo... pytam w dziale "Sfera zestawienia dodatki", a nie "Subiekt dla początkujących" powinieneś się domyślić. :)
Oczywiście że "informator nie wystarczy", bo ma to być część większego podprogramu.
A teraz jak już wiesz, to proszę podziel się wiedzą.
-
Dlaczego kolejny raz pytasz o to samo, zajrzyj jak działa program: http://www.forumsubiekta.pl/dodatki-zestawienia/data-blokady-i-crash-sfery/msg53462/#msg53462 (http://www.forumsubiekta.pl/dodatki-zestawienia/data-blokady-i-crash-sfery/msg53462/#msg53462).
-
Aldo... pytam w dziale "Sfera zestawienia dodatki", a nie "Subiekt dla początkujących" powinieneś się domyślić. :)
Oczywiście że "informator nie wystarczy", bo ma to być część większego podprogramu.
A teraz jak już wiesz, to proszę podziel się wiedzą.
A tego nie napisałeś, a ja nie lubię się domyślać.
mr_Pozostalo to pozostała ilość towaru tej dostawy. Odnosi się to ilości przyjętej z danej dostawy czyli mr_Ilosc.
-
mr_Pozostalo to pozostała ilość towaru tej dostawy. Odnosi się to ilości przyjętej z danej dostawy czyli mr_Ilosc.
No tak, w dostawie ta wartość ma sens i jest zrozumiała. Można ją wygodnie wykorzystać do zliczenia aktualnej ilości towaru.
Ale co oznacza mr_Pozostało w przypadku sprzedaży?
Mam przykładowy towar:
mr_Id mr_DoId mr_SeriaId mr_PozId mr_TowId mr_MagId mr_Data mr_Ilosc mr_Pozostalo mr_Cena mr_Termin
6365 NULL 6365 6257 1 1 2009-11-25 00:00:00.000 250,00 0,00 46,17 NULL
6369 6365 6365 6262 1 NULL 2009-11-25 00:00:00.000 9,00 9,00 46,17 NULL
6372 6365 6365 6264 1 NULL 2009-11-25 00:00:00.000 40,00 40,00 46,17 NULL
6373 6365 6365 6265 1 NULL 2009-11-25 00:00:00.000 50,00 50,00 46,17 NULL
6378 6365 6365 6269 1 NULL 2009-11-25 00:00:00.000 100,00 70,00 46,17 NULL
6392 6365 6365 6298 1 NULL 2009-11-26 00:00:00.000 2,00 2,00 46,17 NULL
6402 6365 6365 6308 1 NULL 2009-11-26 00:00:00.000 10,00 10,00 46,17 NULL
6405 6365 6365 6368 1 NULL 2009-11-27 00:00:00.000 4,00 4,00 46,17 NULL
6407 6365 6365 6593 1 NULL 2009-12-07 00:00:00.000 10,00 10,00 46,17 NULL
6410 6365 6365 6604 1 NULL 2009-12-07 00:00:00.000 1,00 1,00 46,17 NULL
6712 6365 6365 7057 1 NULL 2009-12-28 00:00:00.000 20,00 20,00 46,17 NULL
6773 6365 6365 7137 1 NULL 2009-12-31 00:00:00.000 1,00 1,00 46,17 NULL
7016 6365 6365 7423 1 NULL 2010-01-13 00:00:00.000 3,00 3,00 46,17 NULL
Jak rozumieć piąty rekord? mr_Ilosc jest równa 100, a mr_Pozostało 70.
Sumując mr_Ilosc w wydaniach dostaję razem 250, co by odpowiadało całkowitej sprzedaży danej pozycji towaru, ale nadal
nie wiem co to za różnica w ilości o 30.
-
Łopatologicznie, to z dostawy towaru liczącej 100 szt. pozostało jeszcze 70 szt. Czyli 30 zostało sprzedane.
-
Łopatologicznie, to z dostawy towaru liczącej 100 szt. pozostało jeszcze 70 szt. Czyli 30 zostało sprzedane.
Byłoby to jasne (co zresztą napisałem) gdyby ten wpis dotyczył faktury zakupu (nazwałem ją w swoim poście dostawą - bo myślę z pozycji magazynu).
Ale ten wpis dotyczy dokumentu sprzedaży. Dlatego nie mogę tego zrozumieć. Jak pozycja sprzedaży może mieć 100 a pozostało 70 ?
-
Łopatologicznie, to z dostawy towaru liczącej 100 szt. pozostało jeszcze 70 szt. Czyli 30 zostało sprzedane.
Byłoby to jasne (co zresztą napisałem) gdyby ten wpis dotyczył faktury zakupu (nazwałem ją w swoim poście dostawą - bo myślę z pozycji magazynu).
Ale ten wpis dotyczy dokumentu sprzedaży. Dlatego nie mogę tego zrozumieć. Jak pozycja sprzedaży może mieć 100 a pozostało 70 ?
Ta tabela nie dotyczy dokumentu sprzedaży, tylko, zgodnie z jej nazwą, ruchu towaru na magazynie. A z zapisanych pozycji wynika, że stan danego towaru ze 100 szt zmniejszył się o 70 szt, a pozostało jeszcze 30 szt. (z danej dostawy).
-
Ta tabela nie dotyczy dokumentu sprzedaży, tylko, zgodnie z jej nazwą, ruchu towaru na magazynie.
Masz rację! Uznałem skrótu myślowego sprzedaż=wydanie magazynowe, to mogło zmylić.
oczywiscie - myślimy cały czas o ruchu towaru na magazynie
A z zapisanych pozycji wynika, że stan danego towaru ze 100 szt zmniejszył się o 70 szt, a pozostało jeszcze 30 szt. (z danej dostawy).
Jestem Ci mega wdzięczny że zainteresowałeś się moim tematem. Szanuję twoją wiedzę, ale muszę dopytać.
Gdybyś mógł spojrzeć na mój post z 6 grudnia. Dałem tam wynik SQLa w którym pytałem o ruch towaru o mr_ID=6365
Widać w tej tabeli pierwszy wpis, który mówi że przyszło 250 sztuk, a zostało (na dziś dzień) ZERO. To się zgadza, ale
ponizej mamy rekordy wydawania kolejnych sztuk tego towaru z magazynu.
Najpierw schodzi 5 sztuk, potem schodzi 40 sztuk itd... aż towar osiągnął obecny stan ZERO.
Ja nie potrafię zrozumieć, dlaczego we wszystkich wydaniach (oprócz tego 100/70 na piątej pozycji) w kolumnie mr_Pozostało jest taka sama ilość jak wychodzi.
Gdyby było tak jak napisałeś, to w pierwszym wydaniu powinno być: Ilość 9 Pozostało: 241,
w drugiej Ilość 40 Pozostało 201 itd.... a jest inaczej.
-
Pewnie dlatego, że wpisy nie dą dodawane, tylko aktualizowane i zawsze masz ostatni stan. Inaczej ta tabela byłaby stąd do księżyca.
-
Ja nie potrafię zrozumieć, dlaczego we wszystkich wydaniach (oprócz tego 100/70 na piątej pozycji) w kolumnie mr_Pozostało jest taka sama ilość jak wychodzi.
Bo najprawdopodobniej było wydane 100 ale później z tego wydania był zwrot lub korekta na -30 . Zgadza się?
-
Pewnie dlatego, że wpisy nie dą dodawane, tylko aktualizowane i zawsze masz ostatni stan. Inaczej ta tabela byłaby stąd do księżyca.
Aldo - zaglądałeś w ogóle do tej tabelki z przed 7 postów?
To co napisałeś się nie zgadza z danymi. O jakim jakim 'zawsze ostatnim stanie' mówisz? Ostatni stan to jest teraz zero.
Skoro byłyby aktualizowane, to dlaczego w każdym rekordzie w tym polu pozycji jest co innego?
Umówmy się, że na ten moment nie wiesz tak samo jak ja co jest w pozycji mr_Pozostało przy wydaniach magazynowych i tylko gdybasz.
Nie zmienia to faktu, że jestem Ci wdzięczny za zainteresowanie tematem :)
Bo najprawdopodobniej było wydane 100 ale później z tego wydania był zwrot lub korekta na -30 . Zgadza się?
O tym nie pomyślałem. Przy czym gdyby tak było to na stan powinno pojawić się te 30 zwróconych sztuk. Chyba że pojawiają się już pod nowym mr_ID.
Widać muszę sam dopasować te wpisy w bazie danych do faktur w subiekcie i sprawdzić krok po kroku.
Ale dziękuję za trop!
-
Bo najprawdopodobniej było wydane 100 ale później z tego wydania był zwrot lub korekta na -30 . Zgadza się?
Bingo!
Rozszerzyłem zapytanie dotyczące ruchu towaru o powiązanie z mr_SeriaID:
SELECT *
FROM dok_MagRuch
where mr_DoId=6365 or mr_Id=6365 or mr_SeriaID=6365
I znalazła się brakująca korekta, oraz sprzedaż z towarów które tą korektą wróciły (4 ostatnie linijki)
mr_Id mr_DoId mr_SeriaId mr_PozId mr_TowId mr_MagId mr_Data mr_Ilosc mr_Pozostalo mr_Cena mr_Termin
6365 NULL 6365 6257 1 1 2009-11-25 00:00:00.000 250,00 0,00 46,17 NULL
6369 6365 6365 6262 1 NULL 2009-11-25 00:00:00.000 9,00 9,00 46,17 NULL
6372 6365 6365 6264 1 NULL 2009-11-25 00:00:00.000 40,00 40,00 46,17 NULL
6373 6365 6365 6265 1 NULL 2009-11-25 00:00:00.000 50,00 50,00 46,17 NULL
6378 6365 6365 6269 1 NULL 2009-11-25 00:00:00.000 100,00 70,00 46,17 NULL
6392 6365 6365 6298 1 NULL 2009-11-26 00:00:00.000 2,00 2,00 46,17 NULL
6402 6365 6365 6308 1 NULL 2009-11-26 00:00:00.000 10,00 10,00 46,17 NULL
6405 6365 6365 6368 1 NULL 2009-11-27 00:00:00.000 4,00 4,00 46,17 NULL
6407 6365 6365 6593 1 NULL 2009-12-07 00:00:00.000 10,00 10,00 46,17 NULL
6410 6365 6365 6604 1 NULL 2009-12-07 00:00:00.000 1,00 1,00 46,17 NULL
6712 6365 6365 7057 1 NULL 2009-12-28 00:00:00.000 20,00 20,00 46,17 NULL
6773 6365 6365 7137 1 NULL 2009-12-31 00:00:00.000 1,00 1,00 46,17 NULL
7016 6365 6365 7423 1 NULL 2010-01-13 00:00:00.000 3,00 3,00 46,17 NULL
7426 6378 6365 8006 1 1 2010-02-18 00:00:00.000 30,00 0,00 46,17 NULL
7660 7426 6365 8358 1 NULL 2010-03-09 00:00:00.000 7,00 7,00 46,17 NULL
8937 7426 6365 8688 1 NULL 2010-03-18 00:00:00.000 20,00 20,00 46,17 NULL
8942 7426 6365 9523 1 NULL 2010-04-21 00:00:00.000 3,00 3,00 46,17 NULL
Korekta z jednej stronie aktualizuje mr_Pozostało w wydaniu, a zarazem tworzy nowy mr_Id ze zwracanymi pozycjami.
Czyli moje zapytanie z pierwszego posta powinno być dobre bo (nieco przypadkiem) prawidłowo obejmuje korekty.
Dziękuję za wskazówki wszystkim którzy się odezwali!
-
Zostawiam dla potomnych, bo straciłem kilka dni (załącznik)
-
Gdybyś skorzystał z moje porady i zobaczył jak wartości te wylicza program to zajęłoby ci to jakieś 15-30 minut, ale zrobiłeś po swojemu... Poza tym zapytanie nie jest poprawne, zbędnie dotykasz tabeli zmian cen dostaw skoro interesuje Cię tylko stan magazynowy...