Filtr - nieopłacone FS gotówkowe

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

marek1712
Posty: 21
Rejestracja: 25 mar 2011, 12:55
Rola: Inny
Wersja: 10

Filtr - nieopłacone FS gotówkowe

Post autor: marek1712 »

Witam.
Dostałem kolejne zadanie. Moduł Sprzedaż, lista FS.
Czasami wracają faktury gotówkowe, jednak bez pieniędzy (zdarza się). Nie wnikam co i jak.
Zostałem poproszony o zbudowanie filtra dla listy dokumentów.
Łatwiej powiedzieć niż zrobić...
Kod SQL sobie napisałem - mam nadzieję, że poprawny:

Kod: Zaznacz cały

SELECT n.TrN_GIDNumer, n.TrN_DokumentObcy, p.TrP_Pozostaje FROM cdn.TraNag n JOIN CDN.TraPlat p ON n.TrN_GIDNumer = p.TrP_GIDNumer WHERE 
n.TrN_GIDTyp = 2033 AND
n.TrN_FormaNazwa LIKE '%gotówka%' AND
p.TrP_Pozostaje > 0
Jak z tego teraz zrobić filtr (zero doświadczenia)? Jakoś taka składnia SQLa mi nie chce przejść, nie widzę też możliwości dołączenia innych tabel niż wskazane w kreatorze (a bez TraPlat się nie obędzie).

Z góry dziękuję za pomoc.
woj
Posty: 139
Rejestracja: 22 lut 2012, 16:11
Rola: Inny

Re: Filtr - nieopłacone FS gotówkowe

Post autor: woj »

a może tak :)

Kod: Zaznacz cały



trn_gidnumer in 

(
SELECT TrN_GIDNumer
FROM cdn.TraNag n JOIN CDN.TraPlat p ON n.TrN_GIDNumer = p.TrP_GIDNumer WHERE 
n.TrN_GIDTyp = 2033 AND
n.TrN_FormaNazwa LIKE '%gotówka%' AND
p.TrP_Pozostaje > 0

)
xtomi
Posty: 408
Rejestracja: 16 lut 2010, 21:24
Rola: Administrator CDN XL
Wersja: 10

Re: Filtr - nieopłacone FS gotówkowe

Post autor: xtomi »

W zasadzie to join to traplat nie jest potrzebny, wystarczy sprawdzić trn_dataroz, nierozliczone dokumenty mają wartość 0 w tym polu, warunek na gidtyp też jest zbędny.
marek1712
Posty: 21
Rejestracja: 25 mar 2011, 12:55
Rola: Inny
Wersja: 10

Re: Filtr - nieopłacone FS gotówkowe

Post autor: marek1712 »

@woj - działa jak powinno :)
@xtomi - a to ciekawe co piszesz (w sumie na to nie wpadłem). Pytanie tylko dlaczego zapytanie zwraca mi ze 4x więcej faktur niż to, które podał woj?
Monster
Posty: 184
Rejestracja: 20 mar 2012, 09:04
Rola: Konsultant CDN XL
Wersja: 2016
Lokalizacja: Wrocław

Re: Filtr - nieopłacone FS gotówkowe

Post autor: Monster »

Taki filtr:

Kod: Zaznacz cały

trn_gidnumer in 
(
SELECT TrN_GIDNumer
FROM cdn.TraNag n WHERE
n.TrN_GIDTyp = 2033 AND
n.TrN_FormaNazwa LIKE '%gotówka%' AND
n.TrN_DataRoz = 0
)
Wyrzuca Ci cztery razy więcej wyników? Ciekawe :)
marek1712
Posty: 21
Rejestracja: 25 mar 2011, 12:55
Rola: Inny
Wersja: 10

Re: Filtr - nieopłacone FS gotówkowe

Post autor: marek1712 »

No dokładnie - zwraca o wiele więcej wyników. Też mnie to dziwi.
Anyway - dopytałem i trzeba było zmienić filtr (na taki, który wyszukuje formy płatności "Gotówka 0 dni"). Różnych rzeczy człowiek się uczy...
Dobrze wykombinowałem, że termin wystawienia faktury musi się równać terminowi płatności?

Kod: Zaznacz cały

SELECT 
n.TrN_GIDNumer
FROM 
cdn.TraNag n JOIN CDN.TraPlat p ON n.TrN_GIDNumer = p.TrP_GIDNumer WHERE
p.TrP_Termin = n.TrN_Data3 AND
n.TrN_GIDTyp = 2033 AND
n.TrN_FormaNazwa = 'Gotówka' AND
p.TrP_Pozostaje > 0
Oczywiście za wskazówkami usera woj oplotłem to w TrN_GIDNumer IN (SELECT...). Teraz jest chyba tyle faktur ile powinno być - filtr jednak błyskawiczny nie jest (z poziomu XLa, bo w SQL Mgmt Studio działa szybko).

EDIT: aaa, już wiem dlaczego zapytania SQL wyrzucają więcej wyników. W XLu jest zaznaczone wyświetlanie dokumentów z bieżącego miesiąca :lol:
Skoro ta kwestia jest rozwiązana to jak pozbyć się TraPlat (w sensie skąd wziąć termin płatności, żeby porównać z TrN_Data3? Z TrN_Termin?)?
xtomi
Posty: 408
Rejestracja: 16 lut 2010, 21:24
Rola: Administrator CDN XL
Wersja: 10

Re: Filtr - nieopłacone FS gotówkowe

Post autor: xtomi »

Coś chyba za dużo kombinujesz, taki filtr wykonuje się bardzo szybko, a dokumentów w bazie mam naprawdę dużo:

Kod: Zaznacz cały

trn_gidnumer in ( select TrN_GIDNumer from CDN.TraNag
where TrN_DataRoz=0 and TrN_Data2=TrN_Termin
 and trn_nettor<>0
and trn_formanr=10
)
Spowolnienie może być spowodowane przez porównanie stringów, które jest zawsze wolniejsze od porównania liczb, dlatego lepiej skorzystać z trn_formanr.
Czasami zdarza się, że XL pomimo rozliczenia całkowitego dokumentu nie zaktualizuje pola trn_dataroz w którym przechowywana jest data płatności która całkowicie rozliczyła dokument, ale na szczęście sytuacja ta występuje bardzo rzadko i można ją szybko skorygować za pomocą funkcji specjalnych.
woj
Posty: 139
Rejestracja: 22 lut 2012, 16:11
Rola: Inny

Re: Filtr - nieopłacone FS gotówkowe

Post autor: woj »

na nagłówku tranag może być inna forma płatności niż na traplat
może też byc tak że FA ma kilka róznych płatnośći i kilka krotek w traplat z róznymi ustawieniami
dlatego wolniej ale bezpieczniej jest sprawdzać traplat
marek1712
Posty: 21
Rejestracja: 25 mar 2011, 12:55
Rola: Inny
Wersja: 10

Re: Filtr - nieopłacone FS gotówkowe

Post autor: marek1712 »

Dziękuję wszystkim za poświęcony czas - póki co zostaję przy metodzie, którą wcześniej podałem.
Pozdrawiam,
Marek.
ODPOWIEDZ