Autor Wątek: Zestawienie  (Przeczytany 3669 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline casu

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: Navireo 1.3
Zestawienie
« dnia: Październik 03, 2019, 11:50:42 »
Witam, stworzyłem zapytanie aby raport pokazywał mi jak się sprzedawały towary do dokumentu PZ. Wszystko jest OK ale chciałbym sprzedaż ograniczyć datami od do: dla przykładu PZ jest z 1 września a chciałbym w dniu 30 września sprawdzić sprzedaż za pierwsze 10 dni. Kiedy dodaje warunek z datami (dok_DataWyst) to pokazuje mi źle zakup z PZ bez niego jest wszystko dobrze??

SELECT RIGHT (Nr_pz,4) AS Rocznik, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup, SUM (vwZstSprzWgKhnt.ob_ilosc * ob_znak) AS Sprzedaz
 FROM SprDoPz
LEFT JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
WHERE
(Nr_Pz LIKE '{T:Podaj nr dokumentu, pozostaw puste, aby wyszukać wszystko}%')
AND (Nazwa LIKE '{T:Podaj nazwę towaru}%')
GROUP BY ID_dokumentu, tw_id, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup

Proszę o pomoc.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zestawienie
« Odpowiedź #1 dnia: Październik 03, 2019, 11:54:11 »
A może daj kod z z tym filtrem co ci działa nie tak jak chcesz, żebyśmy wiedzieli co robisz źle zamiast zgadywać?

No i co to jest SprDoPz? Nie ma takiej fabrycznej tabeli ani widoku w Navireo.
« Ostatnia zmiana: Październik 03, 2019, 11:55:59 wysłana przez yemet »

Offline casu

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: Navireo 1.3
Odp: Zestawienie
« Odpowiedź #2 dnia: Październik 03, 2019, 11:59:45 »
SprDoPz jest stworzonym przeze mnie widokiem,

SELECT RIGHT (Nr_pz,4) AS Rocznik, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup, SUM (vwZstSprzWgKhnt.ob_ilosc * ob_znak) AS Sprzedaz
 FROM SprDoPz
LEFT JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
WHERE
(Nr_Pz LIKE '{T:Podaj nr dokumentu, pozostaw puste, aby wyszukać wszystko}%')
AND (Nazwa LIKE '{T:Podaj nazwę towaru}%')
AND dok_DataWyst BETWEEN {DR:Data:}
GROUP BY ID_dokumentu, tw_id, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zestawienie
« Odpowiedź #3 dnia: Październik 03, 2019, 12:04:41 »
LEFT JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towIdJeśli ten join ma robić to co myślę czyli łączyć dokument sprzedaży z magazynowy to łączenie po samym id towaru to na 99,9999% to za mało.

Warunek na datę wygląda normalnie, chyba że masz daty PZ inne niż faktur i to one cie interesują - wtedy filtrujesz nie po tej kolumnie i tabeli.

Definicja widoku może mogłaby nam coś podpowiedzieć.

Offline casu

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: Navireo 1.3
Odp: Zestawienie
« Odpowiedź #4 dnia: Październik 03, 2019, 12:25:07 »
Data PZ 07.08.2019, daty na FV: dostawy i wystawienia 24.06.2019

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zestawienie
« Odpowiedź #5 dnia: Październik 03, 2019, 12:43:09 »
Pokaż definicję tego swojego widoku. I nie napisałeś czy chcesz filtrować po dacie dokumentów sprzedaży czy po dokumentach magazynowych.

Offline casu

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: Navireo 1.3
Odp: Zestawienie
« Odpowiedź #6 dnia: Październik 03, 2019, 12:55:17 »
Definicja widoku a druga część pytania to myślę, że po dacie dokumentów sprzedaży.

SELECT        T0.dok_Id AS ID_dokumentu, T5.tw_Id, T0.dok_NrPelny AS Nr_PZ, T5.tw_Symbol AS SKU, T5.tw_Nazwa AS Nazwa, T1.ob_CenaMag AS Cena_zak, SUM(T1.ob_Ilosc) AS Zakup
FROM            dbo.dok__Dokument AS T0
INNER JOIN dbo.dok_Pozycja AS T1 ON T1.ob_DokMagId = T0.dok_Id
INNER JOIN dbo.tw__Towar AS T5 ON T5.tw_Id = T1.ob_TowId
WHERE        (T0.dok_Typ = 10)
GROUP BY T0.dok_Id, T5.tw_Id, T0.dok_NrPelny, T5.tw_Symbol, T5.tw_Nazwa, T1.ob_CenaMag

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zestawienie
« Odpowiedź #7 dnia: Październik 03, 2019, 13:11:56 »
Po pierwsze primo:
join do pozycji dokumentów WZ/PZ po samym id towaru bez dodatkowego powiązania z dokumentem FS/FZ/PA da ci bardzo dziwne i nieprawidłowe wyniki.

Po drugie primo:
PZ-tek to raczej niewiele będzie wystawionych do faktur sprzedaży. Nie chodziło Ci bardziej o WZ? dok_typ  11?. PZ są najczęściej powiązane z zakupami i korektami sprzedaży.

Po trzecie primo - ultimo:
Jak tam masz faktury zbiorcze to nie wiem czy to jest właściwa ścieżka odpytywania. Przy nich powiązania FS z WZ są inaczej zapisywane a jak jakoś do tej pory nie miałem specjalnej potrzeby wgryzania się w ich działanie.

Offline casu

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: Navireo 1.3
Odp: Zestawienie
« Odpowiedź #8 dnia: Październik 03, 2019, 13:42:17 »
Ideą tego zestawienia było aby na podstawie PZ powstałej do faktury zakupu sprawdzić jak sprzedają się towary, które na niej się znajdują, dodatkowa opcją miał być wybór okresu sprzedaży tych towarów. Możliwe, że źle zabrałem się do tego zestawienia, ewentualnie proszę o podpowiedź jak je stworzyć na nowo. ;)

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zestawienie
« Odpowiedź #9 dnia: Październik 03, 2019, 13:55:35 »
Jak ja bym coś takiego chciał zrobić to pewnie robiłbym to min. przy wykorzystaniu identyfikatorów dostaw z tabeli dok_magruch.

Offline casu

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: Navireo 1.3
Odp: Zestawienie
« Odpowiedź #10 dnia: Grudzień 10, 2019, 15:21:40 »
Trochę odświeżę temat. Udało mi się przepisać zapytanie i osiągnięty wynik jest przeze mnie OK.
Poniżej select z użyciem stworzonego widoku.
Może to pomoże komukolwiek. Pozdrawiam

SELECT RIGHT (Nr_pz,4) AS Rocznik, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup, SUM (vwZstSprzWgKhnt.ob_ilosc * ob_znak) AS Sprzedaz,
CASE
WHEN (SELECT SUM(st_Stan) FROM (SELECT st_TowId, st_Stan from tw_Stan WHERE st_Stan > 0) as totals WHERE st_Stan > 0 AND st_TowId = tw_Id GROUP BY st_TowId) is NULL then 0
ELSE (SELECT SUM(st_Stan) FROM (SELECT st_TowId, st_Stan from tw_Stan WHERE st_Stan > 0) as totals WHERE st_Stan > 0 AND st_TowId = tw_Id GROUP BY st_TowId)
END as Stan
FROM SprDoPz
FULL JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
WHERE
(Nr_Pz LIKE '{T:Podaj nr dokumentu, pozostaw puste, aby wyszukać wszystko}%')
GROUP BY ID_dokumentu, tw_id, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup

Forum Użytkownikow Subiekt GT

Odp: Zestawienie
« Odpowiedź #10 dnia: Grudzień 10, 2019, 15:21:40 »