czwartek, 9 grudnia 2010

Filtr dla płatności

W nawiązaniu do tematu z forum, które nieraz tutaj wspominam, napisałem filtr (mnie też się przyda :) ), dla dokumentów sprzedażowych ze względu na płatności i ich termin.

@PAR ?@O(Gotówka:10|Przelew:20|Kredyt:30|Czek:40|Karta:50)|Forma|&Forma:REG=1 @? PAR@
@PAR ?@X|Opcja|&Uwzględniać termin:REG=0 @? PAR@
@PAR ?@O(Równy:1|Większy niż:2|Mniejszy niż:3)|Porownanie|&Termin:REG=1 @? @H({??Opcja = 0}) PAR@
@PAR ?@N3|Dni|&Dni:REG=0 @? @H({??Opcja = 0}) @RH(999) PAR@

TrN_GIDNumer IN
(

SELECT    DISTINCT Trn_GIDNumer
FROM         CDN.TraNag INNER JOIN
                      CDN.TraPlat ON CDN.TraNag.TrN_GIDNumer = CDN.TraPlat.TrP_GIDNumer AND CDN.TraNag.TrN_GIDTyp = CDN.TraPlat.TrP_GIDTyp
WHERE
Trp_FormaNr = ??Forma
AND
Trp_Termin - Trn_Data2 = CASE ??Opcja WHEN 0 THEN Trp_Termin - Trn_Data2 ELSE CASE ??Porownanie WHEN 1 THEN ??Dni ELSE Trp_Termin - Trn_Data2 END END
AND
Trp_Termin - Trn_Data2 > CASE ??Opcja WHEN 0 THEN -100 ELSE
CASE ??Porownanie WHEN 1 THEN Trp_Termin - Trn_Data2 - 1 WHEN 2 THEN ??Dni WHEN 3 THEN
CASE WHEN ??Dni - (Trp_Termin - Trn_Data2) > 0 THEN -100 ELSE ??Dni END END END

)


Co my tu mamy ? Jak widać filtrujemy po formie płatności, a następnie możemy określić zadaną przez nas liczbę dni i porównać do terminu na dokumencie. ( = > < ). Zapewne rzuca się w oczy, iż zakroiłem formę płatności do 5 pre-definiowanych form - jeżeli chcecie mieć ich więcej, to wystarczy zmienić typ parametru forma na listę rozwijaną i napisać odpowiednie zapytanie (np. dla tabeli CDN.Konfig o Kon_Numer = 736).

Brak komentarzy:

Prześlij komentarz