Autor Wątek: zestawienie  (Przeczytany 2169 razy)

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

Offline pher959

  • Nowy użytkownik
  • *
  • Wiadomości: 13
  • Reputacja +0/-0
  • Wersja programu: gt
zestawienie
« dnia: Listopad 06, 2018, 20:28:05 »
Witam
Wyciągnąłem za pomocą Profilera zapytanie zestawienia sprzedaży wg dokumentów
Problem jest w tym że gdy chce dorzucić dok_Wystawil wywala błędy
Drugim problemem jest błędne liczenie wartości magazynowej przez co w komórce pokazuje sie 0

Zapytanie zmodyfikowane prze zemnie:
SELECT dok_Id, dok_DataWyst, dok_NrPelny, adrh_Nazwa, dok_WartNetto, dok_WartBrutto,

SUM((CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 4) THEN 0 ELSE (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_Id)*dok_Pozycja.ob_Znak END) END) * (CASE WHEN dok_Typ = 14 THEN -1 ELSE 1 END)
+ (CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 5) THEN (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_DoId)*dok_Pozycja.ob_Znak END) ELSE 0 END))
   as dok_WartMag,

( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) - SUM((CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 4) THEN 0 ELSE (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_Id)*dok_Pozycja.ob_Znak END) END) * (CASE WHEN dok_Typ = 14 THEN -1 ELSE 1 END)
+ (CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 5) THEN (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_DoId)*dok_Pozycja.ob_Znak END) ELSE 0 END))
   as Zysk, 

Marza = ROUND(CONVERT(MONEY, CASE WHEN ( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) <> 0 THEN 
100* (( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) - SUM((CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 4) THEN 0 ELSE 
(CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_Id)*dok_Pozycja.ob_Znak END) END) 
* (CASE WHEN dok_Typ = 14 THEN -1 ELSE 1 END)  + (CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 5) THEN (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 
THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_DoId)*dok_Pozycja.ob_Znak END) ELSE 0 END)) ) / 
( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) ELSE 0.00 END), 2) * (CASE WHEN ((dok_Typ = 14) OR ((dok_Typ = 6) AND (( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) < 0))) THEN -1 ELSE 1 END) ,   
YEAR(dok_DataWyst) AS Rok 
, mag_Symbol + ' ' + mag_Nazwa AS magazyn 
FROM vwZstSprzWgDok 
LEFT JOIN adr_Historia ON dok_PlatnikAdreshId = adrh_Id 
LEFT JOIN dok_Pozycja ON dok_Id = ob_DokHanId 
LEFT JOIN sl_Magazyn  ON mag_Id = dok_MagId 
WHERE (( (dok_DataWyst>='20181001') AND (dok_DataWyst<='20181031') ) AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,131074)) AND (dok_MagId IN (1))) AND  dok_Status<>2  AND  NOT((dok_Typ = 6) AND (dok_Podtyp = 2))   
GROUP BY dok_Id, dok_typ, dok_DataWyst, dok_NrPelny, adrh_Nazwa, dok_WartNetto, dok_WartBrutto, dok_WartMag, dok_WartOpWyd, dok_WartOpZwr, mag_Symbol, mag_Nazwa
ORDER BY dok_Id

Ktoś podpowie może co jest nie tak ?

Online candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
Odp: zestawienie
« Odpowiedź #1 dnia: Listopad 06, 2018, 20:44:46 »
Problem jest w tym że gdy chce dorzucić dok_Wystawil wywala błędy
I pewnie myślisz że wróżka nam powie jak chcesz dorzucić dok_Wystawil i jakie wywala błędy?
No to niestety, moja powiedziała że ją głowa boli.

Drugim problemem jest błędne liczenie wartości magazynowej przez co w komórce pokazuje sie 0
W której komórce? Tej, którą nazwałeś dok_WartMag?
No to u mnie pokazuje tyle co trzeba, ale przyznaję że sprawdziłem na bardzo prostych danych.

Musisz się trochę bardziej postarać  ;)
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline pher959

  • Nowy użytkownik
  • *
  • Wiadomości: 13
  • Reputacja +0/-0
  • Wersja programu: gt
Odp: zestawienie
« Odpowiedź #2 dnia: Listopad 06, 2018, 21:26:07 »
SELECT dok_Id, dok_DataWyst, dok_NrPelny, adrh_Nazwa, dok_WartNetto, dok_WartBrutto, dok_Wystawil,

SUM((CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 4) THEN 0 ELSE (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_Id)*dok_Pozycja.ob_Znak END) END) * (CASE WHEN dok_Typ = 14 THEN -1 ELSE 1 END)
+ (CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 5) THEN (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_DoId)*dok_Pozycja.ob_Znak END) ELSE 0 END))
   as dok_WartMag,

( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) - SUM((CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 4) THEN 0 ELSE (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_Id)*dok_Pozycja.ob_Znak END) END) * (CASE WHEN dok_Typ = 14 THEN -1 ELSE 1 END)
+ (CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 5) THEN (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_DoId)*dok_Pozycja.ob_Znak END) ELSE 0 END))
   as Zysk, 

Marza = ROUND(CONVERT(MONEY, CASE WHEN ( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) <> 0 THEN 
100* (( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) - SUM((CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 4) THEN 0 ELSE 
(CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_Id)*dok_Pozycja.ob_Znak END) END) 
* (CASE WHEN dok_Typ = 14 THEN -1 ELSE 1 END)  + (CASE WHEN (dok_Typ = 2 AND dok_PodTyp = 5) THEN (CASE WHEN (dok_Pozycja.ob_TowRodzaj&6)>0 
THEN 0 ELSE dbo.fnZestSub_KosztSpr('20181031', dok_Pozycja.ob_DoId)*dok_Pozycja.ob_Znak END) ELSE 0 END)) ) / 
( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) ELSE 0.00 END), 2) * (CASE WHEN ((dok_Typ = 14) OR ((dok_Typ = 6) AND (( dok_WartNetto + (dok_WartOpWyd-dok_WartOpZwr) ) < 0))) THEN -1 ELSE 1 END) ,   
YEAR(dok_DataWyst) AS Rok 
, mag_Symbol + ' ' + mag_Nazwa AS magazyn 
FROM vwZstSprzWgDok 
LEFT JOIN adr_Historia ON dok_PlatnikAdreshId = adrh_Id 
LEFT JOIN dok_Pozycja ON dok_Id = ob_DokHanId 
LEFT JOIN sl_Magazyn  ON mag_Id = dok_MagId 
WHERE (( (dok_DataWyst>='20181001') AND (dok_DataWyst<='20181031') ) AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,131074)) AND (dok_MagId IN (1))) AND  dok_Status<>2  AND  NOT((dok_Typ = 6) AND (dok_Podtyp = 2))   
GROUP BY dok_Id, dok_typ, dok_DataWyst, dok_NrPelny, dok_Wystawil, adrh_Nazwa, dok_WartNetto, dok_WartBrutto, dok_WartMag, dok_WartOpWyd, dok_WartOpZwr, mag_Symbol, mag_Nazwa
ORDER BY dok_Id

W dok_Wystawil powinien pokazywać się  użytkownik który wystawił dokument

a błędy w screenach

Offline Biniew

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4095
  • Reputacja +275/-17
  • Wersja programu: GT i Nexo
Odp: zestawienie
« Odpowiedź #3 dnia: Listopad 06, 2018, 21:36:49 »
a gotowe zestawienie wg wystawiajacych?

Offline pher959

  • Nowy użytkownik
  • *
  • Wiadomości: 13
  • Reputacja +0/-0
  • Wersja programu: gt
Odp: zestawienie
« Odpowiedź #4 dnia: Listopad 06, 2018, 21:40:50 »
Sprzedaż wg pracowników nie wystarcza ze względu na brak podglądu na dokumenty

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9208
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
zestawienie
« Odpowiedź #5 dnia: Listopad 06, 2018, 22:31:35 »
A sprawdziłeś czy w widoku, którego używasz jest ta kolumna, którą dodajesz?
Sławek, Zduńska Wola

Offline pher959

  • Nowy użytkownik
  • *
  • Wiadomości: 13
  • Reputacja +0/-0
  • Wersja programu: gt
Odp: zestawienie
« Odpowiedź #6 dnia: Listopad 07, 2018, 09:05:55 »
A sprawdziłeś czy w widoku, którego używasz jest ta kolumna, którą dodajesz?
Nie bardzo rozumiem o co ci chodzi. Gdzie to ewentualnie sprawdzić ?

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9208
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: zestawienie
« Odpowiedź #7 dnia: Listopad 07, 2018, 09:18:18 »
A sprawdziłeś czy w widoku, którego używasz jest ta kolumna, którą dodajesz?
Nie bardzo rozumiem o co ci chodzi. Gdzie to ewentualnie sprawdzić ?

Używasz widoku vwZstSprzWgDok - sprawdziłeś czy posiada on pole dok_Wystawil ?

Jak nie ma tam tego pola to niby skąd ma tę wartość wziąć?
Sławek, Zduńska Wola

Online candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
Odp: zestawienie
« Odpowiedź #8 dnia: Listopad 07, 2018, 09:24:11 »
No to rozwiązano problem "gdy chce dorzucić dok_Wystawil wywala błędy".
Dalej nie wiadomo o co chodzi z "błędne liczenie wartości magazynowej przez co w komórce pokazuje sie 0".
Na obrazku wyraźnie widać że w tej kolumni występują głównie wartości niezerowe.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: zestawienie
« Odpowiedź #9 dnia: Listopad 07, 2018, 10:20:43 »
A sprawdziłeś czy w widoku, którego używasz jest ta kolumna, którą dodajesz?
Nie bardzo rozumiem o co ci chodzi. Gdzie to ewentualnie sprawdzić ?

Widok to takie "zapamiętane" zapytanie, które ma swoją nazwę i  można odwoływać się do niego podobnie jak do zwykłej tabeli (select * from jakiś_widok). Zwyczajowo dla łatwiejszego odróżnienia widoków od tabel do ich nazw dodaje się przedrostek np. "vw". Jakie kolumny są dostępne w widoku można sprawdzić np. w Management Studio w sekcji views. Brakujące pole dok_wystawił możesz sobie pobrać przez joina na tabelę dok__dokument.

Te faktury z zerowym zyskiem mają wg zestawienia wartość netto równą wartości magazynowej -> sprzedaż po cenach zakupu? Co pokazuje w zysku ctrl+spacja w podglądzie takiego dokumentu w module faktur sprzedaży?

Forum Użytkownikow Subiekt GT

Odp: zestawienie
« Odpowiedź #9 dnia: Listopad 07, 2018, 10:20:43 »