Zasoby dostępne
Moderator: mikey
Zasoby dostępne
Dzień dobry,
Karta towaru, zakładka zasoby. Jest kilka zasobów i są na nich rezerwacje częściowe, na dolnej części formatki mam:
Wyświetl ilości
Stany Dostępne
Rezerwacje
jeśli zaznaczę Rezerwacje to pokazuje się dodatkowa kolumna z ilościami zarezerwowanymi (rezerwacje są robione zasobowo) i jest ok ale jeśli zaznaczę dostępne to powinna się pokazać dodatkowa kolumna z ilościami dostępnymi, czyli stan minus rezerwacje ale nic się nie zmienia.
cze tak to powinno wyglądać czy jestem w błędzie?
Chciałbym ten problem rozwiązać dodając na stałe kolumnę z ilościami jakie zostały dostępne po odjęciu rezerwacji, pomoże ktoś aby mnie naprowadzić jakich tabel użyć?
pozdrawiam
Darek
Karta towaru, zakładka zasoby. Jest kilka zasobów i są na nich rezerwacje częściowe, na dolnej części formatki mam:
Wyświetl ilości
Stany Dostępne
Rezerwacje
jeśli zaznaczę Rezerwacje to pokazuje się dodatkowa kolumna z ilościami zarezerwowanymi (rezerwacje są robione zasobowo) i jest ok ale jeśli zaznaczę dostępne to powinna się pokazać dodatkowa kolumna z ilościami dostępnymi, czyli stan minus rezerwacje ale nic się nie zmienia.
cze tak to powinno wyglądać czy jestem w błędzie?
Chciałbym ten problem rozwiązać dodając na stałe kolumnę z ilościami jakie zostały dostępne po odjęciu rezerwacji, pomoże ktoś aby mnie naprowadzić jakich tabel użyć?
pozdrawiam
Darek
Re: Zasoby dostępne
wydaje mi się , że dostępne to stany magazynowe. jeżeli stan magazynowy i sprzedażowy masz ten sam to faktycznie nic się nie zmieni a jeżeli te wartości są różne to stan sprzedaży dla opcji dostępne się zmieni.
Stany:
sprze mag
50 20
Dostępne:
sprze mag
20 20
Stany:
sprze mag
50 20
Dostępne:
sprze mag
20 20
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: Zasoby dostępne
Tak masz rację.
pomoże ktoś jakie tabela połączyć aby zrobić takie zapytanie i dodać kolumnę?
twr_zasoby
twr_karty
magazyn
rezerwacje
co jeszcze potrzebuję żeby to zadziałało?
pomoże ktoś jakie tabela połączyć aby zrobić takie zapytanie i dodać kolumnę?
twr_zasoby
twr_karty
magazyn
rezerwacje
co jeszcze potrzebuję żeby to zadziałało?
Re: Zasoby dostępne
Jest właściwie funkcja skalarna do tego, trochę rozbudowana ale powinna ci zwrócić co potrzeba w ciągu oddzielanym dwukropkiem.
-- Funkcja zwraca sume stanow danego towaru i jego cenę oraz wartosc stanu
--
-- Format wyniku:
-- ilosc_do_sprzedazy:ilosc_magazynowa:ilosc_rezerwacji:Cena:waluta:wartosc_stanu:jest_zamienik:rodzaj_towaru:kategoria_ABCXYZ:ilosc_rzeczywista
W moim przykładzie wywołane są tylko podstawowe dane indeksu typ, gid indeksu, gid firmy oraz typ indeksu=1 czyli towar i to powinno wystarczyć
Wartości które cię interesują masz w pierwszych trzech kolumnach splitowych
-- Funkcja zwraca sume stanow danego towaru i jego cenę oraz wartosc stanu
--
-- Format wyniku:
-- ilosc_do_sprzedazy:ilosc_magazynowa:ilosc_rezerwacji:Cena:waluta:wartosc_stanu:jest_zamienik:rodzaj_towaru:kategoria_ABCXYZ:ilosc_rzeczywista
W moim przykładzie wywołane są tylko podstawowe dane indeksu typ, gid indeksu, gid firmy oraz typ indeksu=1 czyli towar i to powinno wystarczyć
Wartości które cię interesują masz w pierwszych trzech kolumnach splitowych
Kod: Zaznacz cały
SELECT
MAX(CASE WHEN rownr = 1 THEN value END) as Pierwsza_wartosc_ciagu
-- albo jakieś działanie na splitach jak różnica 2 i 3
--MAX(CAST(CASE WHEN rownr = 2 THEN value END as decimal(18,4))) - MAX(CAST(CASE WHEN rownr = 3 THEN value END as decimal(18,4))) as Roznica_2_3
FROM CDN.TwrKarty
CROSS APPLY (
SELECT
value,
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as rownr
FROM STRING_SPLIT(
CDN.DokSumaStanowTowaru(Twr_GidTyp,Twr_GIDFirma,Twr_GidNumer,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
':'
)
) as wartosci_splitow
WHERE {filtrsql}--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: Zasoby dostępne
Ok, tylko to daje sumę ale jak mam kilka zasobów to nie pomoże, chcę uzyskać coś takiego
do sprzedaży | zarezerwowana | nowa kolumna ilość dostępna (wolna) |
200 | 50 | 150 |
300 | 100 | 200 |
150 | 30 | 120 |
do sprzedaży | zarezerwowana | nowa kolumna ilość dostępna (wolna) |
200 | 50 | 150 |
300 | 100 | 200 |
150 | 30 | 120 |
Re: Zasoby dostępne
Wszystkie dane są w wyniku tej funkcji. Do sprzedaży to pierwszy element ciągu, rezerwacje to trzeci a dostępne to pierwszy minus trzeci.
Pozostaje tylko wyświetlić na liście indeksów jako trzy kolumny lub jedną kolumnę oddzielaną rurą
Jeżeli to pierwsze, to robisz trzy kolumny a w każdej odpowiednio wartość
Ilość do sprzedaży
MAX(CASE WHEN rownr = 1 THEN value END)
Ilość zarezerwowana
MAX(CASE WHEN rownr = 3 THEN value END)
Różnica
CAST(MAX(CAST(CASE WHEN rownr = 1 THEN value END as decimal(18,4))) -
MAX(CAST(CASE WHEN rownr = 3 THEN value END as decimal(18,4))) as varchar)
albo w jednej
CONCAT(
MAX(CASE WHEN rownr = 1 THEN value END),
'|',
MAX(CASE WHEN rownr = 3 THEN value END),
'|',
CAST(MAX(CAST(CASE WHEN rownr = 1 THEN value END as decimal(18,4))) -
MAX(CAST(CASE WHEN rownr = 3 THEN value END as decimal(18,4))) as varchar)
) as Nazwa_kolumny
Pozostaje tylko wyświetlić na liście indeksów jako trzy kolumny lub jedną kolumnę oddzielaną rurą
Jeżeli to pierwsze, to robisz trzy kolumny a w każdej odpowiednio wartość
Ilość do sprzedaży
MAX(CASE WHEN rownr = 1 THEN value END)
Ilość zarezerwowana
MAX(CASE WHEN rownr = 3 THEN value END)
Różnica
CAST(MAX(CAST(CASE WHEN rownr = 1 THEN value END as decimal(18,4))) -
MAX(CAST(CASE WHEN rownr = 3 THEN value END as decimal(18,4))) as varchar)
albo w jednej
CONCAT(
MAX(CASE WHEN rownr = 1 THEN value END),
'|',
MAX(CASE WHEN rownr = 3 THEN value END),
'|',
CAST(MAX(CAST(CASE WHEN rownr = 1 THEN value END as decimal(18,4))) -
MAX(CAST(CASE WHEN rownr = 3 THEN value END as decimal(18,4))) as varchar)
) as Nazwa_kolumny
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: Zasoby dostępne
Źle tę funkcję zrozumiałem ale teraz jest ok tylko że w dalszym ciągu robi sumę wszystkich zasobów, a jak to podzielić na każdy zasób osobno.
Musiałem też się odwołać do tabeli TwrZasoby bo zwracało błąd.
do sprzedaży | zarezerwowana | nowa kolumna ilość dostępna (wolna) |
200 | 50 | 150 |
1000 | 0 | 1000 |
500 | 0 | 500 |
powinno być jak powyżej a jest
do sprzedaży | zarezerwowana | nowa kolumna ilość dostępna (wolna) |
200 | 50 | 1650 |
1000 | 0 | 1650 |
500 | 0 | 1650 |
Musiałem też się odwołać do tabeli TwrZasoby bo zwracało błąd.
Kod: Zaznacz cały
SELECT
MAX(CAST(CASE WHEN rownr = 1 THEN value END as decimal(18,4))) - MAX(CAST(CASE WHEN rownr = 3 THEN value END as decimal(18,4))) as Roznica_2_3
FROM CDN.TwrKarty
LEFT OUTER JOIN CDN.TwrZasoby TwrZasoby ON Twr_GIDNumer=TwZ_TwrNumer
CROSS APPLY (
SELECT
value,
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as rownr
FROM STRING_SPLIT(
CDN.DokSumaStanowTowaru(Twr_GidTyp,Twr_GIDFirma,Twr_GidNumer,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
':'
)
) as wartosci_splitow
WHERE {filtrsql}do sprzedaży | zarezerwowana | nowa kolumna ilość dostępna (wolna) |
200 | 50 | 150 |
1000 | 0 | 1000 |
500 | 0 | 500 |
powinno być jak powyżej a jest
do sprzedaży | zarezerwowana | nowa kolumna ilość dostępna (wolna) |
200 | 50 | 1650 |
1000 | 0 | 1650 |
500 | 0 | 1650 |
Re: Zasoby dostępne
Ta kolumna jest do wyświetlenia na liście indeksów bo zakładałem, że o to chodzi, żeby widzieć wolne zasoby bez wchodzenia w indeks.
Ty wywołujesz to na karcie , na zakładce zasoby dlatego masz zawsze tą samą wartość iloczynu.
Ty wywołujesz to na karcie , na zakładce zasoby dlatego masz zawsze tą samą wartość iloczynu.
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: Zasoby dostępne
to jest jak podnoszę kartę do edycji i zakładka zasoby | Wg dokumentów, jak jest jeden zasób to jest ok ale jak kilka to nie.
Re: Zasoby dostępne
spróbuj dodać numer dostawy do funkcji
CDN.DokSumaStanowTowaru(Twr_GidTyp,Twr_GIDFirma,Twr_GidNumer,1,0,0,0,0,0,0,0,TwZ_DstNumer,0,0,0,0,0,0,0,0,0,0,0),
a jeśli to ma być ze stanów magazynowych to jeszcze wartość nr 10 funkcji
CDN.DokSumaStanowTowaru(Twr_GidTyp,Twr_GIDFirma,Twr_GidNumer,1,0,0,0,0,0,1,0,TwZ_DstNumer,0,0,0,0,0,0,0,0,0,0,0),
@p_TypIlosci Sposób uwzględniania rezerwacji z zasobami (istotne tylko gdy @p_DstNumer<>0)
-- 0 - wyliczenia dla ilości handlowych
-- 1 - wyliczenia dla ilosci magazynowcyh
-- 2 - działanie jak w wersji 3.2 - sprawdza istnienie rezerwacji dla danego zasobu (bez dodatkowego sprawdznia dla magazynu)
CDN.DokSumaStanowTowaru(Twr_GidTyp,Twr_GIDFirma,Twr_GidNumer,1,0,0,0,0,0,0,0,TwZ_DstNumer,0,0,0,0,0,0,0,0,0,0,0),
a jeśli to ma być ze stanów magazynowych to jeszcze wartość nr 10 funkcji
CDN.DokSumaStanowTowaru(Twr_GidTyp,Twr_GIDFirma,Twr_GidNumer,1,0,0,0,0,0,1,0,TwZ_DstNumer,0,0,0,0,0,0,0,0,0,0,0),
@p_TypIlosci Sposób uwzględniania rezerwacji z zasobami (istotne tylko gdy @p_DstNumer<>0)
-- 0 - wyliczenia dla ilości handlowych
-- 1 - wyliczenia dla ilosci magazynowcyh
-- 2 - działanie jak w wersji 3.2 - sprawdza istnienie rezerwacji dla danego zasobu (bez dodatkowego sprawdznia dla magazynu)
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW