Article Category: Wspólne - Baza Wiedzy programu Comarch ERP Optima Article Category: Wspólne - Baza Wiedzy programu Comarch ERP Optima

OPT074 – Dodawanie kolumn użytkownika na listach


Spis treści

Wstęp

Przykłady z instrukcją tworzenia


Wstęp

Użytkownik Comarch ERP Optima ma możliwość dodawania na listach dokumentów kolumn o dowolnej definicji z dowolnej tabeli dostępnej w bazie danych. Dodawanie kolumn odbywa się z pomocą mechanizmu personalizacji okna. Możliwe jest wyłączenie personalizacji listy dla danego operatora, zwykła personalizacja kolumn, które zdefiniował użytkownik poprzez dodanie kolejnych instrukcji JOIN, dodanie wyrażeń definiujących nową kolumnę oraz testowanie całego zapytania.

Można w dowolny sposób dołączać tabele (również z bazy konfiguracyjnej) do zdefiniowanego zapytania SQL oraz definiować kolumny o dowolnej składni pobierania danych. Dodawanie kolumn może odbywać się w łatwy sposób poprzez „przeciągnięcie” wybranej kolumny na listę Kolumny użytkownika. Dodane kolumny można sortować, grupować oraz wykonywać operacje dostępne z wiersza sum.

Po dodaniu kolumn i tabel wydajność pobierania danych na liście może znacznie spaść. Należy rozważyć tutaj dwa przypadki: sama definicja kolumny nie spowoduje żadnego spowolnienia, jeśli kolumna nie będzie widoczna oraz dodatkowa instrukcja LEFT JOIN spowoduje spowolnienie tylko wtedy, gdy będzie widoczna jakaś kolumna wykorzystująca tą instrukcję lub kolumna zostanie użyta w filtrze. Powyższe problemy zostawiamy do rozwiązania wdrożeniowo przez partnera rozszerzającego funkcjonalność listy.

Wygląd okna personalizacji

Funkcjonalność dostępna jest z poziomu personalizacji aktywnego okna <Shift>+<F9> po kliknięciu ikony . Na oknie Personalizacja listy jest możliwość:

  • Dodawania złączeń do kolejnych tabel bazy danych (również z bazy konfiguracyjnej).
  • Dodawania wyrażeń definiujących nową kolumnę danych,  po której będzie można sortować i grupować listę.
  • Testowania całego zapytania.

Okno personalizacji listy podzielone jest na 5 części:

  • Kolumny dostępne z aktualnie wybranych tabel (wraz z dodatkowymi instrukcjami JOIN) – Jest to lista prezentująca wszystkie pola możliwe do pokazania na liście przy aktualnie zdefiniowanej klauzuli FROM wraz z dodatkowymi złączeniami (instrukcjami JOIN) dodanymi przez użytkownika. Lista jest aktualizowana po dołączeniu nowej tabeli przez użytkownika w sekcji Tabele użytkownika. Lista wyświetlana jest w trybie tylko do odczytu, istnieje jednak możliwość „przeciągnięcia” wybranej kolumny na listę Kolumny użytkownika.
  • Kolumny użytkownika – lista kolumn dodanych przez użytkownika. Dla dodanej kolumny można określić jej nazwę dla użytkownika, instrukcję pobierania, typ i format wyświetlania, domyślną widoczność i dostępność kolumny oraz dodatkowy opis.
  • Tabele domyślne – treść zapytania FROM standardowo wysyłanego do serwera SQL – pole do odczytu.
  • Tabele użytkownika – sekcja umożliwiająca dołączenie kolejnych tabel przez użytkownika. Aby dołączyć nową tabelę należy wskazać jej nazwę (wraz z prefixem „CDN”) oraz podać instrukcję łączenia, czyli klauzulę potrzebną do wykonania połączenia tabel (np. TrN_KntID= Knt_KntID).
  • Wynikowe zapytanie SQL – zapytanie utworzone z kolumn zdefiniowanych przez użytkownika i instrukcji FROM z dodanymi złączeniami (instrukcjami JOIN) użytkownika, z możliwością sprawdzenia poprawności wykonania – pole do odczytu.

Rys. Personalizacja listy

Na oknie znajdują się przyciski:

  •  – Sprawdzenie poprawności utworzonego zapytania. Przycisk możliwy do wywołania w dwóch trybach (rozwijalna lista obok przycisku):
  • Sprawdź składnię – weryfikacja poprawności składni zapytań użytkownika, w przypadku poprawnego wykonania testu pojawia się komunikat: Kolumny zostały dodane poprawnie.
  • Sprawdź wydajność – zmierzenie czasu wykonania zapytania użytkownika; pierwsze wykonanie zmienionego zapytania SQL może nie być miarodajne, gdyż Serwer SQL nie będzie jeszcze miał w pamięci cache tego zapytania, w związku z czym pierwsze wykonanie zapytania może być dłuższe, niż kolejne.
  •  Zapis zmian. Jeżeli po wprowadzeniu zmian użytkownik nie sprawdzi poprawności zapytania, zostanie to wykonane w momencie zapisu zmian w dodatkowych kolumnach. Jeżeli zapytanie nie będzie poprawne, okna nie będzie można zapisać. Podczas zapisu okna personalizacji listy sprawdzane jest również, czy modyfikacja zapytania nie spowodowała efektu „rozmnożenia” wierszy na liście (np. faktura pokazuje się na liście tyle razy, ile ma elementów) – taka sytuacja jest błędna i niektóre funkcje programu mogą wówczas nie działać prawidłowo
  •  Eksport ustawień dodatkowych kolumn użytkownika, bez pozostałych ustawień personalizacji. Eksport wykonywany jest do formatu XML.
  •  Import ustawień dodatkowych kolumn użytkownika z pliku XML.

Kolumny użytkownika

Lista umożliwiająca dodanie przez użytkownika nowej kolumny na listę. Zawiera kolumny:

Nazwa dla użytkownika – pod jaką nazwą kolumna będzie widoczna na interfejsie.

Instrukcja pobrania danych – pole z bazy lub można wpisać treść, która występuje w klauzuli SELECT i dotyczy pojedynczej kolumny.

Format wyświetlania – można określić formatowanie zwracanych wartości w kolumnie np. jeżeli do pokazania będzie kolumna typu DateTime, a standardowo część czasowa jest ucinana, potrzebne będzie tu wprowadzenie odpowiedniej wartości formatującej pokazywaną treść. Formatowanie należy ustawić w kolumnie Typ formatu wyświetlania oraz w kolumnie Format wyświetlania. Kolumna Typ formatu wyświetlania przyjmuje 4 wartości:

  • None – dane w definiowanej kolumnie wyświetlane są sposób domyślny
  • Numeric – dane liczbowe
  • DateTime – data/czas
  • Custom – niestandardowy format wyświetlania

Ostatnie 3 opcje definiują w jaki sposób wartości mają być wyświetlane używając formatu z pola Format wyświetlania.

Kolumna Format wyświetlania

  • Standardowe formaty wyświetlania dla liczb.

Standardowy format wyświetlania dla liczb składa się z litery (określającej rodzaj formatu) oraz 2 cyfr (określających precyzję). Rodzaj formatu decyduje w jaki sposób wartość jest transformowana.

Rodzaj formatu

Opis

Przykład formatu

Przykładowa wartość

c lub CLiczba jest wyświetlana jako wartość walutowa. Specyfikacja precyzji określa żądaną ilość miejsc dziesiętnych. Jeżeli precyzja nie zostanie wpisana, zostanie użyta domyślna precyzja wartości formatu waluty z ustawień regionalnych.c2$1,234.00
n lub NLiczba jest wyświetlana w formie "-d,ddd,ddd.ddd...", gdzie każde 'd' oznacza cyfrę. Wartość będzie poprzedzona znakiem minus, jeżeli liczba jest ujemna. Separator tysięcy jest wstawiany między każdą grupę 3 cyfr na lewo od kropki dziesiętnej. Specyfikacja precyzji określa żądaną ilość miejsc dziesiętnych. Jeżeli precyzja nie zostanie wpisana, zostanie użyta domyślna precyzja wartości formatu waluty z ustawień regionalnych.n01.234
d lub DWartość jest wyświetlana jako liczba całkowita ze znakiem minus. Jeżeli wyświetlana będzie liczba z częścią dziesiętna, zostanie ona sformatowana domyślnie. Specyfikacja precyzji określa minimalną ilość cyfr, która ma zostać pokazana. Jeżeli będzie to potrzebne, liczba zostanie dopełniona „nieistotnymi” zerami z lewej strony, aby zapewnić odpowiednią długość wartości. Jeżeli precyzja nie zostanie wybrana, pokazane zostanie dokładnie tyle cyfr, ile potrzeba do reprezentowania wartości bez początkowych zer.D800004392
p lub PLiczba mnożona jest przez 100 i wyświetlana ze znakiem %. Specyfikacja precyzji określa żądaną ilość miejsc dziesiętnych. Jeżeli nie zostanie określona, pokazywane są 4 miejsca dziesiętne.P289,48 %

  • Standardowe formaty wyświetlania dla daty i czasu.

Standardowy format daty/czasu składa się z jednej litery, która określa wzorzec, wg którego wartości będą wyświetlane (czy i w jaki sposób wyświetlać lata, miesiące itd.).

FormatOpisPrzykład
dWzorzec daty krótkiej.04-06-2014
DWzorzec daty długiej.4 czerwca 2014
tWzorzec czasu krótkiego.14:08
TWzorzec czasu długiego.14:08:00
fWzorzec daty długiej i czasu krótkiego.4 czerwca 2014 14:08
FWzorzec daty długiej i czasu długiego.4 czerwca 2014 14:08:00
gWzorzec daty krótkiej i czasu krótkiego.04-06-2014 14:08
GWzorzec daty krótkiej i czasu długiego.04-06-2014 14:08:00
m lub MWzorzec miesiąca i dnia.4 czerwca
y lub YWzorzec roku i miesiąca.czerwiec 2014
sWzorzec sortowalny.2014-06-04T14:08:00

  • Niestandardowe formaty dla liczb

Formaty niestandardowe używane są do ręcznego stworzenia odpowiedniego wzorca. Tego sposobu formatowania należy używać tylko wtedy, gdy standardowe formaty nie są wystarczające. Wszystkie formaty składające się z litery, za którą występują jedna lub dwie cyfry, traktowane są jako formaty standardowe. Wszystkie pozostałe są interpretowane jako formaty niestandardowe. Poniżej znajdują się najczęściej używane symbole do konstruowanie niestandardowych formatów.

ZnakZnaczenie
0Cyfra jest wyświetlana zawsze.
#Cyfra jest wyświetlana, gdy jest potrzebna (używane np, aby nie wyświetlać początkowych zer).
.Określa miejsce kropki dziesiętnej. Wygląd symbolu dziesiętnego zależy od ustawień regionalnych.
,Wyznacza użycie separatora tysięcy. Wygląd separatora zależy od ustawień regionalnych.
%Mnoży liczbę przez 100 i wstawia symbol % zgodny z ustawieniami regionalnymi.
\Kolejny znak jest wstawiany literalnie do wyniku.

  • Niestandardowe formaty daty i czasu

Aby stworzyć wzorzec daty i czasu należy połączyć symbole z tabel poniżej, reprezentujące rok, miesiąc, dzień itd. w różnych formatach.

Symbole dotyczące dat:

SymbolZnaczenieWynik formatownia przykładowej daty (22.06.2014)
yyOstatnie dwie cyfry roku.14
yyyyCztery cyfry roku.2014
MMNumer miesiąca.06
MMMSkrót nazwy miesiąca.cze
MMMMPełna nazwa miesiąca.czerwiec
ddNumer dnia.22
dddSkrót dnia tygodnia.N
ddddPełna nazwa dnia tygodnia.niedziela
/Separator daty. Pobierany z ustawień regionalnych.

  • Symbole dotyczące czasu:

SymbolZnaczenie
hhGodziny.
mmMinuty.
ssSekundy.
:Separator czasu. Pobierany z ustawień regionalnych.

Szczegółowe informacje na temat formatowania danych można odnaleźć na stronach MSDN w obszarze dotyczącym formatowania wartości (Formatting types: http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.100).aspx).

Domyślnie Widoczna/Dostępna – domyślne wartości, jakie ustawią się dla tej kolumny na liście.

Opis – dodatkowy opis pokazujący się po najechaniu myszką na nagłówek kolumny.

Tabele użytkownika

Lista umożliwiająca dołączenie kolejnych tabel lub innych obiektów dozwolonych przez SQL do wykonywanego już zapytania. Zawiera kolumny:

Lp – liczba porządkowa, służy do ustalenia kolejności dołączania tabel w zapytaniu.

Nazwa tabeli – nazwa tabeli ze struktury bazy danych.

Instrukcja łączenia – klauzula potrzebna do wykonania połączenia tabel np. TrN_KntID= Knt_KntID.

Parametr kolumny użytkownika na oknie personalizacji

Na oknie personalizacji znajduje się kolumna Kolumny użytkownika. Domyślnie każdy operator ma zaznaczoną tę wartość, co oznacza, że dla tego operatora są dostępne do wyboru dodatkowo zdefiniowane kolumny. Jeżeli parametr dla operatora będzie odznaczony – wówczas pomimo dodanych nowych kolumn w personalizacji, lista dla tego operatora będzie miała dostępne tylko standardowe kolumny. Na rozwijanej liście z dostępnymi kolumnami, te dodane przez użytkownika wraz z przeniesionymi domyślnymi ustawieniami w kolumnach Widoczna i Dostępna będą widoczne na końcu listy, dodatkowo pisane kursywą dla łatwego ich odróżnienia od kolumn standardowych.

Rys. Okno personalizacji

Dodawanie kolumn na listach

Podczas uruchamiania okna programu z listą, która ma dodane przez użytkownika niestandardowe tabele, zostanie najpierw wykonane sprawdzenie, czy zapytanie użytkownika nie zwraca większej ilości wierszy, niż zapytanie standardowe. Jeżeli ilość wierszy będzie taka sama, wówczas okno uruchomi się w spersonalizowanym trybie. Jeżeli natomiast ilość wierszy będzie różna, wówczas wygenerowany zostanie komunikat: Dodatkowe tabele dodane w personalizacji powodują powielanie wierszy na liście. Lista zostanie uruchomiona w trybie standardowym., po czym nastąpi uruchomienie okna bez dodatkowych kolumn i tabel.

Uwaga
Dodanie każdej tabeli użytkownika powoduje modyfikację treści FROM zapytania. W związku z tym wskazanie np. tabeli z elementami dokumentu (nawet bez wybrania kolumn z tej tabeli) będzie powodować zduplikowanie wyświetlanych wierszy i generowanie powyższego komunikatu przy otwieraniu listy.

Jeżeli nie uda się pobieranie danych na listę z dodatkowymi kolumnami i/lub tabelami, pokazany zostanie komunikat Błąd pobierania danych na listę. Lista zostanie uruchomiona w trybie standardowym., a następnie okno programu zostanie uruchomione bez dodatkowych kolumn i tabel.

W przypadku ustawienia filtrowania lub sortowania wg dodanej przez użytkownika kolumny, wydruki z list mogą nie działać poprawnie, jednakże wydruk bieżącego widoku powinien zawsze działać poprawnie.

W menu Narzędzia/ Testy integralności jest dostępny test Okna z dodatkowymi kolumnami sprawdzający, do których okien dodane zostały kolumny lub tabele użytkownika i prezentujący w logu nazwy tych okien.

Przekazywanie zmiennych dynamicznych

W polach Instrukcja wprowadzania danych oraz Instrukcja łączenia istnieje możliwość przekazania wybranych wartości ze zmiennych dynamicznych oraz wartości z panelu filtra. Otrzymujemy możliwość uzależnienia wartości pokazywanych w dodatkowych kolumnach od wartości ze zmiennych dynamicznych (np. uzależnienie od Operatora), czy wartości z panelu filtra (np. uzależnienie od daty aktualności listy).

W polach wprowadzania instrukcji, gdzie podajemy konkretne wartości (np. 2017-11-21) mamy możliwość wykorzystania specjalnych aliasów, odpowiadających tym wartościom (np. #CDN_DataBiezaca#), przekazujących wybrane zmienne dynamiczne lub wartości z panelu filtra. Aby ułatwić wstawienie odpowiedniego aliasu menu kontekstowe wyświetla listę dostępnych wartości:

Parametry standardowe - przy dodawaniu kolumn udostępnione zostały wybrane wartości ze zmiennych dynamicznych. Po wybraniu opcji Parametry standardowe rozwija się dodatkowe menu z następującymi wartościami:

Parametry filtra - po wybraniu opcji Parametry filtra rozwija się dodatkowe menu z wartościami przekazywanymi z panelu filtra danej listy. Między różnymi listami mogą być różne parametry filtra. Poniżej przykład z wartościami przekazywanymi z listy pracowników:

Po wybraniu wartości w miejsce kursora zostanie wstawiony odpowiedni alias.

Przykłady z instrukcją tworzenia

1. Lista zasobów/cennik. Kolumny: kod PLU, nazwa fiskalna oraz waga towaru

Potrzebne pola znajdują się w tabeli CDN.Towary. Na oknie personalizacji listy w sekcji Kolumny dostępne z aktualnie wybranych tabel należy odnaleźć pole Twr_PLU i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny. Tak samo należy postąpić w przypadku pozostałych kolumn czyli Twr_NazwaFiskalna oraz Twr_WagaKG. Dodatkowo dla pola Waga ustawiamy w kolumnie Typ formatu wyświetlania na Numeric a Format wyświetlania na N4 (N- wartość numeryczna, 4 – wyświetlanie do czterech miejsc dziesiętnych).

2. Lista zasobów/cennik. Kolumny: kod CN oraz kraj pochodzenia

Potrzebne pola znajdują się w tabeli CDN.Towary oraz CDN.KodyCN. Na oknie personalizacji listy w sekcji Tabele użytkownika należy połączyć powyższe tabele aby mieć dostęp do pól związanych z kodami CN. W związku z powyższym w kolumnie Nazwa tabeli podajemy tabelę CDN.KodyCN a w kolumnie Instrukcja łączenia wprowadzamy pola klucze łączące obie tabele Twr_KCNId=KCN_KCNId zgodnie ze strukturą bazy danych. Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola z tabeli CDN.KodyCN. Należy odnaleźć pole KCN_Kod i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny. Tak samo należy postąpić w przypadku kolumny Twr_KrajPochodzenia.

3. Lista zasobów/cennik. Kolumna marża procentowa dla ceny hurtowa1 - szybkie sprawdzenie przewidywanej marży

Ceny zapisywane są w tabeli CDN.TwrCeny i wiązane z tabelą CDN.Towary po kluczu TwC_TwrId=Twr_TwrId. Ponieważ chcemy uzyskać marżę dla ceny o numerze drugim rozwiązaniem będzie zastosowanie zapytania SQL w kolumnie Instrukcja pobierania danych w sekcji Kolumny użytkownika. Ponieważ dodawanie kolumn odbywa się na oknie towarów należy w zapytaniu aliasować pole Twr_TwrId. Zapytanie będzie mieć następującą postać:
(SELECT TwC_Marza From CDN.TwrCeny WHERE TwC_TwrId=A.Twr_TwrId And TwC_TwCNumer=2)

Kolumna ta ma pokazywać wartość w procentach w związku z tym ustawiamy w kolumnie Typ formatu wyświetlania typ na Custom oraz w kolumnie Format wyświetlania ustawiamy maskę 00.00”%” (0 – oznacza że cyfra jest zawsze wyświetlana, . – oznacza miejsca dziesiętne, „%” – dodanie na końcu znaku procent).

4. Lista dokumentów w Handlu. Kolumna Mail

Jeśli użytkownik korzysta ze skrzynki pocztowej w module CRM i wysyła wydruki faktur do swoich klientów drogą mailową to korzystając z powiązania faktura sprzedaży – mail może na liście faktur wyświetlić informację, czy faktura została wysłana do klienta. Informacja ta jest oparta o sprawdzenie czy z fakturą skojarzony jest jakikolwiek mail.

Mail - w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE WHEN EXISTS (SELECT * FROM CDN.DokRelacje WHERE Dor_DokumentId=A.TrN_TrnId AND Dor_ParentTyp=1011 AND DoR_DokumentTyp = 302) THEN 'Tak' ELSE 'Nie' END

5. Lista dokumentów w Handlu. Kolumna Wydruk

Jeśli użytkownik wykonuje kopie elektroniczne wydruków faktur sprzedaży to korzystając z powiązania faktura sprzedaży – wydruk w archiwum może na liście faktur wyświetlić informację czy faktura została wydrukowana. Dla przypomnienia: kopie elektroniczne wydruków są tworzone po zaznaczeniu parametru na definicji wydruku.

Wydruk - w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE WHEN EXISTS (SELECT * FROM CDN.WdrKopieElektroniczne WHERE WdKE_ObjId=A.TrN_TrNId AND WdKE_ObjType=A.TrN_typDokumentu) THEN 'Tak' ELSE 'Nie' END

6. Lista dokumentów WZ. Kolumna marża

Marża wyliczana jest jako różnica pomiędzy sumą Wartości Netto pozycji dokumentu a sumą ich Wartości Zakupu. Zastosujemy zapytanie SQL w kolumnie Instrukcja pobierania danych w sekcji Kolumny użytkownika. Zapytanie wyliczające marżę dokumentu będzie wyglądać następująco:
(SELECT SUM(TrE_WartoscNetto) - SUM(TrE_WartoscZakupu) FROM CDN.TraElem WHERE TrE_TrnId=A.TrN_TrnId)

7. Lista dokumentów w Handlu. Kolumna e-mail kontrahenta (Nabywcy)

Należy skorzystać z widoku CDN.PodmiotyView i dostępnego pola Pod_Email. W zapytaniu sql pola z tego widoku muszą być aliasowane. Należy odnaleźć pole Pod_Email i przeciągnąć do sekcji Kolumny użytkownika nadać nazwę dla kolumny, a następnie edytować kolumnę Instrukcja pobierania danych i ustawić alias. Ostateczna postać wyrażenia Pod.Pod_Email.

8. Lista faktur sprzedaży. Kolumna pozostaje do zapłaty

Należy skorzystać z tabeli CDN.BnkZdarzenia. Kolumna Pozostaje do zapłaty musi zostać wyliczona poprzez odjęcie od pola Razem pola Zapłacono. Trzeba stworzyć wyrażenie, które będzie sprawdzać, czy faktura została utworzona z paragonu, gdyż w przypadku, gdy faktura została przekształcona z paragonu zapisy kasowo/bankowe są tworzone dla paragonu. Do sprawdzenia, czy faktura została utworzona z paragonu, posłuży pole TrN_Rodzaj oraz pole TrN_TrNFaId z tabeli CDN.TraNag. W sekcji Kolumny użytkownika należy dodać kolumnę o nazwie Pozostaje do zapłaty i następującej instrukcji pobierania danych:
CASE WHEN TrN_Rodzaj=302006 THEN (SELECT SUM(Bzd_Kwota * BZd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId=A.TrN_FaId) - (SELECT SUM(Bzd_KwotaRoz * Bzd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId =A.TrN_FaId) ELSE (SELECT SUM(Bzd_Kwota * BZd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId=A.TrN_TrNId) - (SELECT SUM(Bzd_KwotaRoz * Bzd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId =A.TrN_TrNId) ENDJeśli płatności do dokumentów są w różnych walutach, to powyższe zapytanie należy zmodyfikować i dostosować do potrzeb użytkownika.

9. Lista dokumentów w Handlu. Kolumna z informacją o akronimie operatora, który zmodyfikował dokument

Dane o operatorach zapisane są w bazie konfiguracyjnej w tabeli CDN. Operatorzy. Należy wykonać złączenie do bazy konfiguracyjnej i powyższej tabeli. Na oknie personalizacji listy w sekcji Tabele użytkownika w kolumnie Nazwa tabeli podajemy tabelę i nazwę bazy do której jest ona podpięta, obie tabele muszą istnieć na serwerze SQL. Wprowadzamy [CDN_KNF_Konfiguracja].[CDN].[Operatorzy] a w kolumnie Instrukcja łączenia wprowadzamy pola klucze łączące tabele CDN.Operatorzy i CDN.TraNag czyli Ope_OpeId=TrN_OpeModId zgodnie ze strukturą bazy danych. Należy odnaleźć pole Ope_Kod i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.

10. Lista dokumentów w Handlu. Kolumna z nazwą dnia tygodnia terminu płatności

Należy skorzystać z funkcji sqlowej CDN. NazwaDnia i podać dla niej parametry TrN_Termin oraz tryb 0. W związku z powyższym w sekcji Kolumny użytkownika w kolumnie Instrukcja łączenia wprowadzamy wyrażenie:
(SELECT CDN.NazwaDnia(A.TrN_Termin, 0))

11. Formularz dokumentu HaMag. Ostatnia cena zakupu

W pierwszej kolejności należy dołączyć tabelę CDN.TwrCeny – instrukcja łączenia: twc_twrid = tre_twrid

Kolejny krok to samo zapytanie wyciągające cenę zakupu z cennika. Będzie to zawsze ostatnia cena zakupu zgodnie z konfiguracją programu (uwzględnianie korekt itp.):
(SELECT TwC_Wartosc from CDN.TwrCeny WHERE TwC_TwCNumer =1 AND TwC_TwrId = TrE_TwrId)

12. Lista pracowników. Kolumna z wartością atrybutu o nazwie Atrybut 1 na dzień bieżący

Potrzebne pola znajdują się w tabeli CDN.OAtrybuty oraz CDN.OAtrybutyHist. Na oknie personalizacji listy w sekcji Tabele użytkownika należy dołączyć powyższe tabele, aby mieć dostęp do ich pól. W związku z tym w kolumnie Nazwa tabeli dodajemy tabelę CDN.OAtrybuty, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek dla atrybutu o nazwie Atrybut 1, wprowadzamy zatem:
OAT_PrcId = PRI_PraId AND OAT_NazwaKlasy = 'Atrybut 1'Następnie podajemy drugą tabelę CDN.OAtrybutyHist, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek filtrujący zakres dat na dzień bieżący, wprowadzamy zatem:
ATH_OatId = OAT_OatId AND ATH_DataOd <= GETDATE() AND ATH_DataDo >= GETDATE()Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.OAtrybutyHist. Należy odnaleźć pole ATH_Wartosc i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.

13. Lista pracowników. Kolumna z wartością atrybutu o nazwie Atrybut 1 na dzień daty aktualności listy

Potrzebne pola znajdują się w tabeli CDN.OAtrybuty oraz CDN.OAtrybutyHist. Na oknie personalizacji listy w sekcji Tabele użytkownika należy dołączyć powyższe tabele, aby mieć dostęp do ich pól. W związku z tym w kolumnie Nazwa tabeli dodajemy tabelę CDN.OAtrybuty, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek dla atrybutu o nazwie Atrybut 1, wprowadzamy zatem:
OAT_PrcId = PRI_PraId AND OAT_NazwaKlasy = 'Atrybut 1'Następnie podajemy drugą tabelę CDN.OAtrybutyHist, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek filtrujący zakres dat na dzień daty aktualności listy, wprowadzamy zatem:
ATH_OatId = OAT_OatId AND ATH_DataOd <= #filtr_dtDataAkt# AND ATH_DataDo >= #filtr_dtDataAkt#Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.OAtrybutyHist. Należy odnaleźć pole ATH_Wartosc i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.

14. Lista pracowników. Kolumna z pełnym kodem ubezpieczenia pracownika na dzień daty aktualności listy

Na oknie personalizacji listy w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
CASE WHEN LEN(PRE_UBZTyuId) = 3 THEN '0' + CAST(PRE_UBZTyuId as CHAR(3)) + CAST(PRE_PrawoER as CHAR(1)) + CAST(PRE_StNiepelnosp as CHAR(1)) WHEN PRE_UBZTyuId = 99999 THEN '' ELSE CAST(PRE_UBZTyuId as CHAR(4)) + CAST(PRE_PrawoER as CHAR(1)) + CAST(PRE_StNiepelnosp as CHAR(1)) END

15. Lista wypłat pracowników. Kolumna z sumą naliczonej zaliczki podatku (bez zaokrągleń) w wypłacie pracownika dla wybranej listy płac

Potrzebne pola znajdują się w tabeli CDN.Wyplaty. Należy wykonać złączenie do powyższej tabeli. Na oknie personalizacji listy w sekcji Tabele użytkownika w kolumnie Nazwa tabeli podajemy tabelę CDN.Wyplaty, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek przekazujący ID wybranej listy płac, wprowadzamy zatem:
WPL_PraId = PRI_PraId and WPL_LplId = #filtr_LookupListaPlac_ID#
Następnie w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
(SELECT SUM(WPE_NalFis) FROM CDN.WypElementy WHERE WPE_WplId = WPL_WplId)

16. Lista wypłat pracowników. Kolumna z sumą naliczonej zaliczki podatku (bez zaokrągleń) w wypłacie pracownika dla wybranej listy płac – przypadek, gdy dwie wypłaty (np. umowy cywilnoprawne) policzone są w jednej wypłacie

Na oknie personalizacji listy w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
(SELECT Suma FROM (
SELECT WPE_WplId, WPE_PraId, SUM(WPE_NalFis) OVER(PARTITION BY WPE_PraID) AS Suma, WPL_LplId, ROW_NUMBER() OVER(PARTITION BY WPE_PraID ORDER BY WPE_NalFis) AS "Row Number"
FROM CDN.WypElementy
JOIN CDN.Wyplaty ON WPL_WplId = WPE_WplId
WHERE WPL_LplId = #filtr_LookupListaPlac_ID#
GROUP BY WPL_LplId, WPE_PraId, WPE_NalFis, WPE_WplId) AS T
WHERE "Row Number" = 1 AND WPE_PraId = PRI_PraId)

17. Rejestr VAT. Kolumna do jakiego dziennika został zapis z rejestru zaksięgowany oraz jaki ma numer w dzienniku

Potrzebne pola znajdują się w tabeli CDN.DekretyNag. Na oknie personalizacji listy w sekcji Tabele użytkownika należy połączyć powyższe tabele aby mieć dostęp do pól związanych z dziennikami. W związku z powyższym w kolumnie Nazwa tabeli podajemy tabelę CDN.DekretyNag a w kolumnie Instrukcja łączenia wprowadzamy pola klucze łączące obie tabele VaN_DekId = DeN_DeNId zgodnie ze strukturą bazy danych. Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.DekretyNag. Należy odnaleźć pole DeN_Dziennik i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny. Tak samo dla kolumny DeN_NrKsiegi.

18. Rejestr VAT. Kolumny: forma płatności, termin, kwota zaksięgowania do KPiR-kwota, data księgowania, numer korekty, numer dziennika cząstkowego

Forma płatności -  należy skorzystać z dostępnej na liście kolumny: Fpl_Nazwa

Termin -  należy skorzystać z dostępnej na liście kolumny: VaN_Termin

Kwota zaksięgowana do KPiR -  Kwota:   Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN.ZapisyKPR po polach VaN_KPRID=KpR_KPRID. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:

KPR_Sprzedaz+KPR_Pozostale+KPR_Towary+KPR_Uboczne+KPR_Reklama+KPR_Wynagrodz+KPR_Inne+KPR_Zaszlosci

Data księgowania - należy skorzystać z dostępnej na liście kolumny: KPR_DataOpe

Numer korekty - należy skorzystać z dostępnej na liście kolumny: VaN_Korekta

Numer dziennika cząstkowego - Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN.DekretyNag po polach VaN_DekID=DeN_DeNID. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
DeN_Dziennik+'/'+CONVERT(varchar(20),DeN_NrDziennika)

19. Lista not odsetkowych, ponagleń zapłaty, potwierdzeń sald. Kolumna kod podmiotu

Kod podmiotu -  należy skorzystać z dostępnej na liście kolumny: Pod_Kod

20. Lista dokumentów rozliczonych. Kolumna pokazująca czy rozliczenie zostało uwzględnione na dokumencie kompensaty

Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN.KompensatyElem po polach BrK_BrkId=Kpe_BrkId. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE Brk_BrkId WHEN Kpe_BrkId THEN 'Tak' ELSE '' END

21. Lista środków trwałych. Kolumny: metoda amortyzacji, opis

Metoda amortyzacji - w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE SrT_Metoda WHEN 1 THEN 'Liniowa' WHEN 2 THEN 'Degresywna' WHEN 3 THEN 'Jednorazowy' WHEN 4 THEN 'Naturalna' WHEN 5 THEN 'Nie amortyzowany' ENDOpis - należy skorzystać z dostępnej na liście kolumny: Srt_Opis.

22. Lista dokumentów środków trwałych. Kolumny: osoba przekazująca, osoba przyjmująca, miejsce użytkowania przekazujące, miejsce użytkowania przyjmujące

Osoba przekazująca - należy skorzystać z dostępnej na liście kolumny: SrH_PrcImieNazwisko1

Osoba przyjmująca - należy skorzystać z dostępnej na liście kolumny: SrH_PrcImieNazwisko2

Miejsce użytkowania przekazujące - należy skorzystać z dostępnej na liście kolumny: SrH_MiejsceUzytkowania1

Miejsce użytkowania przyjmujące - należy skorzystać z dostępnej na liście kolumny: SrH_MiejsceUzytkowania2

23. Lista ewidencji dodatkowej. Kolumna kod kategorii

Kod kategorii: Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN. Kategorie po polach EDN_KatID=Kat_KatID. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych Kat_KodSzczegol

24. Lista zleceń serwisowych. Kolumny: nazwa urządzenia, opis urządzenia, priorytet zlecenia

Nazwa urządzenia - należy skorzystać z dostępnej na liście kolumny: SrU_Nazwa

Opis urządzenia - należy skorzystać z dostępnej na liście kolumny: SrU_Opis

Priorytet zlecenia - w sekcji „Kolumny użytkownika” dodać kolumnę o instrukcji pobierania danych:
CASE SrZ_Priorytet WHEN 1 THEN 'najwyższy' WHEN 2 THEN 'wysoki' WHEN 3 THEN 'niski' WHEN 4 THEN 'najniższy' END

25. Lista biblioteki dokumentów. Kolumny: schemat obiegu oraz etap bieżący

Schemat obiegu - należy skorzystać z dostępnej na liście kolumny: DNV_ProcesKod

Etap bieżący - Należy w sekcji Tabele użytkownika wykonać złączenie do bazy konfiguracyjnej i tabeli CDN. SekEtapy. W kolumnie Nazwa tabeli należy wprowadzić [CDN_KNF_Konfiguracja].[CDN].[SekEtapy] a w kolumnie Instrukcja łączenia wprowadzić DNV_EtapBiezacyLP=SE_SEID. Teraz w sekcji Kolumny użytkownika skorzystać z dostępnej na liście kolumny: SE_Symbol

26. Zlecenie serwisowe. Zakładka Części. Kolumna z numerem dokumentu wydającego część

W sekcji Tabele użytkownika należy wykonać złączenie do trzech tabel:

  • CDN.TraElemRelacje po polach TeR_ParentId = SrC_SrCId and TeR_ParentTyp = 902,
  • CDN.TraElem po polach TrE_TrEId = TeR_ChildId,
  • CDN.TraNag po polach TrN_TrNId = TrE_TrNId.

Następnie w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych TrN_NumerPelny.

27. Oferta Handlowa. Dodanie kolumny zawierającej cenę zakupu w liście elementów

W sekcji Tabele użytkownika należy wykonać złączenie do jednej tabeli : CDN.TwrCeny

W polu instrukcja łączenie wpisujemy TwC_TwCNumer=1 and TwC_TwrID =TwrId

W obszarze Kolumny użytkownika dodajemy nową kolumnę Cena Zakupu o instrukcji TwC_Wartosc

28. Dodanie na dokumentach handlowo magazynowych kolumny: Ilość dostępna i braki towaru, na magazynie z dokumentu i z datą wystawienia dokumentu

Na oknie konfiguracji kolumn dodatkowych dodajemy w obszarze dodatkowych tabel tabelę CDN.TraNag z łączem UsrA.Trn_TrnID = Tre_TrnID

Następnie w oknie dodatkowych kolumn dodajemy kolumnę Ilość dostępna:
(select case when TwI_Ilosc - TwI_Rezerwacje >0 then TwI_Ilosc - TwI_Rezerwacje else 0 end from
CDN.TwrIlosci B
where
B.TwI_TwrId = Tre_TwrId and
B.TwI_MagId = TrE_MagId --MagID
And B.TwI_Data = (
Select Top 1 H.TwI_Data From CDN.TwrIlosci H Where H.TwI_TwrId = B.TwI_TwrID --A.Twr_TwrId
and H.TwI_MagId = TrE_MagId --magId
And H.TwI_Data <= TrN_DataDok --'2016-03-10'
Order By H.TwI_Data Desc ))

A dla kolumny Braki:
(select TwI_Braki from
CDN.TwrIlosci B
where
B.TwI_TwrId = Tre_TwrId and
B.TwI_MagId = TrE_MagId --MagID
And B.TwI_Data = (
Select Top 1 H.TwI_Data From CDN.TwrIlosci H Where H.TwI_TwrId = B.TwI_TwrID --A.Twr_TwrId
And H.TwI_MagId = TrE_MagId --magId
And H.TwI_Data <= TrN_DataDok --'2016-03-10'
Order By H.TwI_Data Desc ))

29. Formularz dokumentu handlowo-magazynowego – ostatnia cena zakupu, data ostatniej dostawy oraz średnia cena zakupu

Ostatnia cena zakupu:

Należy dodać tabelę CDN.TwrCeny z łączeniem Tre_TwrId = Twc_TwrId and Twc_TwCNumer = 1

Instrukcja pobierania danych dla kolumny ma postać:

TwC_Wartosc

Data ostatniej dostawy:

Należy dodać tabelę CDN.TraSElem z łączeniem Tre_TwrId = Trs_TwrId

Instrukcja pobierania danych dla kolumny ma postać:

(select MAX(trs_dataope) from cdn.traselem where trs_typ = 1)

Średnia cena zakupu:

Należy dodać tabelę CDN.TraSElem z łączeniem Tre_TwrId = Trs_TwrId

Instrukcja pobierania danych dla kolumny ma postać:

(select CONVERT(decimal(10,2), AVG(trs_cena)) from cdn.traselem where trs_typ = 1)

30. Okno historii Towaru - kolumna opis dokumentu

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
(Select Trn_Opis from cdn.TraNag TRN where TRN.TrN_TrNId = _DATASOURCE_.TrNId)

31. Formularz dokumentu handlowo-magazynowego - kolumna wartość atrybutu pozycji

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych odpowiednio:

  • instrukcja dla kolumny pierwszego Atrybutu pozycji dokumentu:
    (SELECT TrE_Atr1_Kod + ':' + TrE_Atr1_Wartosc from CDN.traelem ATR where ATR.TrE_TrEID = _DATASOURCE_.TrE_TrEID)
  • instrukcja dla kolumny drugiego Atrybutu pozycji dokumentu:
    (SELECT TrE_Atr2_Kod + ':' + TrE_Atr2_Wartosc from CDN.traelem ATR where ATR.TrE_TrEID = _DATASOURCE_.TrE_TrEID)
  • instrukcja dla kolumny trzeciego Atrybutu pozycji dokumentu:
    (SELECT TrE_Atr3_Kod + ':' + TrE_Atr3_Wartosc from CDN.traelem ATR where ATR.TrE_TrEID = _DATASOURCE_.TrE_TrEID)
  • instrukcja dla kolumny czwartego Atrybutu pozycji dokumentu:
    (SELECT TrE_Atr4_Kod + ':' + TrE_Atr4_Wartosc from CDN.traelem ATR where ATR.TrE_TrEID = _DATASOURCE_.TrE_TrEID)
  • instrukcja dla kolumny piątego Atrybutu pozycji dokumentu:
    (SELECT TrE_Atr5_Kod + ':' + TrE_Atr5_Wartosc from CDN.traelem ATR where ATR.TrE_TrEID = _DATASOURCE_.TrE_TrEID)




OPT042 – Dodatkowe możliwości filtrowania list w programie

Teoria i przykłady praktyczne

Panel filtra zaawansowanego

Filtr jest narzędziem wspomagającym przeszukiwanie list. W wielu miejscach systemu pojawiają się różnego rodzaju listy, do których można stosować filtry. Filtrowanie listy powoduje zawężenie ilości elementów wyświetlanych na liście do takich, które spełniają warunki filtra. Panel filtra można stosować na dwa sposoby:

  • Proste filtrowanie
  • Filtr zaawansowany


We wszystkich przypadkach list, które mogą być filtrowane, panel filtra zaawansowanego znajduje się na dole listy. Po prawej stronie wiersza filtra znajdują się zawsze przyciski do włączania i wyłączania działania filtra Filtruj, Wyczyść filtr oraz przycisk do tworzenia warunków filtrujących filtra zaawansowanego Konstruktor filtra.

Jeżeli pinezka (widoczna obok ikony filtrowania – lejka) jest:
wyłączona – wówczas po zmianie filtrowania na ikonie lejka pojawia się znak zapytania i dopiero po jego kliknięciu uruchomione zostanie filtrowanie. Ten tryb pracy jest efektywniejszy gdy lista zwiera bardzo dużo pozycji. Można wtedy najpierw ustawić wszystkie parametry filtrowania, a dopiero na końcu uruchomić samo przefiltrowanie listy.
włączona – wszystkie zmiany filtrowania wykonywane są na bieżąco i od razu widoczne są na liście.

Filtr zaawansowany pozwala filtrować listę według stworzonych przez Użytkownika warunków. Filtry zaawansowane są zapamiętywane w systemie. Nazwa filtra zaawansowanego jest poprzedzona znakiem „#”. Do tworzenia filtra zaawansowanego służy Konstruktor filtra , uruchamiany z dowolnego okna, w którym istnieje możliwość zastosowania filtra.
Praca z konstruktorem filtra wymaga pewnej znajomości struktury baz danych oraz umiejętności formułowania warunków logicznych.
Nazwa – nazwa filtra. Po zapisaniu filtra wpisana w tym polu nazwa zostanie poprzedzona znakiem „#”. Filtr pod tą nazwą będzie zapisany w zbiorze dostępnych filtrów dla danej listy. Zbiór filtrów przyporządkowanych do danej listy może być dowolnie modyfikowany tzn. można dodawać, poprawiać i usuwać zdefiniowane filtry.

Zakładka [Ogólne]

Zakładka [Ogólne] zawiera mechanizm łatwego konstruowania rozbudowanego wyrażenia logicznego filtrującego listę. W rozbudowanej postaci warunek logiczny może składać się z wielu członów połączonych operatorami logicznymi „oraz” (AND), „lub” (OR), „oraz nie” (AND Not) i „lub nie” (OR Not). W konstruktorze filtra tworzy się proste warunki logiczne, a następnie łączy się je za pomocą dostępnych operatorów.

Konstruktor filtra – zakładka Ogólne

Tworzenie pojedynczego wyrażenia filtra zaczyna się od dodania warunku (po kliknięciu w domyślny operator Oraz wybieramy opcję Dodaj warunek lub obok wciskamy przycisk). Następnie w warunku kliknięcie na domyślnie podstawione pierwsze pole z bazy danych rozwija listę z wyborem dostępnych pól. Nie trzeba znać dokładnie nazw pól czy struktury bazy – po prawej stronie listy znajduje się opis (komentarz).

Konstruktor filtra – lista dostępnych pól z bazy danych

Dostęp do pól zorganizowany jest za pośrednictwem list rozwijanych. W zależności od tego, dla jakiej listy tworzony jest filtr (z poziomu którego okna został wywołany konstruktor filtra), lista dostępnych pól jest różna. Przykładowo, jeżeli konstruktor filtra zostanie wywołany z okna Kontrahenci – wówczas dostępne będą pola związane z kartoteką kontrahenta.
Za każdym razem Użytkownik otrzymuje zestaw dostępnych pól odpowiedni do danej listy. Dzięki temu, chcąc tworzyć własne filtry, nie musi znać całej bazy danych. Może się ograniczyć do znajomości struktury kilku tabel, w oparciu o które będzie budował własne filtry. Po wyborze pola należy wybrać odpowiedni operator porównania
z listy. Lista pojawi się po kliknięciu na domyślnie wyświetlany operator.

Konstruktor filtra – dostępne operatory warunkujące

Inaczej mówiąc, należy przyrównać wybrane pole do ustalonej z góry wartości stałej lub do parametru, którego wartość będzie pobierana w momencie uruchamiania filtra. Wartość do której będzie odbywało się przyrównanie wpisujemy po kliknięciu w pole . Tworzenie wyrażenia może odbywać się także w oknie Edycja wyrażenia filtra, które uruchamia się po kliknięciu w pole , a następnie przycisku plusa po prawej stronie .

Po wywołaniu okna Edycja wyrażenia filtra należy podać wartość szukaną dla tego pola. Jeżeli wartość szukana ma być pobierana w momencie uruchomienia filtra to należy zaznaczyć pole wyboru Pytaj o wartość. Następnie w polu Tytuł należy wpisać opis pobieranej wartości. W ten prosty sposób tworzy się filtry z parametrem. Poniżej przedstawione zostało okno z pytaniem o parametry filtra. Okno pojawia się automatycznie po uruchomieniu filtra z parametrem.

Edycja wyrażenia filtra

Logiczna reprezentacja utworzonego w ten sposób wyrażenia filtrującego jest wyświetlana w dolnej części okna po zaakceptowaniu Edycji wyrażenia filtra.

Zakładka [Zaawansowane]

Zakładka [Ogólne] konstruktora filtra pozwala na łatwe budowanie wyrażeń filtrujących, posiada on jednak pewne ograniczenia. Dla bardziej wymagających Użytkowników została zaprojektowana zakładka [Zaawansowane]. Można tu ręczne tworzyć warunek filtrujący. Zakładka [Zaawansowane] posiada pole, do którego wprowadzany jest filtr w postaci wyrażenia z użyciem składni języka SQL. Praca z konstruktorem filtra wymaga znajomości struktury baz danych oraz umiejętności formułowania warunków logicznych.

Uwaga
Aby zobaczyć listę zdefiniowanych filtrów należy przycisnąć klawisz CTRL razem z LEWYM KLAWISZEM MYSZY na przycisku Konstruktor filtra. Lista ta obsługiwana jest przez standardowe przyciski i klawisze umożliwiające dodawanie, edytowanie i kasowanie filtrów.

Konstruktor filtra – zakładka Zaawansowane

Jeżeli zachodzi potrzeba utworzenia warunku, aby filtr działał jedynie na wybranej bazie firmowej, na początku treści filtra należy wpisać:

'DEMO' = {_QGetSQL('select SYS_Wartosc from cdn.SystemCDN where SYS_ID =1')}
po tym warunku po operatorze „AND” należy wprowadzić właściwą treść filtra. W powyższym warunku na początku jako argument (w powyższym przykładzie „DEMO”) należy podać nazwę bazy wyświetlaną na liście firm.

Zakładka [Opcje]

Zakładka [Opcje] zawiera typ filtra. Domyślnym typem jest filtr Stanowiska. Jego definicja jest zapisywana w rejestrze systemowym i filtr stanowiska będzie widoczny dla danego stanowiska.

Definicja filtra Globalnego jest zapisywana w bazie danych, dzięki czemu jest on widoczny i dostępny do edycji dla wszystkich Użytkowników.

Filtr może być dostępny tylko dla wybranego operatora po zaznaczeniu opcji Operator i wybraniu odpowiedniego operatora. Po zalogowaniu się operator będzie miał możliwość wyboru filtra z listy filtrów.

Filtr może być Obowiązkowy dla danego operatora, co oznacza, że po zalogowaniu się tego operatora filtr będzie włączony i nie będzie widoczny (do wyboru) na liście filtrów. Dodatkowo należy zaznaczyć w menu System/ Konfiguracja/ Program/ Użytkowe/ Parametry – parametr Stosuj filtry obowiązkowe.

Parametr Chroniony – jeśli zaznaczy go operator z uprawnieniami Administratora, wówczas inni operatorzy nie będą mieli możliwości edycji i usunięcia danego filtra.

Parametr Domyślny można zaznaczyć dla danego filtra niezależnie od jego typu (Stanowiska/ Operatora/ Globalny/ Obowiązkowy). Zaznaczenie parametru powoduje, że filtr jest automatycznie stosowany przy wejściu na daną listę. W odróżnieniu od filtra obowiązkowego można go wyłączyć. Filtrów domyślnych dla danej listy może być wiele, ale przy otwieraniu listy zostanie wybrany tylko jeden z nich. Kryterium wyboru wyznacza typ filtra oraz kolejność filtra w ramach typu. Najwyższy priorytet mają filtry Stanowiska, a więc związane z danym komputerem. Jeśli na jednym lub kilku filtrach typu Użytkownika, podłączonych do danej listy, zostanie zaznaczony parametr Domyślny, ostatni z nich zostanie uznany jako domyślny. W przypadku braku domyślnego filtra Stanowiska przeszukiwane są filtry Operatora, a wybór filtra domyślnego następuje analogicznie jak poprzednio. Jeśli na danej liście nie ma zdefiniowanego ani filtra domyślnego Stanowiska ani Operatora – domyślny filtr jest szukany w filtrach Globalnych.

Konstruktor filtra – zakładka Opcje

Zapamiętywanie ustawień filtra

Po zamknięciu listy zapamiętywanie ustawień filtra jest realizowane wg poniższych zasad:

  • zapamiętywane jest czy panel dodatkowy był zwinięty/rozwinięty,
  • zapamiętywane jest czy pinezka była włączona/wyłączona,
  • zapamiętywane są ustawienia pól z panelu podstawowego i rozwijanego,
  • lista otwiera się wyfiltrowana wg zapamiętanych filtrów.


Ponadto przy pierwszym uruchomieniu listy pinezka jest włączona, a dostępna opcja Wyczyść filtr na liście oraz Reset ustawień okien przywraca ustawienia domyślne dla filtrów panelu podstawowego i rozwijanego.

Odświeżanie listy odbywa się przy każdorazowym użyciu lejka lub oraz poprzez wciśnięcie F5 w dowolnym miejscu na liście.

Filtry zapisywane są do bazy konfiguracyjnej, więc odtworzenie bazy konfiguracyjnej powoduje przywrócenie wszystkich filtrów, które zostały do niej dodane. Inną możliwością przeniesienia filtrów do innej instalacji jest skopiowanie treści filtra z zakładki [Zaawansowane] Konstruktora filtra i wklejenie jej w tym samym miejscu w innej instalacji Comarch ERP Optima. Istotne jest, aby Konstruktor filtra był uruchomiony z poziomu tej samej listy.

Przykłady z instrukcją tworzenia

Moduły Handlowo-Magazynowe

Filtry tworzone z poziomu zakładki [Ogólne]

Na liście Faktur Sprzedaży chcemy wyświetlić tylko te dokumenty, których wartość brutto jest pomiędzy 500 a 1000 PLN. W konstruktorze filtra, zakładka [Ogólne] w pole Nazwa wpisujemy wybraną nazwę filtra, następnie w celu dodania warunków klikamy ikonę plusa i wskazujemy pole TrN_RazemBrutto.

Określamy dla niego warunek „Jest większe niż” oraz kwotę 500
Następnie analogicznie dodajemy kolejny warunek, w którym określamy TrN_RazemBrutto „Jest mniejsze niż” 1000. Zapisujemy filtr ikoną .
Po zapisie jest on widoczny na liście filtrów dostępnych z poziomu listy Faktur Sprzedaży.

Filtry tworzone z poziomu zakładki [Zaawansowane]

Z poziomu listy Faktur Sprzedaży do bazy danych wysyłane jest automatycznie zapytanie:

SELECT [lista kolumn] FROM A.TraNag WHERE …

Alias „A” dla tabeli TraNag, który jest widoczny w powyższym przykładzie pozwala na tworzenie bardziej skomplikowanych zapytań przy użyciu wielu tabel. Dla różnych list aliasy mogą być różne – można je podejrzeć za pomocą zaawansowanych narzędzi do obsługi serwera SQL.
W treści filtra zaawansowanego wpisujemy wyrażenie SQL, które następuje po WHERE w zapytaniu.

Prosty filtr zaawansowany
Dla filtra przedstawionego we wcześniejszym przykładzie dla zakładki [Ogólne] można zbudować bezpośrednie zapytanie w zakładce [Zaawansowane], które wyglądałoby tak:

(TrN_RazemBrutto > '500.0000' AND TrN_RazemBrutto < '1000.0000')

Jest to filtr o analogicznym działaniu, pokazujący Faktury Sprzedaży, których wartość brutto zawiera się między 500 a 1000 PLN.

Filtr zaawansowany z parametrem dynamicznym
W przykładzie pokażemy jak wyfiltrować dokumenty handlowo-magazynowe, które wystawił określony operator.
Id operatora, który wystawił dany dokument znajduje się w bazie w tabeli TraNag w polu TrN_OpeZalID. W filtrze musimy porównać wartość tego pola z ID operatora wybranego. Potrzebny będzie parametr dynamiczny. Stworzymy go klikając prawym przyciskiem myszy w polu Filtr SQL i wybierając opcję Wstaw/edytuj deklarację parametru dynamicznego.

Pojawi się kreator, który poprowadzi nas przez kolejne kroki, w których:

  • wskazujemy nazwę parametru, której użyjemy potem w zapytaniu (np. OpeID)
  • wybór typów parametru:


Parametr typu lista wywoływana
– jeśli wybierzemy typ – lista wywoływana – dla tego typu parametrów pojawia się pewien zakres gotowych procedur, z których możemy wybrać np. opcje: lista kontrahentów, lista kategorii, lista grup, lista towarów itp. Wybieramy z tej listy procedurę lista operatorów, która wyświetli listę akronimów operatorów, a po wyborze konkretnego operatora zwróci jego ID i przekaże w parametrze OpeID.

Po zatwierdzeniu kolejnych okien deklaracja parametru wygląda w ten sposób:

@PAR ?@LS20(OP_PROC.DLL|CALLLOOKUPOPELISTA())|OpeID|&OpeID:{}@? PAR@

Wywołanie parametru w zapytaniu wstawiamy jak pokazano poniżej:

TrN_OpeZalID = ??OpeID

Umożliwi to wybór z listy operatorów wybranego operatora i przefiltrowanie dokumentów po określonym operatorze. Filtr pokazuje dokumenty WYSTAWIONE przez danego operatora. Aby filtr reagował na dokumenty ZMODYFIKOWANE przez operatora należy zmienić TrN_OpeZalID na TrN_OpeModID

Parametr typu lista rozwijana
Jeśli chcielibyśmy w parametrze zastosować listę rozwijaną, wówczas w kolejnym kroku kreatora pojawi się szablon zapytania, które należy uzupełnić:

SELECT ID = 1, Kod = ''

W tym miejscu powinno znaleźć się zapytanie, które zwróci nam ID oraz KOD. KOD będzie wyświetlany na liście rozwijanej, natomiast po dokonaniu wyboru z tej listy – do parametru będzie przekazywane ID wyboru.

SELECT ID = Ope_OpeId, Kod = Ope_Kod From {OPBK()}.CDN.Operatorzy Order By Ope_Kod

Lista operatorów znajduje się w tabeli CDN.Operatorzy w bazie konfiguracyjnej, dlatego konieczne jest odwołanie w podany sposób:

{OPBK()}.CDN.Operatorzy

Ostatecznie filtr z parametrem z listą rozwijaną będzie wyglądał w ten sposób:

@PAR ?@R(SELECT ID = Ope_OpeId, Kod = Ope_Kod From {OPBK()}.CDN.Operatorzy Order By Ope_Kod)|OpeID|&OpeID:{}@? PAR@
TrN_OpeZalID = ??OpeID

Należy pamiętać o tym, aby w definicji parametru dynamicznego użyć kolumny liczbowej (w tym przypadku TrN_OpeZalID).

Funkcje systemowe
Modyfikacją zaprezentowanego filtra może być taki filtr, który pokaże dokumenty aktualnie zalogowanego operatora. W tym celu można wykorzystać funkcje systemowe. Opcja dostępna pod prawym przyciskiem myszy:

Spośród listy dostępnych funkcji możemy wybrać funkcję OperatorID, która zwróci ID zalogowanego operatora:

Ostatecznie filtr z użyciem funkcji systemowej będzie wyglądał tak:

TrN_OpeZalID = {OperatorID}

Moduły Księgowe

Filtry tworzone z poziomu zakładki [Ogólne]

Na liście zapisów kasowych/bankowych chcemy wyświetlić zapisy, na których nie zostało uzupełnione konto przeciwstawne.
W konstruktorze filtra, zakładka [Ogólne] w pole Nazwa wpisujemy wybraną nazwę filtra, następnie w celu dodania warunków klikamy ikonę plusa i wskazujemy pole Bzp_KontoPrzeciwstawne.

Określamy dla niego warunek „Jest puste”.
Następnie zapisujemy filtr ikoną .
Po zapisie jest on widoczny na liście filtrów dostępnych z poziomu listy zapisów kasowych/bankowych.

Filtry tworzone z poziomu zakładki [Zaawansowane]

Filtr zaawansowany z parametrem dynamicznym
W przykładzie pokażemy jak wyfiltrować dokumenty w rejestrze VAT, które posiadają określoną kategorię w nagłówku dokumentu.
Id kategorii, która została wybrana na dokumencie w rejestrze VAT znajduje się w bazie w tabeli VatNag w polu VaN_KatID.
W filtrze musimy porównać wartość tego pola z ID operatora wybranego. Potrzebny będzie parametr dynamiczny. Stworzymy go klikając prawym przyciskiem myszy w polu Filtr SQL i wybierając opcję Wstaw/edytuj deklarację parametru dynamicznego.

Pojawi się kreator, który poprowadzi nas przez kolejne kroki, w których:

  • wskazujemy nazwę parametru, której użyjemy potem w zapytaniu (np. Kategoria)
  • wybór typów parametru:


Parametr typu lista wywoływana
– jeśli wybierzemy typ – lista wywoływana – dla tego typu parametrów pojawia się pewien zakres gotowych procedur, z których możemy wybrać np. opcje: lista kontrahentów, lista kategorii, lista grup, lista towarów itp.
Wybieramy z tej listy procedurę lista kategorii, która wyświetli listę kategorii, a po wyborze konkretnej kategorii zwróci jego ID i przekaże w parametrze kategoria.

Po zatwierdzeniu kolejnych okien deklaracja parametru wygląda w ten sposób:

@PAR ?@LS0(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:0|@? PAR@

Wywołanie parametru w zapytaniu wstawiamy jak poniżej:

VaN_KatId = ??Kategoria

Umożliwi to wybór z listy kategorii wybranej kategorii i przefiltrowanie dokumentów po określonej kategorii wybranej w nagłówku dokumentu w rejestrze VAT. Należy pamiętać o tym, aby w definicji parametru dynamicznego użyć kolumny liczbowej (w tym przypadku VaN_KatId).

Moduły Płace i Kadry

Filtry tworzone z poziomu zakładki [Ogólne]

Na liście pracowników w kadrach chcemy wyświetlić osoby, dla których została odnotowana informacja na temat wieloetatowości, a konkretnie posiadają ustawiony etat podstawowy.
W konstruktorze filtra, zakładka [Ogólne] w pole Nazwa wpisujemy wybraną nazwę filtra, następnie w celu dodania warunków klikamy ikonę plusa i wskazujemy pole PRI_Nadrzedny.

Określamy dla niego warunek „Jest równe” oraz podajemy wartość 1.
Następnie zapisujemy filtr ikoną .
Po zapisie jest on widoczny na liście filtrów dostępnych z poziomu listy pracowników.

Filtry tworzone z poziomu zakładki [Zaawansowane]


Filtr zaawansowany z parametrem dynamicznym

W przykładzie pokażemy jak odfiltrować pracowników, którzy posiadają przypisaną określoną kategorię.
Id kategorii, która została przypisana pracownikowi na jego formularzu kadrowym (zakładka 7 [Dodatkowe]) znajduje się w bazie w tabeli PracEtaty w polu PRE_KatId.
W filtrze musimy porównać wartość tego pola z wartością wybraną z listy słownikowej wszystkich kategorii. Potrzebny będzie parametr dynamiczny. Stworzymy go klikając prawym przyciskiem myszy w polu Filtr SQL i wybierając opcję Wstaw/edytuj deklarację parametru dynamicznego.

  • wskazujemy nazwę parametru, której użyjemy potem w zapytaniu (np. Kategoria)
  • wybór typów parametru:


Parametr typu lista rozwijana
– jeśli wybierzemy typ – lista rozwijana – dla tego typu parametrów należy zdefiniować odpowiednie zapytanie SQL podając w zapytaniu dwa pobierane pola z czego pierwsze musi być numeryczne (identyfikator) a drugie tekstowe (opis).

Należy pamiętać o tym, aby w definicji parametru dynamicznego użyć kolumny liczbowej (w tym przypadku PRE_KatId).

Pozostałe przykłady

Uwaga
Nowo dodane przykłady filtrów oznaczone są kolorem zielonym na liście.

Ogólne

Jak ustawić w filtrze datę bieżącą lub zakres dat, np. od pierwszego do ostatniego dnia miesiąca?

Aby po zdefiniowaniu filtrów, w których pada pytanie o datę lub zakres dat podpowiadała się data bieżąca, a nie data z dnia definiowania filtra, należy skorzystać z parametru dynamicznego. Na zakładce [Zaawansowane] w Konstruktorze filtra należy zdefiniować odpowiednie parametry dynamiczne (prawy klawisz myszy na polu z filtrem, Wstaw/edytuj deklarację parametru dynamicznego, potem, żeby go wykorzystać: Wstaw/edytuj odwołanie do parametru dynamicznego).
Przykładowy filtr (zakres dat na bieżący miesiąc) w polu Filtr SQL powinien mieć wpisane:

@PAR ?@D17|data1|&Data od:{DateClwFirstDay('m')} @? PAR@ @PAR ?@D17|data2|&Data do:{DateClwLastDay('m')} @? PAR@ TrN_DataDok >= ??data1 AND TrN_DataDok <= ??data2

Jak zawęzić listę kontrahentów do tych, których kod rozpoczyna się na zadaną literę?

Taki filtr może być przydatny przy seryjnym generowaniu Not odsetkowych, Ponagleń Zapłaty czy Potwierdzeń Salda, które jest dostępne z menu Ogólne/ Kontrahenci, pod ikoną Generacja na pasku zadań.
W Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać w polu Filtr SQL:

Knt_Kod LIKE ?@S100|Kod zaczyna się od:'' + '%'

Aby odfiltrować dokumenty Ponagleń zapłaty lub Potwierdzeń salda dla kontrahentów, których kod rozpoczyna się od zadanej litery, należy:
W Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać w polu Filtr SQL:

exists (select * from CDN.Kontrahenci where BDN_PodmiotID=Knt_KntId AND Knt_Kod LIKE ?@S100|Kod zaczyna się od:'' + '%')

Dla listy Not odsetkowych w polu Filtr SQL:

exists (select * from CDN.Kontrahenci where NON_PodmiotID=Knt_KntId AND Knt_Kod LIKE ?@S100|Kod zaczyna się od:'' + '%')

Jak wyfiltrować kontrahentów, którzy mają wybraną na karcie konkretną kategorię szczegółową (sprzedaży bądź zakupu)?

Aby odnaleźć kontrahentów z określoną kategorią sprzedaży, na liście kontrahentów należy uruchomić konstruktor filtra, a następnie na zakładce [Zaawansowane] w polu Filtr SQL należy wpisać:

@PAR ?@LS0(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:0|@? PAR@
Knt_KatID= ??Kategoria

Z kolei, aby odnaleźć kontrahentów z określoną kategorią zakupu należy zastosować filtr:

@PAR ?@LS0(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:0|@? PAR@
Knt_KatZakID= ??Kategoria

Przed odfiltrowaniem listy program będzie pytał o kategorię szczegółową.
Aby odnaleźć kontrahentów z kategorią zawierającą określoną frazę, to stosując poniższy filtr:

Knt_KatID=(select Kat_KatID from cdn.kategorie where Kat_KatID=Knt_KatID and kat_KodSzczegol like ?@S100|Kat szczeg:'')

podczas wpisywania kategorii, przed bądź za wpisywaną frazą należy wstawić znak „%” zastępujący dowolny ciąg znaków.

Jak zbudować filtr, który przed odfiltrowaniem listy kontrahentów z danego województwa będzie wyświetlał listę województw do wyboru?

Na liście kontrahentów, w Konstruktorze filtra na zakładce [Zaawansowane] należy wpisać:

@PAR ?@R(SELECT Id = 0, Kod = '' UNION
SELECT Id = 1, Kod = 'dolnośląskie' UNION
SELECT Id = 2, Kod = 'kujawsko-pomorskie' UNION
SELECT Id = 3, Kod = 'lubelskie' UNION
SELECT Id = 4, Kod = 'lubuskie' UNION
SELECT Id = 5, Kod = 'łódzkie' UNION
SELECT Id = 6, Kod = 'małopolskie' UNION
SELECT Id = 7, Kod = 'mazowieckie' UNION
SELECT Id = 8, Kod = 'opolskie' UNION
SELECT Id = 9, Kod = 'podkarpackie' UNION
SELECT Id = 10, Kod = 'podlaskie' UNION
SELECT Id = 11, Kod = 'pomorskie' UNION
SELECT Id = 12, Kod = 'śląskie' UNION
SELECT Id = 13, Kod = 'świętokrzyskie' UNION
SELECT Id = 14, Kod = 'warmińsko-mazurskie' UNION
SELECT Id = 15, Kod = 'wielkopolskie' UNION
SELECT Id = 16, Kod = 'zachodniopomorskie')|Woj|&Województwo: @? PAR@
Knt_Wojewodztwo = Case ??Woj
When 1 Then 'dolnośląskie'
When 2 Then 'kujawsko-pomorskie'
When 3 Then 'lubelskie'
When 4 Then 'lubuskie'
When 5 Then 'łódzkie'
When 6 Then 'małopolskie'
When 7 Then 'mazowieckie'
When 8 Then 'opolskie'
When 9 Then 'podkarpackie'
When 10 Then 'podlaskie'
When 11 Then 'pomorskie'
When 12 Then 'śląskie'
When 13 Then 'świętokrzyskie'
When 14 Then 'warmińsko-mazurskie'
When 15 Then 'wielkopolskie'
When 16 Then 'zachodniopomorskie'
Else ''
End

Pierwsza część (od @PAR do PAR@) jest to deklaracja parametru dynamicznego. Jeżeli zostanie wybrany parametr dynamiczny typu „Lista rozwijana” to zapytanie SQL musi zwrócić wynik dwukolumnowy – w pierwszym ma być wartość numeryczna (która zostanie podstawiona do zmiennej), a w drugim tekst (który zostanie wyświetlony na liście). Najwygodniej jest najpierw napisać sobie takie zapytanie np. w WinSQL-u (łatwo wtedy sprawdzić, czy nie ma w nim błędów), a potem przekleić do „wizarda parametru dynamicznego” w kroku 4 (wizard jest dostępny na zakładce [Zaawansowane] w Konstruktorze filtra w menu kontekstowym).
Druga część, to wykorzystanie tego parametru w zapytaniu SQL, które zostanie podstawione do filtra. Pod ??Woj program podstawi liczbę odpowiadającą wybranemu województwu, a konstrukcja CaseWhenThen … pozwoli na „przetłumaczenie” z powrotem liczby na tekst.

Kasa/Bank

Jak wyfiltrować dokumenty, które zostały rozliczone w styczniu 14 dni po terminie płatności?

Klient wystawiał noty odsetkowe tylko klientom, którzy zapłacili 14 dni po upływie terminu płatności. Zastosowanie filtra w Preliminarzu pozwoliło na wyodrębnienie dokumentów, które odpowiadały ww. zapytaniu. Wynik można wysłać do Excela i posortować wg nazwy kontrahenta.
Filtr należy zbudować z poziomu Preliminarza Płatności. W Konstruktorze filtra, na zakładce: [Zaawansowane] należy wpisać w polu Filtr SQL:

BZd_DataRoz BETWEEN CONVERT(DATETIME,'2018-01-01',120) AND CONVERT(DATETIME,'2018-01-31',120) And BZd_DataRoz > DateAdd(day, 14, BZd_Termin)

Jak wyfiltrować zdarzenia w Preliminarzu, które mają wybraną przez operatora formę płatności?

Na liście zdarzeń w Preliminarzu, pod ikonką Konstruktor filtra, na zakładce [Zaawansowane], w polu Filtr SQL wpisujemy:

@PAR ?@R(SELECT FPl_FPlId, FPl_Nazwa FROM CDN.FormyPlatnosci)|fp|&fp: @? PAR@
BZd_FPlId=??fp

Przed odfiltrowaniem pojawi się rozwijana lista z dostępnymi formami płatności.

Jak wyfiltrować z poziomu listy kontrahentów nierozliczone zdarzenia z preliminarza wystawione w zadanym okresie?

Filtr ten sprawdza, czy w Preliminarzu Płatności dla danego kontrahenta są zapisy przychodowe, zatwierdzone, nierozliczone i wystawione w zadanym okresie czasu.
Z poziomu listy kontrahentów w Konstruktorze filtra, na zakładce: [Zaawansowane] w polu Filtr SQL należy wpisać:

exists ( select * From CDN.BnkZdarzenia
where BZd_DataDok>= ?@D10-|Data od:
and BZd_DataDok<= ?@D10-|Data do: and Bzd_PodmiotTyp = 1 and Bzd_PodmiotID=Knt_KntID and BZd_Kierunek =1 and BZd_Stan>0
and BZd_KwotaSys<>BZd_KwotaRozSys)

Jak przefiltrować na preliminarzu płatności tylko te FA i FKOR, które nie mają powiązania z dokumentami magazynowymi?

Trzeba wykonać filtr w Preliminarzu płatności, który uwzględni tabelę TraNag, w której jest przechowywana taka informacja. Przykładowy filtr SQL będzie wyglądał tak:

exists (select * from CDN.TraNag where Trn_TrNID=Bzd_DokumentID And Bzd_DokumentTyp=1 and TrN_Rodzaj=302000 or Trn_Rodzaj=302001 or Trn_Rodzaj=302002 or Trn_Rodzaj=302002)

Jak wyfiltrować zapisy kasowo/bankowe zawierające kategorię szczegółowe należące do zadanej kategorii ogólnej?

Na liście zapisów kasowo/bankowych, w Konstruktorze filtra, na zakładce [Zaawansowane] w polu Filtr SQL należy wpisać:

exists (select Kat_KodOgolny, Kat_KodSzczegol from cdn.kategorie where BZp_KatID=Kat_KatID AND Kat_KodOgolny=?@S100|Kategoria ogólna:'')

Jak wyfiltrować listę kontrahentów, dla których są pary dokumentów do rozliczenia?

Chodzi o to aby użytkownik w menu Kasa/Bank/Rozliczenia, po wywołaniu listy kontrahentów, mógł ją zawęzić do tych, którzy mają nierozliczone dokumenty, które można ze sobą rozliczyć czyli np. Fakturę Sprzedaży i dokument KP lub Fakturę zakupu i dokument KW lub Fakturę Sprzedaży i Fakturę Zakupu lub Dokumenty KP i KW.
Można założyć filtr zaawansowany na liście kontrahentów w menu Ogólne/ Kontrahenci, który będzie korzystał z tabeli CDN.DokumentyKBView.
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL można wpisać:

Exists (Select * From CDN.DokumentyKBView Where DKB_PodmiotTyp = 1 And DKB_PodmiotId = Knt_KntId And DKB_Rozliczono = 1 And DKB_Kierunek = Case DKB_TypDokumentuKB When 1 Then 1 Else -1 End)
And Exists (Select * From CDN.DokumentyKBView Where DKB_PodmiotTyp = 1 And DKB_PodmiotId = Knt_KntId And DKB_Rozliczono = 1 And DKB_Kierunek = Case DKB_TypDokumentuKB When 1 Then -1 Else 1 End)

Podobny filtr można stworzyć na liście pracowników podmieniając:

DKB_PodmiotTyp = 1 And DKB_PodmiotId = Knt_KntId

na

DKB_PodmiotTyp = 3 And DKB_PodmiotId = Pra_PraId

Filtr nie sprawdza waluty dokumentów.

Jak wyfiltrować w Preliminarzu płatności dokumenty, których termin płatności upłynął więcej niż 30 dni temu?

W Preliminarzu płatności, w Konstruktorze filtra, w polu Filtr SQL należy wstawić:

datediff ( d , BZd_Termin , {DateSQL(Today())} ) > 30

Filtr policzy różnicę pomiędzy datą bieżącą i terminem płatności i wyświetli te dokumenty, dla których różnica jest większa niż 30 dni.

Jak wyszukać zduplikowanych kontrahentów i zduplikowane zdarzenia w Preliminarzu?

W słownikach na liście kontrahentów można zastosować filtr, który sprawdzi czy są kontrahenci którym powtarza się numer NIP i dodatkowo pole NIP nie jest puste:

Knt_Nip IN
(SELECT Knt_Nip
FROM CDN.Kontrahenci WHERE Knt_Nip <> ''
GROUP BY Knt_Nip
HAVING COUNT ( Knt_Nip ) > 1 )

W Preliminarzu płatności filtr wyświetli zdarzenia o takim samym numerze obcym. To pozwoli sprawdzić czy w systemie nie wprowadzono dwa razy tego samego dokumentu:

BZd_NumerObcy IN
(SELECT BZd_NumerObcy
FROM cdn.bnkzdarzenia
GROUP BY BZd_NumerObcy
HAVING COUNT ( BZd_NumerObcy ) > 1 )

Jak wyfiltrować w Preliminarzu faktury, które w rejestrze VAT znajdują się w konkretnym podrejestrze?

W Preliminarzu należy uruchomić Konstruktor filtra, a następnie na zakładce [Zaawansowane] w polu Filtr SQL należy wpisać:

(Bzd_DokumentTyp='2' AND Bzd_DokumentID in (select Van_VanID from CDN.VatNag where Bzd_DokumentID=Van_VanID AND VaN_Rejestr=?@S100|Nazwa rejestru:'')) OR (Bzd_DokumentTyp='1' AND Bzd_DokumentID in (select Van_TrnID from CDN.VatNag where Bzd_DokumentID=Van_TrnID AND VaN_Rejestr=?@S100|Nazwa rejestru:''))

Przed odfiltrowaniem listy program będzie pytał o nazwę rejestru dla którego ma wyświetlić faktury.
Inny wariant powyższego filtra, gdzie nazwa rejestru VAT wybierana jest z rozwijalnej listy:

@PAR ?@R(SELECT LP=Gru_GruID, KOD=Gru_Nazwa FROM cdn.Grupy WHERE (Gru_Typ=1 OR Gru_Typ=2))|RejVat|&RejVat:0 |@? PAR@
(Bzd_DokumentTyp='2' AND Bzd_DokumentID in (select Van_VanID from CDN.VatNag where Bzd_DokumentID=Van_VanID AND VaN_Rejestr=??_RES2_RejVat))
OR
(Bzd_DokumentTyp='1' AND Bzd_DokumentID in (select Van_TrnID from CDN.VatNag where Bzd_DokumentID=Van_TrnID AND VaN_Rejestr=??_RES2_RejVat))

Filtry uwzględniają zarówno faktury wprowadzone bezpośrednio do Rejestrów VAT jak i faktury wystawione
w module Faktury i przeniesione do Rejestrów VAT.

Jak wyfiltrować kontrahentów, którzy nie są osobą fizyczną i suma nierozliczonych dokumentów jest większa niż podana przez operatora?

Na liście kontrahentów w menu Ogólne/ Kontrahenci, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select Knt_KntId from CDN.BnkZdarzenia where Knt_KntId=BZd_PodmiotID AND BZd_PodmiotTyp=1
having SUM(BZd_Kierunek * (BZd_KwotaSys-BZd_KwotaRozSys)) >?@N-15.4|Kwota:0)

Wyrażenie:

having SUM(BZd_Kierunek * (BZd_KwotaSys-BZd_KwotaRozSys))

pozwoli wyfiltrować różnicę nierozliczonych przychodów i rozchodów.
Filtr uwzględni wszystkie dokumenty z Preliminarza Płatności dla danego kontrahenta. Dla zawężonej listy będzie można wygenerować np. Potwierdzenie Salda lub Ponaglenie Zapłaty.
Poniżej filtr, który uwzględni również historyczność czyli stan rozliczeń na konkretny dzień podany przez operatora.
Na liście kontrahentów w menu Ogólne/ Kontrahenci, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu: Filtr SQL należy wpisać:

@PAR ?@D17|Dzien|&Na dzień:{Today()} @? PAR@ @PAR ?@N15.2|Kwota|&Kwota powyżej:0 @? @RH(999999) PAR@ @PAR ?@S3|Waluta|&Waluta:PLN @? @U() PAR@ Knt_Finalny = 0 AND EXISTS ( SELECT BZd_PodmiotId FROM (SELECT BZd_PodmiotId, BZd_Kierunek, BZd_Kwota, BZd_KwotaRoz = SUM(IsNull(BRK_Kwota,0)) FROM CDN.BnkZdarzenia LEFT OUTER JOIN (CDN.BnkRozRelacje JOIN CDN.BnkRozKwoty ON BRR_BRKId = BRK_BRKId) ON BZd_BZdId = BRR_ZDokId AND BRR_ZDokTyp = 1 AND (BRK_DataDok <= ??Dzien OR BRK_DataDok Is NULL) WHERE BZd_Stan > 0 AND BZd_PodmiotTyp = 1 AND BZd_PodmiotID = Knt_KntId AND BZd_DataDok <= ??Dzien AND CASE BZd_Waluta WHEN '' THEN 'PLN' ELSE BZd_Waluta END = ??Waluta AND BZd_Rozliczono <> 0 GROUP BY BZd_PodmiotId, BZd_Kierunek, BZd_Kwota, BZd_BZdId ) As TmpTable GROUP BY BZd_PodmiotId HAVING Sum(BZd_Kierunek * (BZd_Kwota-BZd_KwotaRoz)) > ??Kwota )

Jak wyfiltrować na liście zapisów kasowo bankowych te, które mają uzupełnione konto Wn lub konto Ma w kwotach dodatkowych?

Na liście zapisów kasowo/bankowych pod ikoną konstruktora filtra, na zakładce [Zaawansowane], w polu Filtr SQL wpisujemy:

exists (select * from CDN.KwotyDodatkowe where Kdd_DokumentID=Bzp_BzpID AND KDD_DokumentTyp=14 AND (Kdd_Segment1<>'' OR Kdd_Segment2<>''))

Aby wyfiltrować te które mają wpisane określone konto po stronie Wn , możemy użyć:

exists (select * from CDN.KwotyDodatkowe where Kdd_DokumentID=Bzp_BzpID AND KDD_DokumentTyp=14 AND Kdd_Segment1=?@S100|KontoWN:'')
Analogicznie konto Ma:

exists (select * from CDN.KwotyDodatkowe where Kdd_DokumentID=Bzp_BzpID AND KDD_DokumentTyp=14 AND Kdd_Segment2=?@S100|KontoMA :'')

lub wyszukując określoną kwotę w kwotach dodatkowych:

exists (select * from CDN.KwotyDodatkowe where Kdd_DokumentID=Bzp_BzpID AND KDD_DokumentTyp=14 AND Kdd_Kwota=?@S100|Kwota:'')

Filtr dla zapisów Kasowych/Bankowych, wyświetlający zapisy kontrahentów, którzy są przydzieleni do danego pracownika (ustawienie w Karcie Kontrahenta)

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_PRCW.DLL|CALLLOOKUPPRILISTA())|Pracownik|&Pracownik:0|@? PAR@
BZp_PodmiotTyp=1 and exists (select * from cdn.kontrahenci where BZp_PodmiotID=Knt_KntId and Knt_OpiekunId=??Pracownik and Knt_OpiekunTyp=3)

Filtr wyświetlający zdarzenia w preliminarzu dla dwóch (lub więcej) kontrahentów:

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKNTLISTA())|kod1|&kontrahent1:REG= @? PAR@ BZd_PodmiotID = ??kod1
OR
@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKNTLISTA())|kod2|&kontrahent2:REG= @? PAR@ BZd_PodmiotID = ??kod2

Filtr ograniczający listę wyświetlanych w Preliminarzu płatności dokumentów do płatności pochodzących z Faktur Zakupu z modułu Handel i zapisów z Rejestru zakupu VAT:

Filtr może być stosowany wtedy, gdy np. Faktury Zakupu z których towary mają wejść na magazyn wprowadzamy w module Handel, a Faktury Zakupu kosztowe – od razu w Rejestrach VAT. Po zastosowaniu takiego filtra w Preliminarzu możemy widzieć jednocześnie oba te rodzaje dokumentów (i tylko te dokumenty).
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.TraNag where Trn_TrNID=Bzd_DokumentID And Bzd_DokumentTyp=1 and TrN_TypDokumentu=301) or exists (select * from CDN.VatNag where VaN_VaNID=Bzd_DokumentID And Bzd_DokumentTyp=2 and VaN_Typ=1)

Filtr ograniczający listę wyświetlanych w Preliminarzu płatności dokumentów do płatności pochodzących z Faktur Sprzedaży z modułu Handel i z Rejestru sprzedaży VAT.

Filtr może być stosowany wtedy, gdy np. Faktury Sprzedaży, z których towary mają wyjść z magazynu wprowadzamy w module Handel, a pozostałe faktury – od razu w Rejestrach sprzedaży VAT.
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.TraNag where Trn_TrNID=Bzd_DokumentID And Bzd_DokumentTyp=1 and TrN_TypDokumentu=302) or exists (select * from CDN.VatNag where VaN_VaNID=Bzd_DokumentID And Bzd_DokumentTyp=2 and VaN_Typ=2)

W jaki sposób w Preliminarzu odnaleźć płatności mające wybrany rachunek bankowy po nazwie tego rachunku, określanego na karcie kontrahenta?

W Preliminarzu płatności w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@S30|Rachunek|&Rachunek:''@? PAR@
exists (select * from CDN.SchematPlatnosci where BZd_RachunekNr=SPL_RachunekNr and SPL_PodmiotID=BZd_PodmiotID and SPL_PodmiotTyp=1 and SPL_Opis=??Rachunek)

Jak na liście dokumentów rozliczonych odnaleźć te pochodzące z konkretnego rejestru VAT?

Na liście dokumentów rozliczonych w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@S30|Rejestr|&Rejestr:''@? PAR@
(BRK_LDokTyp=1 and exists (select * from CDN.BnkZdarzenia where BRK_LDokID=BZd_BZdID and BZd_DokumentTyp=2 and exists ( select * from CDN.VatNag where BZd_DokumentID=VaN_VaNID and VaN_Rejestr = ??Rejestr))) OR (BRK_PDokTyp=1 and exists (select * from CDN.BnkZdarzenia where BRK_PDokID=BZd_BZdID and BZd_DokumentTyp=2 and exists ( select * from CDN.VatNag where BZd_DokumentID=VaN_VaNID and VaN_Rejestr = ??Rejestr)))

W jaki sposób w Preliminarzu odnaleźć płatności z faktur sprzedażowych mających konkretny atrybut i wartość atrybutu?

W Preliminarzu płatności w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@LS20(SELECT [DeA_DeAId], [DeA_Kod], [DeA_Nazwa] FROM [CDN].[DefAtrybuty] WHERE [DeA_Typ]= 4|GENERICLOOKUP(Atrybuty dokumentów, 0, 1))|Atrybut|&Atrybut: @? @MSG(Wybór z listy) @TIP(Wybór z listy) PAR@
@PAR ?@S100|Wartosc|&Wartość: @? @MSG(Wartość atrybutu) @TIP(Wartość atrybutu) PAR@
EXISTS (SELECT * FROM CDN.TraNag JOIN CDN.DokAtrybuty ON DAt_TrNId = TrN_TrNId WHERE TrN_TrNID = BZd_DokumentID AND BZd_DokumentTyp=1 AND TrN_TypDokumentu=302 AND DAt_DeAId=??Atrybut AND DAt_WartoscTxt=??Wartosc)

W jaki sposób odnaleźć dokumenty nierozliczone kontrahentów ze statusem 'Partner’?

Na liście dokumentów nierozliczonych w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

(DKB_TypDokumentuKB=1 And EXISTS (Select * From CDN.BnkZdarzenia JOIN CDN.Kontrahenci ON BZd_PodmiotID=Knt_KntId AND BZd_PodmiotTyp=1 where DKB_DKBId=BZd_BZdID And Knt_Rodzaj_Partner=1)) OR (DKB_TypDokumentuKB=2 And EXISTS (Select * From CDN.BnkZapisy JOIN CDN.Kontrahenci ON BZp_PodmiotID=Knt_KntId AND BZp_PodmiotTyp=1 where DKB_DKBId=BZp_BZpID And Knt_Rodzaj_Partner=1))

W jaki sposób odnaleźć różnice kursowe wygenerowane przez zapisy kasowe/bankowe wprowadzone do konkretnego rejestru?

Na liście różnic kursowych w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@S30|Rejestr|&Rejestr:''@? PAR@
(BRK_LDokTyp=2 and exists (select * from CDN.BnkZapisy where BRK_LDokID=BZp_BZpID and exists ( select * from CDN.BnkRachunki where BRa_BRaID=BZp_BRaID and BRa_Symbol = ??Rejestr)))
OR
(BRK_PDokTyp=2 and exists (select * from CDN.BnkZapisy where BRK_PDokID=BZp_BZpID and exists ( select * from CDN.BnkRachunki where BRa_BRaID=BZp_BRaID and BRa_Symbol = ??Rejestr)))

W jaki sposób odnaleźć kontrahentów mających wystawione w module Kasa/Bank potwierdzenia sald w 2018 roku?

Na liście kontrahentów w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

Exists (Select * From CDN.BnkDokNag Where BDN_PodmiotID=Knt_KntID And BDN_PodmiotTyp=1 And BDN_Typ=223 And BDN_NumerPelny Like '%2018%')

W jaki sposób odnaleźć dokument kompensaty na którym wskazano dokument o określonym numerze?

Z poziomu Kasa/Bank/ Dokumenty kompensat w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@S50|Numer_dok|Numer szukanego dokumentu:''@? PAR@
EXISTS (select * from cdn.KompensatyElem left join cdn.BnkRozKwoty on KPE_BRKID = BRK_BRKID where (BRK_LNumer like ??_QNumer_dok + '%' or BRK_PNumer like ??_QNumer_dok + '%') and KPN_KPNID = KPE_KPNID)

Handel i Faktury

Jak wyfiltrować dokumenty FA, które wystawione są na klienta detalicznego ale nie ‘od netto’?

Trzeba wykonać zapytanie na liście Faktur Sprzedaży w module Faktury, uwzględniając tabelę Kontrahenci, gdzie Knt_Finalny = 1. W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Exists(select * from CDN.Kontrahenci where Trn_PodID=Knt_KntID AND TrN_PodmiotTyp=1 AND TrN_TypNB=2 AND Knt_Finalny=1)

Jak z listy faktur sprzedaży odfiltrować te faktury, które są nierozliczone lub rozliczone częściowo?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Exists (select * from CDN.BnkZdarzenia where TrN_TrNID=BZd_DokumentID AND Bzd_DokumentTyp='1' AND (Bzd_Kwota-Bzd_KwotaRoz<>0))

Filtr można zastosować również na liście faktur zakupu.

Jak wyfiltrować dokumenty handlowo-magazynowe, które wystawił określony operator?

Filtr powinien wyglądać w ten sposób:
Filtr SQL

@PAR ?@R(SELECT ID = Ope_OpeId, Kod = Ope_Kod From {OPBK()}.CDN.Operatorzy Order By Ope_Kod)|Operator|&Operator:1 @? PAR@
TrN_OpeZalID = ??Operator

Umożliwi to wybór z listy operatorów wybranego operatora i przefiltrowanie dokumentów po określonym operatorze. Filtr pokazuje dokumenty WYSTAWIONE przez danego operatora. Aby filtr reagował na dokumenty ZMODYFIKOWANE przez operatora należy zmienić TrN_OpeZalID na TrN_OpeModID

Jak filtrować kontrahentów i listę faktur wg atrybutów podpiętych na karcie kontrahenta?

Filtr SQL dla wyfiltrowania kontrahentów z zadanym kodem atrybutu z listy kontrahentów. Filtr przed odfiltrowaniem listy będzie wyświetlał listę atrybutów dla kontrahentów. W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = DeA_DeAId, Kod = DeA_Kod FROM CDN.DefAtrybuty WHERE DeA_Typ=2 ORDER BY DeA_Kod)|KodAtr|&Kod atrybutu:ATR1 @? PAR@ exists(select * from CDN.KntAtrybuty where KnA_PodmiotId=Knt_KntId AND KnA_PodmiotTyp=1 AND KnA_DeAId = ??KodAtr )

Filtr SQL dla wyfiltrowania kontrahentów z atrybutem, którego wartość zawiera określony ciąg znaków, na liście kontrahentów:

Exists (Select * From CDN.KntAtrybuty Where Knt_KntId=KnA_PodmiotId AND KnA_PodmiotTyp=1 AND KnA_WartoscTxt LIKE '%' + ?@S100|Wartość:'' + '%')

Filtr SQL dla listy faktur, filtruje kontrahentów wg zadanego kodu atrybutu:

@PAR ?@R(SELECT ID = DeA_DeAId, Kod = DeA_Kod FROM CDN.DefAtrybuty WHERE DeA_Typ=2 ORDER BY DeA_Kod)|KodAtr|&Kod atrybutu:ATR1 @? PAR@ exists(select * from CDN.KntAtrybuty Where KnA_PodmiotId=TrN_PodId AND KnA_PodmiotTyp=TrN_PodmiotTyp AND KnA_DeAId =??KodAtr)

Filtr dla listy faktur, który filtruje faktury, których kontrahent, na atrybucie zawiera jakąś wartość:

Exists (Select * From CDN.KntAtrybuty Where KnA_PodmiotId=TrN_PodId AND KnA_PodmiotTyp=TrN_PodmiotTyp AND KnA_WartoscTxt LIKE '%' + ?@S100|Wartość:'' + '%')

Jak wyfiltrować faktury, które zostały wystawione na kontrahentów, którzy mają przyporządkowanego opiekuna w formie operatora systemu Comarch ERP Optima?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = Ope_OpeID , Kod = Ope_Kod from {opbk()}.CDN.Operatorzy)|Operator|&Operator: @? PAR@
Exists (Select * From CDN.Kontrahenci Where Knt_OpiekunID = ??Operator and TrN_PodId = Knt_KntId And TrN_PodmiotTyp = 1)

Jak wyfiltrować listę Faktur Sprzedaży po opiekunie, który jest zapisany na karcie kontrahenta i jest to pracownik firmy?

Na liście faktur, w konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = Pra_PraID, Kod = Pra_Kod From CDN.PracKod)|Pracownik|&Pracownik: @? PAR@
Exists (Select * From CDN.Kontrahenci Where Knt_OpiekunID = ??Pracownik and TrN_PodID = Knt_KntID and TrN_PodmiotTyp = 1)

Jak wyfiltrować listę faktur jeśli na fakturze mam wpisaną daną kategorię nagłówka szczegółową?

Na liście faktur w module FA, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT Kat_KatID, Kat_KodSzczegol From CDN.Kategorie Where Kat_Poziom
= 2)|Kategoria|&Kategoria:AAA @? PAR@
TrN_KatID = ??Kategoria

Jak wyfiltrować faktury na liście faktur które są rozliczone po terminie?

Należy założyć filtr zaawansowany na liście faktur, który korzystał będzie z tabeli CDN.BnkZdarzenia.
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.BnkZdarzenia where TrN_TrNID=BZd_DokumentID and
Bzd_DokumentTyp='1' and BZD_dataroz > Bzd_datareal)

Jak wyfiltrować dokumenty RO z listy RO, które są przekształcone do WZ a dodatkowo WZ ma wystawioną Fakturę Sprzedaży?

Na liście RO, po ikoną konstruktora filtra, na zakładce [Zaawansowane], w polu Filtr SQL wpisujemy:

EXISTS(Select * from cdn.tranagrelacje rel1 Where rel1.trr_trnid = trn_trnid and rel1.trr_fatyp = 306 and EXISTS(select * from cdn.tranagrelacje rel2 where rel2.trr_trnid = rel1.trr_faid and rel2.trr_fatyp =302))

Jak wyfiltrować dokumenty PA z listy PA, które są przekształcone do FA a FA skojarzone z tymi PA nie ma dokumentów WZ?

Na liście PA, pod ikoną konstruktora filtra, na zakładce [Zaawansowane], w polu Filtr SQL wpisujemy:

EXISTS (SELECT * FROM CDN.TraNag FA WHERE A.TrN_FaID = FA.TrN_TrNID AND
FA.TrN_FaID IS NOT NULL AND FA.TrN_Rodzaj = 302006 )

Jak wyfiltrować wybrany typ dokumentu z listy FA używając funkcji serwerowej?

Zastosowanie złożonego filtra na liście faktur (np. wyszukujących faktury finalne przekształcone z Faktury Pro Forma i powiązane z dokumentem WZ) nie działa przy księgowaniu dokumentów. Pojawia się komunikat „The multi-part identifier „A.trn_trnid” could not be bound.”

W związku z tym filtr z aliasem o postaci:

exists (select * from cdn.tranag A1 left join cdn.tranag A2 on A1.trn_trnid = A2.trn_faid left join cdn.tranag A3 on A1.trn_faid = A3.trn_trnid where A2.trn_rodzaj = 302200 and A.trn_trnid = A3.trn_trnid)

należy zastąpić filtrem: (select CDN.fn_PrzykladowaNazwa(Trn_trnID))=1,
gdzie funkcja serwerowa ma postać:

Create Function CDN.fn_PrzykladowaNazwa(@ATrnID int)
RETURNS int
AS
BEGIN
Declare @Result int
Set @Result = 0
select @Result = count(*) from cdn.tranag A1
join cdn.tranag A2 on A1.trn_trnid = A2.trn_faid
join cdn.tranag A3 on A1.trn_faid = A3.trn_trnid
where A2.trn_rodzaj = 302200 and A3.trn_trnid = @ATrnID
RETURN @Result
END
GO

Jak wyfiltrować kontrahentów, którzy np. w m-cu styczniu zapłacili po terminie ? Lista może być potrzebna do np. do sporządzenia masowych not odsetkowych dla kontrahentów.

Filtr z poziomu słowników kontrahentów. W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (
select * from CDN.BnkZdarzenia where BZd_PodmiotID=Knt_KntID and BZd_PodmiotTyp=1 and BZd_Rozliczono=1 and BZd_DataRoz BETWEEN ?@D17|Data od:75609 AND ?@D17|Data do:75609)
or exists (
select * from CDN.BnkZdarzenia where BZd_PodmiotID=Knt_KntID and BZd_PodmiotTyp=1 and BZd_Rozliczono=2 and BZd_DataRoz BETWEEN ?@D17|Data od:75609 AND ?@D17|Data do:75609)

Jak wyfiltrować listę kontrahentów aby uzyskać tylko tych kontrahentów z którymi prowadziliśmy transakcje ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

EXISTS (
SELECT [TrN_TrNID] FROM [CDN].[TraNag] WHERE [TrN_PodmiotTyp] = A.[Knt_PodmiotTyp] AND [TrN_PodID] = A.[Knt_KntId] AND [TrN_TypDokumentu] IN (302)
)

Typ dokumentu może przyjąć następujące wartości:
301 – [FZ] Faktura zakupu
302 – [FA] Faktura sprzedaży
303 – [PW] Przyjęcie wewnętrzne
304 – [RW] Rozchód wewnętrzny
305 – [PA] Paragon
306 – [WZ] Wydanie zewnętrzne
307 – [PZ] Przyjęcie zewnętrzne
308 – [RO] Rezerwacja odbiorcy
309 – [ZD] Zamówienie dostawcy
310 – [BOM] Bilans otwarcia magazynu
311 – [AI] Arkusz Inwentaryzacyjny
312 – [MM] Przesunięcie międzymagazynowe
313 – [PKA] Przyjęcie kaucji
314 – [WKA] Wydanie kaucji
317 – [PWP] Przyjęcie wewnętrzne produkcji
318 – [RWS] Rozchód wewnętrzny składników
320 – [FPF] Faktura ProForma
345 – [TF] Dokument TaxFree
350 – [FRR] Faktura RR

Jak wyfiltrować listę kontrahentów z którymi (nie było/lub było) transakcji po np. 01.01.2018r.?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:
a) Kontrahenci z którymi nie było transakcji

not exists (select * from CDN.TraNag Z where A.Knt_KntId = Z.TrN_PodId and TrN_PodmiotTyp = 1 and TrN_DataOpe >='2018-01-01')

b) Kontrahenci z którymi były transakcje

exists (select * from CDN.TraNag Z where A.Knt_KntId = Z.TrN_PodId and TrN_PodmiotTyp = 1 and TrN_DataOpe >='2018-01-01')

Jak wyfiltrować listę kontrahentów, z którymi (nie było/lub było) transakcji tylko FA, FZ po np. 01.01.2018r.?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:
a) Kontrahenci z którymi nie było transakcji

not exists (select * from CDN.TraElem where TrE_PodID=A.Knt_KntID and TrE_PodmiotTyp=A.Knt_PodmiotTyp and TrE_DataOpe >= '2018-01-01' and TrE_TypDokumentu IN (302,301))
b) Kontrahenci, z którymi były transakcje

exists (select * from CDN.TraElem where TrE_PodID=A.Knt_KntID and TrE_PodmiotTyp=A.Knt_PodmiotTyp and TrE_DataOpe >= '2018-01-01' and TrE_TypDokumentu IN (302,301))

Typ dokumentu:
301 – [FZ] Faktura zakupu
302 – [FA] Faktura sprzedaży

Jak wyfiltrować na liście zasobów lub cenniku towary uwzględnione z grupy głównej i grup dodatkowych ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPTWGLISTA())|TwrGrupa|&Grupa towarowa:@? PAR@
Twr_GIDNumer IN (SELECT GIDNumer FROM CDN.TwrInTwG(??TwrGrupa))

Jak wyfiltrować na liście zasobów lub cenniku towary uwzględnione tylko z grupy głównej ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPTWGLISTA())|TwrGrupa|&Grupa towarowa:@? PAR@
Twr_TwGGIDNumer = ??TwrGrupa

Jak wyfiltrować na liście zasobów lub cenniku towary, które na karcie mają określonego Dostawcę ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKNTLISTA())|Dostawca|&Dostawca:REG=!NIEOKREŚLONY! @? PAR@ Twr_KntId = ??Dostawca

Jak wyfiltrować na liście zasobów lub cennika towary względem kodu, wartości lub nazwy atrybutu przypisanego na karcie tego towaru ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:
a) potrzeba odfiltrować towary posiadające atrybut o kodzie (bez podawania wartości tego atrybutu)

@PAR ?@LS20(SELECT [DeA_DeAId], [DeA_Kod], [DeA_Nazwa] FROM [CDN].[DefAtrybuty] WHERE [DeA_Typ]= 1|GENERICLOOKUP(Atrybuty towarów, 0, 1))|Atrybut|&Atrybut: @? @MSG(Wybór z listy) @TIP(Wybór z listy) PAR@
EXISTS(SELECT [TwA_TwAId] FROM [CDN].[TwrAtrybuty] WHERE [Twr_TwrId] = [TwA_TwrId] AND [TwA_DeAId]= ??Atrybut)

b) potrzeba odfiltrować towary posiadające atrybut z określoną wartością

@PAR ?@LS20(SELECT [DeA_DeAId], [DeA_Kod], [DeA_Nazwa] FROM [CDN].[DefAtrybuty] WHERE [DeA_Typ]= 1|GENERICLOOKUP(Atrybuty towarów, 0, 1))|Atrybut|&Atrybut: @? @MSG(Wybór z listy) @TIP(Wybór z listy) PAR@
@PAR ?@S100|Wartosc|&Wartość: @? @MSG(Wartość atrybutu) @TIP(Wartość atrybutu) PAR@
EXISTS(SELECT [TwA_TwAId] FROM [CDN].[TwrAtrybuty] WHERE [Twr_TwrId] = [TwA_TwrId] AND [TwA_DeAId]= ??Atrybut AND [TwA_WartoscTxt] = ??Wartosc)

c) potrzeba odfiltrować towary po nazwie atrybutu towaru

EXISTS (SELECT * FROM CDN.TwRAtrybuty JOIN CDN.DefAtrybuty on TwA_DeAId = DeA_DeaID WHERE Twr_TwrId = TwA_TwrId AND DeA_Nazwa=?@S100|Nazwa atrybutu:'')

Jak wyfiltrować na liście zasobów lub cenniku zasoby po wartościach atrybutów towarów typu lista ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT DAE_DAEId, DAE_Wartosc from CDN.DefAtrElem)|wart_atr|&wart_atr:REG= @? PAR@ exists (select * from CDN.DefAtrElem, CDN.TwrAtrybuty where Twr_TwrId = TwA_TwrId and TwA_WartoscTxt in (select DAE_Wartosc from CDN.DefAtrElem where DAE_DAEId=??wart_atr))

Jak na liście zasobów lub cenniku wyfiltrować towary które mają jakikolwiek atrybut?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.TwrAtrybuty where TwA_TwrId = Twr_TwrId)

Jak na liście zasobów lub cenniku wyfiltrować towary które nie maja żadnego atrybutu?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

not exists (select * from CDN.TwrAtrybuty where TwA_TwrId = Twr_TwrId)

Jak na liście zasobów lub cenniku wyfiltrować towary, które w danym dniu były sprzedawane na dokumentach FA lub PA?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|data|&data:REG={Today()} @? PAR@
exists (select * from CDN.TraElem T where A.Twr_TwrId=T.TrE_TwrId and T.TrE_DataDok=??data and (T.TrE_TypDokumentu=302 or T.TrE_TypDokumentu=305))

Wariant filtra w którym podajemy zakres dat:

@PAR ?@D17|data_od|&data od:REG={Today()} @? PAR@
@PAR ?@D17|data_do|&data do:REG={Today()} @? PAR@
exists (select * from CDN.TraElem T where A.Twr_TwrId=T.TrE_TwrId and T.TrE_DataDok>=??data_od and T.TrE_DataDok<=??data_do and (T.TrE_TypDokumentu=302 or T.TrE_TypDokumentu=305))

Jak na liście zasobów lub cenniku wyfiltrować towary z którymi nie było transakcji po zadanej dacie?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|data|&Data:REG={Today()} @? PAR@
not exists (select * from CDN.TraElem Z where A.Twr_TwrId = Z.TrE_TwrId and TrE_DataOpe >= ??data)

Jak na liście zasobów lub cenniku wyfiltrować towary, których cena zakupu (ID=1) jest równa zero ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.TwrCeny C where A.Twr_TwrID=C.TwC_TwrID and C.TwC_TwCNumer=1 and C.TwC_Wartosc=0)

Jak na liście zasobów lub cenniku wyfiltrować poprzez wybór z listy ceny te towary, które mają tą cenę większą od zera?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = DfC_Lp, KOD = DfC_Nazwa from CDN.DefCeny)|cena|&cena:REG= @? PAR@
exists(select * from CDN.TwrCeny where TwC_TwCNumer=??cena and TwC_Wartosc>0 and TwC_TwrID=TwR_TwrID)

Jak na liście zasobów wyfiltrować towary po ilości, a nie ilości dostępnej przy zaznaczonym parametrze „zerowe”?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Twi_Ilosc>0

Jak wyfiltrować listę zasobów z którymi (nie było lub było) transakcji po np. 01.01.2018?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:
a) Towary z którymi nie było transakcji:

not exists (select * from CDN.TraElem Z where A.Twr_TwrId = Z.Tre_TwrId and Tre_DataOpe >= '2018-01-01')

b) Towary z którymi były transakcje:

exists (select * from CDN.TraElem Z where A.Twr_TwrId = Z.Tre_TwrId and Tre_DataOpe >= '2018-01-01')

Jak wyfiltrować WZ-ki po operatorze, który stworzył dokument źródłowy (FA lub PA)?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = Ope_OpeId, Kod = Ope_Kod From {OPBK()}.CDN.Operatorzy Order By Ope_Kod)|OperatorId|&Operator:1 @? PAR@ EXISTS (SELECT * FROM CDN.TraNag Z WHERE A.TrN_FaId
= Z.TrN_TrNID AND Z.TrN_OpeZalId= ??OperatorId)

Jak wyfiltrować na liście dokumenty handlowo-magazynowe po danej kategorii dokumentu?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:REG=-brak- @? PAR@
TrN_KatID = ??Kategoria

Jak wyfiltrować dokumenty WZ utworzone z FPF, do której były wygenerowane zaliczki, ale tylko dla FPF, które nie zostały jeszcze przekształcone do faktur finalnych?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

A.TrN_Rodzaj=306010 and exists (select * from CDN.Tranag Z where Z.TrN_TypDokumentu=320 and A.TrN_FaID=Z.TrN_TrNID and exists (select * from CDN.Tranag t2 where t2.Trn_Rodzaj=302200 and t2.TrN_FaID=Z.TrN_TrNID))

Jak wyfiltrować dokumenty WZ, które są skojarzone z innymi dokumentami ale ich daty wystawienia się różnią?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Exists (select * from CDN.TraNag Z where A.TrN_FaId = Z.TrN_TrNID and Z.TrN_DataWys != A.TrN_DataWys and A.Trn_Rodzaj=306004)

Jak wyfiltrować listę dokumentów handlowo-magazynowych aby nie wyświetlały się dokumenty, których wartość wynosi zero np. na korektach oraz te które są zaksięgowane do KH? Wtedy dokumenty, które nie są zaksięgowane, a ich wartość zakupu jest równa zero nie będą widoczne.

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

IsNull(TrN_DekId,0)=0 AND TrN_WartoscZakupu<>0

Jak wyfiltrować dokumenty PZ, które zostały skorygowane w całości?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select Z.TrN_ZwrID from CDN.TraNag Z where Z.TrN_ZwrId = A.TrN_TrNID and Z.TrN_Bufor=0 and (Z.TrN_Rodzaj=307001 or Z.TrN_Rodzaj=307002 or Z.TrN_Rodzaj=307003 or Z.TrN_Rodzaj=307004) group by Z.TrN_ZwrID having SUM(Z.Trn_RazemBrutto)*(-1)= A.Trn_RazemBrutto)

Jak wyfiltrować listę tych FA, których elementy mają wskazany przez nas atrybut towaru?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@S50|atrybut|&Kod atrybutu:REG=’’ @? PAR@ exists(select * from CDN.TraElem,
CDN.Twratrybuty join CDN.DefAtrybuty on TwA_DeAId = DeA_DeaID where Trn_TrnId = Tre_TrnId
and Tre_TwrId = TwA_TwrId and Dea_Kod=??atrybut)

Gdy szukamy atrybut towaru o zadanej wartości:

@PAR ?@S50|atrybut|&Wartość atrybutu:REG= @? PAR@ exists(select * from CDN.TraElem, CDN.Twratrybuty join CDN.DefAtrybuty on TwA_DeAId = DeA_DeaID where Trn_TrnId = Tre_TrnId and Tre_TwrId = TwA_TwrId and Twa_wartosctxt=??atrybut)

Można filtrować też mniej rygorystycznie z zastosowaniem wyrażenia: (LIKE ‘%’+…+’%’)

Jak wyfiltrować na liście Faktur sprzedaży listę faktur zaliczkowych bez faktur finalnych?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

A.Trn_Rodzaj = 302200 and exists (select * from CDN.TraNag Z where A.Trn_Faid = Z.Trn_TrnId and Z.Trn_TypDokumentu = 320 and Z.Trn_Faid is Null)

Niestety filtr ten nie będzie działał na standardowym wydruku listy faktur. Proszę w przypadku wydruku tak wyfiltrowanej listy korzystać z wydruku GenRap.

Jak wyfiltrować na liście faktur sprzedaży faktury zaliczkowe do których jest wystawiona faktura finalna?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

EXISTS (SELECT * FROM CDN.TraNag Z WHERE A.TrN_FaId = Z.TrN_TrNID AND Z.TrN_FaId is not null AND A.TrN_Rodzaj = 302200)

Jak wyfiltrować faktury sprzedaży, które są skojarzone z innymi dokumentami, ale ich daty wystawienia się różnią?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Exists (select * from CDN.TraNag Z where Z.TrN_FaId = A.TrN_TrNID and Z.TrN_DataWys != A.TrN_DataWys and A.Trn_Rodzaj=302004)

Jak wyfiltrować dokumenty handlowe których termin płatności mija w zadanym okresie.

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

TrN_Termin BETWEEN ?@D17|&Od:REG={Today()} @? AND ?@D17|&Do:REG={Today()} @?

Jak wyfiltrować listę dokumentów handlowo-magazynowych po wybranym towarze?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_TWR.DLL|CALLLOOKUPTWRLISTA())|Towar|&Towar:REG= @? PAR@
exists (select * from CDN.TraElem where Trn_TrnId = Tre_TrnId and Tre_TwrId = ??Towar)

Jak wyfiltrować faktury sprzedaży po fragmencie nazwy umieszczonej na zakładce -kontrahent odbiorca faktury? (Np. głównym nabywcą jest Makro W-dwa a odbiorcą faktury Makro Olsztyn).

W konstruktorze filtra wybieramy pole „TRN_OdbNazwa1 (Pierwsza linia nazwy odbiorcy)”, następnie po wywołaniu okna Edycja wyrażenia filtra należy z rozwijalnej listy w miejscu operator wybrać zawiera, a następnie zaznaczyć parametr Pytaj o wartość i podać tytuł zapytania np. Podaj nazwę odbiorcy i zatwierdzić wpis. Logiczna reprezentacja utworzonego w ten sposób wyrażenia filtrującego jest wyświetlana w dolnej części okna może wyglądać np.

TrN_OdbNazwa1 LIKE '%' + ?@S100|Podaj nazwę:'' + '%'.

W oknie Konstruktor filtra podać nazwę filtra.

Jak wyfiltrować dokumenty PA, które zostały skorygowane w całości?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select t.TrN_ZwrID from CDN.TraNag t where t.TrN_ZwrId = A.TrN_TrNID and t.TrN_Bufor=0 and (t.TrN_Rodzaj=305001 or t.TrN_Rodzaj=305005) group by t.TrN_ZwrID having SUM(t.Trn_RazemBrutto)*(-1)= A.Trn_RazemBrutto)

Jak wyfiltrować dokumenty RO, które mają oraz nie mają powiązania z dokumentami PWP?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:
a) mają powiązanie z dokumentami PWP:

EXISTS(SELECT TrN_TrNId FROM CDN.TraNag WHERE TrN_RelTrNId = A.TrN_TrNId AND TrN_TypDokumentu = 317)
b) nie mają powiązania z dokumentami PWP:

NOT EXISTS (SELECT TrN_TrNId FROM CDN.TraNag WHERE TrN_RelTrNId = A.TrN_TrNId AND TrN_TypDokumentu = 317)

Jak wyfiltrować na liście RO dokumenty, wg numeru obcego zamówienia?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

TrN_NumerObcy=?@S100|Nr zamówienia:''

Jak wyfiltrować dokumenty wg kontrahentów dla pola Nabywca?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT KnT_KntID, Knt_kod from CDN.kontrahenci)|kontrah|&kontrah:REG= @? PAR@
Trn_PodID=??kontrah

Jak wyfiltrować dokumenty wg kontrahentów dla pola Odbiorca?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKNTLISTA())|kod|&kod:REG=!NIEOKREŚLONY! @? PAR@
TrN_OdbiorcaTyp = 1 AND TrN_OdbId = ??kod

Jak wyfiltrować listę dokumentów zawierających dany atrybut dokumentu?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_TWR.DLL|CALLLOOKUPATRLISTADOK())|atr|&atr:REG= @? PAR@ exists (select * from CDN.DokAtrybuty where DAt_TrNId = TrN_TrNId and DAt_DeAId = ??atr)

Jak wyfiltrować listę dokumentów posiadających dany atrybut dokumentu, którego wartość zawiera podany przez użytkownika tekst?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_TWR.DLL|CALLLOOKUPATRLISTADOK())|atr|&atr:REG= @? PAR@
@PAR ?@S50|tekst_atrybutu|&tekst_atrybutu:REG= @? PAR@ exists (select * from CDN.DokAtrybuty where DAt_TrNId = TrN_TrNId and DAt_DeAId = ??atr and DAt_WartoscTxt Like '%'+??tekst_atrybutu+'%')

Jak wyfiltrować transakcje, gdzie na pozycjach użyto atrybutu (bez podawania wartości tego atrybutu)?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(SELECT [DeA_DeAId], [DeA_Kod], [DeA_Nazwa] FROM [CDN].[DefAtrybuty] WHERE [DeA_Typ]= 1|GENERICLOOKUP(Atrybuty towarów, 0, 1))|Atrybut|&Atrybut: @? @MSG(Wybór z listy) @TIP(Wybór z listy) PAR@
EXISTS(
SELECT [TrE_TrNId]
FROM [CDN].[TraElem] JOIN [CDN].[TraElemAtr] ON [TrE_TrEID] = [TrA_TrEId] AND
[TrE_TrNId] = [A].[TrN_TrNID]
WHERE [TrA_DeAId]=??Atrybut)

Jak wyfiltrować transakcje, gdzie na pozycjach użyto atrybutu z określoną wartością?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(SELECT [DeA_DeAId], [DeA_Kod], [DeA_Nazwa] FROM [CDN].[DefAtrybuty] WHERE [DeA_Typ]= 1|GENERICLOOKUP(Atrybuty towarów, 0, 1))|Atrybut|&Atrybut: @? @MSG(Wybór z listy) @TIP(Wybór z listy) PAR@
@PAR ?@S100|Wartosc|&Wartość: @? @MSG(Wartość atrybutu) @TIP(Wartość atrybutu) PAR@
EXISTS(
SELECT [TrE_TrNId]
FROM [CDN].[TraElem] JOIN [CDN].[TraElemAtr] ON [TrE_TrEID] = [TrA_TrEId] AND
[TrE_TrNId] = [A].[TrN_TrNID]
WHERE [TrA_DeAId]=??Atrybut
AND [TrA_Wartosc]=??Wartosc)

Jak wyfiltrować dokumenty do których nie były wykonane korekty?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

not exists (select t.TrN_ZwrID from CDN.TraNag t where t.TrN_ZwrId = A.TrN_TrNID)

Jak wyfiltrować dokumenty wystawione w dniu dzisiejszym ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

TrN_DataDok = {DateSQL(Today())}

Jak wyfiltrować dokumenty po wybranej formie płatności?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = FPl_FPlId, Kod = FPl_Nazwa From CDN.FormyPlatnosci)|formy_platnosci|&formy_platnosci:REG= @? PAR@
TrN_FPlId = ??formy_platnosci

Jeżeli chodzi nie tyle o konkretną formę płatności co o typ formy płatności to należałoby odwołać się do tabeli CDN.FormyPlatnosci. Wyrażenie:

EXISTS(SELECT * FROM CDN.FormyPlatnosci WHERE FPl_FPlId = TrN_FPlId AND FPl_Typ=1)
wpisane w polu Filtr SQL wyfiltruje dokumenty, które mają formę płatności o typie "gotówka".
FPl_Typ=2 - typ formy płatności "przelew".
FPl_Typ=3 - karta kredytowa

Jak wyfiltrować listę dokumentów po kategorii dokumentu ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:REG=-brak- @? PAR@ TrN_KatID = ??Kategoria

Jak wyfiltrować listę dokumentów po kategorii elementu?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKATLISTA())|Kategoria|&Kategoria:REG= @?TIP(Wybierz kategorię) PAR@ exists (select * from CDN.TraElem where Trn_TrnId=Tre_TrnId and Tre_KatId = ??kategoria)

Jak wyfiltrować listę dokumentów aby wyświetlały się wszystkie dokumenty oprócz tych w buforze, korekt i anulowanych?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

IsNull(TrN_Korekta,0)=0 AND TrN_Bufor=0

Jak wyfiltrować dokumenty, na których występują towary/ usługi z określonej grupy towarowej?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPTWGLISTA())|grupa|&grupa:REG= @? PAR@
exists( SELECT TrE_TrEID FROM CDN.TraElem JOIN CDN.Towary ON TrE_TwrID = Twr_TwrID WHERE TrE_TrNID = A.TrN_TrNID AND Twr_TwGGIDNumer=??grupa )

Jak wyfiltrować dokumenty wg. daty wystawienia oraz dowolnego fragmentu numeru pełnego dokumentu?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|Data|&Data wystawienia:REG=75828 @? PAR@ @PAR ?@S20|wartosc|&Podaj wartosc:REG= @? PAR@
TrN_NumerPelny LIKE '%' + ??wartosc+'%' and TrN_DataWys=??Data

Jak wyfiltrować dokumenty, gdzie występują elementy z określoną cechą i wartością?

Dla cech typu data, do pola wartość należy wpisać datę wg formatu RRRR-MM-DD. Żaden inny format nie będzie rozpoznany przez filtr.
Zapytanie należy wpisać z poziomu konstruktora filtra, bezpośrednio na zakładce Zaawansowane, w polu Filtr SQL:

@PAR ?@LS20(OP_TWR.DLL|CALLLOOKUPATRLISTATWR())|CechaID|&Cecha: @? @MSG(Wybór z listy) @TIP(Wybór z listy) PAR@
@PAR ?@S255|CechaWartosc|&Wartość: @? @MSG(Wartość cechy) @TIP(Wartość cechy) PAR@
EXISTS( SELECT TrE_TrEID FROM [CDN].[TraElem] JOIN [CDN].[TraSElemDost] ON [TrE_TrEID] = [TsD_TrEID] WHERE TrE_TrNID = A.TrN_TrNID AND (
(ISNULL([TsD_Cecha1_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha1_Format] = 4 AND [TsD_Cecha1_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha1_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha1_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha2_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha2_Format] = 4 AND [TsD_Cecha2_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha2_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha2_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha3_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha3_Format] = 4 AND [TsD_Cecha3_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha3_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha3_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha4_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha4_Format] = 4 AND [TsD_Cecha4_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha4_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha4_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha5_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha5_Format] = 4 AND [TsD_Cecha5_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha5_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha5_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha6_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha6_Format] = 4 AND [TsD_Cecha6_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha6_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha6_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha7_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha7_Format] = 4 AND [TsD_Cecha7_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha7_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha7_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha8_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha8_Format] = 4 AND [TsD_Cecha8_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha8_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha8_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha9_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha9_Format] = 4 AND [TsD_Cecha9_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha9_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha9_Wartosc] END = ??CechaWartosc)
OR (ISNULL([TsD_Cecha10_DeAId], 0) = ??CechaID AND CASE WHEN ([TsD_Cecha10_Format] = 4 AND [TsD_Cecha10_Wartosc] <> '') THEN CONVERT(VARCHAR(10), DATEADD("day", CONVERT(INT, [TsD_Cecha10_Wartosc]), '1800-12-28'), 21) ELSE [TsD_Cecha10_Wartosc] END = ??CechaWartosc)
))

Filtr można zastosować również na liście zasobów, wówczas należy zmodyfikować w wyrażeniu WHERE relacje po polach TrE_TwrId=A.Twr_TwrId

Jak wyfiltrować listę zasobów/cennik tylko do tych towarów które są powiązane z dostawcą (zdefiniowany kontrahent na karcie towaru zakładka Dodatkowe pole Dostawca)?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKNTLISTA())|KontrahentId|&Kontrahenci:REG=’!NIEOKREŚLONY!’ @? PAR@
Twr_KntId = ??KontrahentId

Jak wyfiltrować na liście dokumentów PZ, dokumenty nie powiązane z FRR?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

not exists (select trr_trrid from cdn.tranagrelacje where trn_trnid = trr_trnid and trr_fatyp = 301) or trn_faid not in (select trn_trnid FROM CDN.TraNag JOIN cdn.TraNagRelacje ON TrN_TrNId = TrR_TrNId where TrR_TrNId = TrN_TrNID and TrR_FaTyp=350)

Jak wyfiltrować na liście dokumentów PZ, dokumenty powiązane z FRR?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select trr_trrid from cdn.tranagrelacje where trn_trnid = trr_trnid and trr_fatyp = 301) and trn_faid in (select trn_trnid FROM CDN.TraNag JOIN cdn.TraNagRelacje ON TrN_TrNId = TrR_TrNId where TrR_TrNId = TrN_TrNID and TrR_FaTyp=350)

Jak wyfiltrować na liście dokumentów RO, dokumenty ze statusem w Realizacji do których wygenerowano dokument FA bez WZ?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from cdn.tranagrelacje where TrR_FaTyp = 302 and trn_trnid = trr_trnid and trn_zwroconocalailosc = 2)

Jak wyfiltrować na liście faktur sprzedaży, dokumenty korekt ilościowych do dokumentów pierwotnych, które nie zostały przekształcone do dokumentu PW?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

not exists (select * from CDN.TraNagRelacje where TrR_TrNId = TrN_TrNID and (TrR_FaTyp=303 or TrR_FaTyp=306) and trn_rodzaj = 302101) and trn_rodzaj = 302101

Jak wyfiltrować na liście faktur, faktury zaliczkowe które nie mają skojarzonych faktur finalnych?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Trn_TrnId not in ( select A.TrR_FaId from cdn.tranagrelacje B left outer join cdn.Tranag T on TrR_TrNID = T.TrN_TrNID left outer join cdn.TraNagRelacje A on B.TrR_FaId = A.TrR_TrNId where B.TrR_FaTyp = 320 AND TrN_Rodzaj in (302009, 302004)) and trn_rodzaj = 302200

Wyszukiwanie dokumentów z konkretnej dostawy. Filtr działa na liście WZ, wyświetli te dokumenty WZ, które rozchodowują towar z konkretnego (wskazanego w filtrze) PZ.

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@S30|numer|&numer:REG= @? PAR@
exists (select * from CDN.TraNag TRN2, CDN.TraElem TRE1, CDN.TraElem TRE2, CDN.TraSElem TRS1, CDN.TraSElem TRS2 where A.TrN_TrNID=TRE1.TrE_TrNID and TRS1.TrS_TrEId=TRE1.TrE_TrEID and TRS1.TrS_TrSIdDost=TRS2.TrS_TrSId and TRS2.TrS_TrEId = TRE2.TrE_TrEID and TRE2.TrE_TrNId=TRN2.TrN_TrNID and TRN2.TrN_NumerPelny like '%'+??numer+'%')

Wyszukiwanie dokumentów z konkretnych wydań. Filtr dla listy dokumentów PZ, po wskazaniu numeru dokumentu WZ wyświetli dokumenty PZ którymi towar z WZ został przyjęty.

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@S30|numer|&numer:REG= @? PAR@
exists (select * from CDN.TraNag TRN2, CDN.TraElem TRE1, CDN.TraElem TRE2, CDN.TraSElem TRS1, CDN.TraSElem TRS2 where A.TrN_TrNID=TRE1.TrE_TrNID and TRS1.TrS_TrEId=TRE1.TrE_TrEID and TRS1.TrS_TrSId=TRS2.TrS_TrSIdDost and TRS2.TrS_TrEId = TRE2.TrE_TrEID and TRE2.TrE_TrNId=TRN2.TrN_TrNID and TRN2.TrN_NumerPelny like '%'+??numer+'%')

Jak wyfiltrować towary z ceną domyślną w walucie np. EUR?

W menu Ogólne/ Cennik, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.TwrCeny where TwC_TwrID=Twr_TwrId and TwC_TwCNumer=Twr_TwCNumer and TwC_Waluta='EUR')

Jak wyfiltrować towary z określonym kodem CN na liście cennikowej?

Należy założyć filtr zaawansowany który będzie korzystał z tabeli CDN.KodyCN. Filtr będzie wyglądał tak:

@PAR ?@R(SELECT KCN_KcNID, KCN_Kod From CDN.KodyCN)|Kody_CN|&Kody CN: @? PAR@
Twr_KCNID = ??Kody_CN

Jak wyfiltrować towary, które nie mają ustalonego kodu CN?

W menu Ogólne/ Cennik, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Twr_KCNID is null

Jak wyfiltrować towary, które nie mają ustalonego kraju pochodzenia?

W menu Ogólne/ Cennik, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Twr_KrajPochodzenia = ''

Jak wyfiltrować towary, które nie mają wprowadzonej wagi lub waga jest zerowa?

W menu Ogólne/ Cennik, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Twr_WagaKG is null or Twr_WagaKG = 0

Jak wyfiltrować towary z przypisaną jedną grupą?

W menu Ogólne/ Cennik, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select count (TwG_Kod) from CDN.TwrGrupy Where TwG_GIDTyp = 16 and TwG_GIDNumer = Twr_TwrId Group by TwG_Kod Having count (TwG_Kod) =1)

Jak wyfiltrować Dokumenty WZ mające powiązanie (bądź nie mające powiązania) z Fakturą Sprzedaży?

W menu Handel/ Wydania zewnętrzne, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:
– w celu znalezienia dokumentów WZ mających powiązanie z fakturą:

exists (select * from CDN.TraNagRelacje where TrR_TrNId = TrN_TrNID and TrR_FaTyp=302)

– w celu znalezienia dokumentów WZ nie mających powiązania z fakturą:

not exists (select * from CDN.TraNagRelacje where TrR_TrNId = TrN_TrNID and TrR_FaTyp=302)

Jak wyfiltrować Dokumenty WZ powiązane z Fakturami Sprzedaży i Paragonami, gdzie daty wystawienia dokumentów handlowych znajdują się w podanym przedziale?

W menu Handel/ Wydania zewnętrzne, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|data_od|&data od:REG={Today()} @? PAR@
@PAR ?@D17|data_do|&data do:REG={Today()} @? PAR@
Exists (select * from CDN.TraNag Z where A.TrN_FaId = Z.TrN_TrNID and Z.TrN_DataWys>= ??data_od and Z.TrN_DataWys <= ??data_do and A.Trn_TypDokumentu=306 and (Z.TrN_TypDokumentu=302 or Z.TrN_TypDokumentu=305)) Druga wersja filtra z wykorzystaniem tabeli CDN.TraNagRelacje: @PAR ?@D17|data_od|&data od:REG={Today()} @? PAR@ @PAR ?@D17|data_do|&data do:REG={Today()} @? PAR@ exists(select * from CDN.TraNagRelacje join CDN.TraNag Z on Trr_faid = z.trn_trnid where TrR_TrNId = A.TrN_TrNID and TrR_FaTyp in (302,305) and Z.TrN_DataWys>= ??data_od and Z.TrN_DataWys
<= ??data_do)

Jak na liście dokumentów WZ ukryć te mające powiązania z Fakturą Sprzedaży/Fakturą korygującą, które zostały całkowicie zwrócone?

W menu Handel/ Wydania zewnętrzne, w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

TrN_TrNID NOT IN (SELECT TrR_TrNID FROM CDN.TraNagRelacje WHERE TrR_FaTyp IN (302)) AND TrN_TrNID NOT IN ( SELECT Zrd.Tre_TrNID from CDN.TraElem [Kor] LEFT JOIN CDN.TraElem [Zrd] on Kor.TrE_ZwrId = Zrd.TrE_TrEId WHERE Kor.TrE_Aktywny <> 0 AND Zrd.TrE_TypDokumentu = 306 GROUP BY Zrd.TrE_TrNID, Zrd.TrE_Ilosc HAVING Zrd.Tre_Ilosc + SUM(Kor.Tre_Ilosc) <= 0) AND TrN_Korekta = 0 AND TrN_Anulowany = 0

Jak wyfiltrować dokumenty po opisie pozycji?

Na liście dokumentów w module Handel/Faktury w Konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@ABC(' ')@? PAR@
@PAR ?@LS20(SELECT Tre_TrnId, TrE_TwrOpis AS [Opis], TrE_TwrKod AS [Kod], TrE_TwrNazwa AS [Nazwa] FROM CDN.TraElem
WHERE REPLACE(REPLACE(REPLACE(REPLACE(TrE_TwrOpis,CHAR(13),''), char(10),''),CHAR(9), ''),' ','') <> '' AND TrE_TypDokumentu = 302
ORDER BY TrE_TwrOpis |GENERICLOOKUP(Towary z opisem na dokumencie, 0, 1))|TwrOpis|&Opis Towaru:| 6@? PAR@
Trn_TrnId = ??TwrOpis

CRM

Jak wyfiltrować listę kontaktów/ zadań aby widoczne były CRM-y zmodyfikowane danego dnia?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|data|&Data:REG={Today()} @? PAR@
FLOOR(CONVERT(DECIMAL(14,4), CRK_TS_MOD)) = FLOOR(CONVERT(DECIMAL(14,4), CONVERT(DATETIME,??data ,120)))

Jak zrobić aby właściciel firmy na liście kontaktów i zadań widział swoje zadania i zadań podwładnych, natomiast podwładni widzą tylko i wyłącznie swoje zadania ?

W Konfiguracji/ Program/ Użytkowe/ Parametry należy zaznaczyć parametr Stosuj filtry obowiązkowe.
Na zakładce Opcje w Typie filtra należy zaznaczyć Obowiązkowy oraz z menu wybrać akronim Operatora.
Do zadania może być przypisany pracownik lub operator. W bazie danych ID pracownika jak i operatora może być takie samo albo różne, dlatego w filtrze można wykorzystać również pole CRK_OpiekunTyp gdzie typ=8 to operator a typ =3 to pracownik.
W polu Filtr SQL można wpisać:

CRK_OpiekunId= {OperatorID} and CRK_OpiekunTyp =8

Gdzie {OperatorID} oznacza ID operatora aktualnie zalogowanego.
Na zakładce [Opcje] w Typie filtra należy zaznaczyć Obowiązkowy oraz z menu wybrać akronim Operatora.

Obieg dokumentów

Jak wyfiltrować w bibliotece dokumentów wszystkie dokumenty które nie mają powiązań z transakcjami ?

Będą to zarówno dokumenty firmowe, jak i wspólne (te z zasady nie są kojarzone z innymi transakcjami). Tak więc ewentualnie należy dodatkowo zawęzić listę dokumentów tylko do firmowych (parametr na liście).
Zapytanie należy wpisać z poziomu konstruktora filtra, bezpośrednio na zakładce [Zaawansowane], w polu Filtr SQL.

not exists (select * from CDN.DokRelacje Z where A.Dnv_DonId = Z.Dor_ParentId and Z.Dor_ParentTyp = 750)

Jak wyfiltrować dokumenty z biblioteki dokumentów, które są na zadanym etapie realizacji (etap bieżący) i etap ten jest etapem głównym?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = SE_SEID, Kod = SE_Symbol From {OPBK()}.CDN.SekEtapy Order By
SE_Symbol )|EtapID|&Etap:1 @? PAR@
exists (select * from CDN.DokNagProcesEtapy, CDN.DokNagEtapy where DNV_DoNID=DnPr_DoNID and DnPr_DnPrID=DnE_DnPrID and DnE_EtapID=??EtapID and A.DNV_EtapBiezacyLp=DnPr_Lp and DnPr_Poziom=1)

Jak wyfiltrować dokumenty z biblioteki dokumentów, które są na zadanym etapie realizacji (etap bieżący)?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = SE_SEID, Kod = SE_Symbol From {OPBK()}.CDN.SekEtapy Order By
SE_Symbol )|EtapID|&Etap:1 @? PAR@
exists (select * from CDN.DokNagProcesEtapy, CDN.DokNagEtapy where DNV_DoNID=DnPr_DoNID and DnPr_DnPrID=DnE_DnPrID and DnE_EtapID=??EtapID and A.DNV_EtapBiezacyLp=DnPr_Lp)

Jak wyfiltrować dokumenty z biblioteki dokumentów, które w schemacie mają zadany etap realizacji?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = SE_SEID, Kod = SE_Symbol From {OPBK()}.CDN.SekEtapy Order By
SE_Symbol )|EtapID|&Etap:1 @? PAR@
exists (select * from CDN.DokNagProcesEtapy, CDN.DokNagEtapy where DNV_DoNID=DnPr_DoNID and DnPr_DnPrID=DnE_DnPrID and DnE_EtapID=??EtapID)

Księgowość i Środki Trwałe

Jak wyfiltrować z rejestrów VAT faktury, które mają datę deklaracji VAT-7 inną niż rejestr VAT?

W Rejestrze (zakupu lub sprzedaży) VAT, w Konstruktorze filtra, na zakładce: [Zaawansowane]należy wpisać w polu Filtr SQL:

Van_RokMies<>Van_DeklRokMies

Filtr zastosowany z zakładki Rejestr VAT, zakres dat: od 2018/01/01 do 2018/01/31 pozwoli wyświetlić np. fakturę wystawioną 5 stycznia 2018, a mającą wejść na deklarację w lutym 2018.

Przeglądam dokumenty RVAT za pierwszy kwartał, chciałbym wyfiltrować te, które są rozliczane w deklaracjach za następne miesiące. Jak mogę to wykonać?

Polem odpowiedzialnym za rozliczenie wpisu w deklaracji za dany miesiąc to pole: VaN_DeklRokMies. Pole to agreguje w postaci liczby całkowitej rok oraz miesiąc, np.: dokument przeznaczony do rozliczenia w deklaracji za kwiecień 2018 będzie w tym polu posiadał wpis : 201804
Możemy, więc wprowadzić filtr zaawansowany , który będzie wykorzystywał to pole wpisując w polu Filtr SQL:

@PAR ?@D17|DATA_OD|&Od :{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DATA_DO|&Do :{DateClwFirstDay('m')} @? PAR@
YEAR(??DATA_OD ) * 100 + MONTH(??DATA_OD) <=VaN_DeklRokMies and YEAR(??DATA_DO ) * 100 + MONTH(??DATA_DO) >=VaN_DeklRokMies

Filtr przed uruchomieniem będzie odpytywał o daty określające przedział – Od i Do. – z wskazanej daty znaczenie będą miały jedynie miesiąc oraz rok.

Czy można utworzyć filtr dla Rejestru VAT po akronimie pracownika wybranego na formatce faktury na zakładce Kontrahent?

W polu Filtr SQL można wpisać:

VaN_PodZalId=(select Pre_PreID from cdn.pracetaty where Pre_kod like ?@S100|Akronim pracownika:'') AND VaN_PodmiotZalTyp=3

Przed odfiltrowaniem listy program będzie pytał o akronim pracownika.
Można również posłużyć się deklaracją parametru dynamicznego i przekazać do zapytania kod pracownika wyświetlony na liście – w polu Filtr SQL wpisujemy:

@PAR ?@LS20(OP_PRCW.DLL|CALLLOOKUPPRILISTA())|pracownik|&pracownik:REG= @? PAR@
VaN_PodZalId=??pracownik AND VaN_PodmiotZalTyp=3

Jak z listy rejestru VAT odfiltrować te faktury, które są nierozliczone lub rozliczone częściowo i dodatkowo forma płatności jest różna od gotówki?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.BnkZdarzenia where VaN_VaNID=BZd_DokumentID and (Bzd_Kwota<>Bzd_KwotaRoz)) AND VaN_FplID<>1

Jak w Rejestrach VAT wyfiltrować faktury z podaną kategorią tak aby wyfiltrowaną listę można było zaznaczyć i zaksięgować?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKATLISTA())|Kategoria|&Kategoria: @? PAR@
VaN_KatId = ??Kategoria

Program będzie pytał o kategorię przed filtrowaniem i dodatkowo będzie ją można wybrać z listy kategorii. Po zawężeniu listy zaznaczamy faktury np. kombinacją klawiszy CTRL + A i księgujemy wybranym schematem.

Jak wyfiltrować faktury w Rejestrach VAT zawierające kategorie szczegółowe należące do zadanej kategorii ogólnej?

a) dla kategorii nagłówka dokumentu:
W konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select Kat_KodOgolny, Kat_KodSzczegol from cdn.kategorie where VaN_KatID=Kat_KatID AND Kat_KodOgolny=?@S100|Kategoria ogólna:'')

b) dla kategorii wybranych w elementach faktury VAT (kategorie przy poszczególnych stawkach VAT):
W konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

Exists (select * from cdn.vattab Join cdn.kategorie on vat_katid = kat_katid where vat_vanid = van_vanid and Kat_KodOgolny=?@S100|Kategoria ogólna:'')

Jak wyfiltrować w Rejestrach VAT listę faktur całkowicie rozliczonych i zakwalifikowanych do danej deklaracji VAT-7?

Taka lista może być potrzebna tym firmom, które potrzebują ustalić wartość zapłaconych Faktur Zakupu dla potrzeb ustalenia kwoty VAT do zwrotu na rachunek bankowy podatnika.
Aby zrobić wydruk takich faktur, należy:
1. Zbudować filtr: na zakładce [Zaawansowane] w Konstruktorze filtra w polu Filtr SQL należy wpisać:

VaN_DeklRokMies=?@N-15.4|Rok i miesiąc VAT-7:0

2. Na zakładce Rejestr VAT w Rejestrach VAT, zawęzić listę faktur, za pomocą ww. filtra, do tych które są zakwalifikowane tylko do deklaracji np. listopadowej (gdy przed odfiltrowaniem listy program zapyta o rok
i miesiąc deklaracji – wpisać: 201811).
3. Wykonać odpowiedni wydruk dokumentów rozliczonych z menu wydruków.
Listę faktur można uzyskać również bezpośrednio na ekranie.
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.BnkZdarzenia where VaN_VaNID=BZd_DokumentID AND BZd_DokumentTyp=2 AND (BZd_KwotaSys=BZd_KwotaRozSys) AND VaN_DeklRokMies=?@N-15.4|Rok i miesiąc VAT-7:0)

Przed filtrowaniem program pyta o datę deklaracji VAT-7 – należy wpisać rok i miesiąc w formacie np. 201611. Tak wyfiltrowanej listy nie da się wydrukować ze względu na składnię filtra, ale można ją wysłać do arkusza Excel.

Jak wyfiltrować listę faktur po kolumnie KPiR, do której dokumenty mają być zaksięgowane?

Na liście faktur w rejestrze VAT, w konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT Id = 1, Kod = 'Sprzedaż' UNION SELECT Id = 2, Kod = 'Pozostałe' UNION SELECT Id = 3, Kod = 'Towary' UNION SELECT Id = 4, Kod = 'Uboczne' UNION SELECT Id = 5, Kod = 'Reklama' UNION SELECT Id = 6, Kod = 'Wynagrodzenia' UNION SELECT Id = 7, Kod = 'Inne' UNION SELECT Id = 8, Kod = 'Zaszłości')|Kolumna|&Kolumna: @? PAR@
exists (Select * From CDN.VatTab Where VaT_VaNID = VaN_VaNId And VaT_KolumnaKPR = ??Kolumna )

Filtr ma taką właściwość, że jeśli jest jakiś zapis, który ma być zaksięgowany w części do jednej kolumny,
a w części do innej, to na liście widać go w pełnej kwocie, a na wydruku w kwocie do zaksięgowania do wskazanej kolumny.

Jak uzyskać listę transakcji nierozliczonych, pochodzących z Rejestru VAT, na danym koncie rozrachunkowym?

W menu Księgowość/Księgowość/ Dzienniki, zakładka Konto, należy wybrać odpowiednie konto, a w Konstruktorze filtra, na zakładce Zaawansowane, w polu Filtr SQL wpisać:

exists(select * from CDN.VatNag join CDN.BnkZdarzenia on VaN_VaNID=BZd_DokumentID where VaN_DekID=DeN_DeNId AND Bzd_DokumentTyp=2 AND (Bzd_Kwota-Bzd_KwotaRoz<>0)) OR exists(select * from CDN.VatNag join CDN.TraNag on TrN_VaNId=VaN_VaNID join CDN.BnkZdarzenia on TrN_TrNID=BZd_DokumentID where VaN_DekID=DeN_DeNId AND Bzd_DokumentTyp=1 AND (Bzd_Kwota-Bzd_KwotaRoz<>0))

Filtr zawęzi listę do tych dekretów, które pochodzą z Rejestru VAT (zostały wprowadzone bezpośrednio do Rejestru VAT lub przesłane z modułu FA i zaksięgowane z Rejestru VAT) i nie są rozliczone lub są rozliczone częściowo.

Jak sprawdzić czy poprawnie wprowadzono Kwoty dodatkowe na fakturach w Rejestrze VAT?

Jeżeli jest jakaś reguła np. zwykle na Fakturach Zakupu rozksięgowujemy kwotę netto na różne konta „czwórek” czy „piątek” i suma księgowań po stronie Wn ma się równać kwocie netto dokumentu, to można zbudować filtr, który będzie wyświetlał faktury nie spełniające tego warunku.
W Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

not exists (select * from CDN.KwotyDodatkowe where Kdd_DokumentID=VaN_VaNID AND KDD_DokumentTyp=2 AND Kdd_Segment1<>''
having SUM(Kdd_Kwota) = VaN_RazemNetto)

Zostaną wyfiltrowane wszystkie pozycje różne od tych, na których suma kwot dodatkowych WN jest równa kwocie netto faktury.

Jak wyfiltrować środki trwałe aktywne, całkowicie umorzone?

Poniżej przykład filtra, który wyświetli środki trwałe aktywne, których wartość bieżąca bilansowa minus odpisy umorzeniowe = 0. Filtr nie uwzględnia historyczności i bierze pod uwagę tylko amortyzację bilansową.

SrT_Stan=0 and SrT_WartoscBilan + ( Select IsNull(Sum( SrH_KwotaBilan - SrH_KwotaUm ), 0) From CDN.TrwaleHist Where SrH_SrTId = SrT_SrTId And SrH_TypDokumentu<>4) = 0

Jak w dziennikach księgowych wyfiltrować dekrety, których dokumenty źródłowe były płatne gotówką?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL można wpisać:

exists (select * from CDN.TraNag where
DeN_DeNId = TrN_DekId and TrN_FPlId=1) OR exists(select * from CDN.VatNag where DeN_DeNId=VaN_DekID AND VaN_FplID=1)
TrN_FPlId=1 i VaN_FplID=1 oznacza formę płatności o ID 1. Standardowo jest to forma płatności o nazwie „gotówka”.

Jak wyfiltrować różnice kursowe, które powstały z rozliczenia dokumentów innych niż te pochodzące z Ewidencji dodatkowej?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

''=''AND(BRK_LDokTyp='1' AND exists(select*from CDN.BnkZdarzenia where BRK_LDokID=Bzd_BzdID and BZd_DokumentTyp<>12))OR(BRK_PDokTyp='1' AND exists(select*from CDN.BnkZdarzenia where BRK_PDokID=Bzd_BzdID and BZd_DokumentTyp<>12))

Powyższy filtr wyświetli różnice kursowe, na których co najmniej jeden z dokumentów nie pochodzi z Ewidencji dodatkowej. Wyfiltrowane różnice kursowe można zaznaczyć i zaksięgować.
BRK_LDokTyp=’1′ czyli że typ lewego dokumentu to dokument pochodzący z tabeli BnkZdarzenia.
BZd_DokumentTyp=1 to typ dokumentu w BnkZdarzenia np.
1 – faktura z modułu Faktury;
12 – faktura z Rejestru VAT;
12 – dokument z Ewidencji dodatkowej;

Jak sprawdzić, która faktura z rejestru zakupów VAT nie została zaksięgowana na konto VAT’u lub została zaksięgowana, ale kwota VAT z faktury nie zgadza się z kwotą VAT na koncie?

W Rejestrze zakupów VAT można stworzyć filtr, który wyświetli te faktury, których suma kwoty VAT nie jest równa kwocie zaksięgowanej na konto VAT’u. W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL można wpisać:

VaN_DekId Is Not Null And Not Exists (Select DeK_AccId From CDN.DekretyKonta Join CDN.Konta On DeK_AccId = Acc_AccId Where DeK_DeNId = VaN_DekId And Acc_Numer='221-02' And Year(DeK_DataDok)
= Year(VaN_DataZap) And Month(DeK_DataDok) = Month(VaN_DataZap) Group By DeK_AccId Having Sum(DeK_Kwota) = VaN_RazemVat)

W pole Acc_Numer=’221-2′ należy wpisać numer konta VAT. W przypadku faktur – korekt na kwoty ujemne, filtr zadziała prawidłowo wtedy, gdy kwota VAT’u jest księgowana na to samo konto co zwykła faktury i po tej samej stronie tylko ze znakiem „minus”.

Jak wyfiltrować w dziennikach księgowań PK, które zawierają pozycje zawierające zadany opis?

W menu Księgowość/ Dzienniki, zakładka [Dzienniki]. W konstruktorze filtra na zakładce [Zaawansowane] należy wpisać:

@PAR ?@S30|Szukaj|&Szukaj: @? PAR@
DeN_Dokument Like '%'+ ??Szukaj +'%' Or DeN_Kategoria Like '%'+ ??Szukaj +'%' Or Exists (Select * From CDN.DekretyElem Where DeE_DeNId = DeN_DeNId And (DeE_Dokument Like '%'+ ??Szukaj +'%' Or DeE_Kategoria Like '%'+ ??Szukaj +'%'))

Jak wyfiltrować listę dokumentów rozliczonych pochodzących z Rejestru VAT lub ewidencji dodatkowej?

Na liście Dokumentów Rozliczonych w menu Kasa/Bank w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from cdn.bnkzdarzenia where
(bzd_dokumenttyp=12 and brk_ldoktyp=1 and brk_ldokid = bzd_bzdid) or
(bzd_dokumenttyp=12 and brk_pdoktyp=1 and brk_pdokid = bzd_bzdid) or
(bzd_dokumenttyp=2 and brk_ldoktyp=1 and brk_ldokid = bzd_bzdid) or
(bzd_dokumenttyp=2 and brk_pdoktyp=1 and brk_pdokid = bzd_bzdid))

Jak wyfiltrować Rejestr VAT wg numeru NIP Kontrahenta pod warunkiem, że dokument nie jest zaksięgowany?

Na liście Rejestru VAT w menu Kasa/Bank w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@HO(RY:1|KP:2|KH:3)|TypKsi|&KSI:{GetSql('Select Fir_Wartosc From CDN.Firma Where Fir_Numer=1204', '')} @? PAR@ {CHOOSE ( ??TypKsi, 'IsNull(VaN_RycId,0)=0', 'IsNull(VaN_KPRId,0)=0', 'IsNull(VaN_DekId,0)=0', '1=1')} and VaN_KntNipE LIKE '%' + ?@S100|numer NIP:'' + '%'

Jak wyfiltrować konta w Planie kont, które mają inny numer w przyszłym okresie?

Na Planie kont w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists ( select * from cdn.konta k2 where A.Acc_NextAccId=k2.Acc_AccId
and A.Acc_Numer<>k2.Acc_Numer)

Jak wyfiltrować polecenia księgowania, które zawierają dekrety na konto 404-1 i 501-01?

Przykład takiego filtra dla zakładki [Dzienniki] w menu Księgowość/Księgowość/Dzienniki:

exists(select * from CDN.DekretyElem K1 join CDN.DekretyElem K2 on (DeN_DeNID = K2.DeE_DeNID) where DeN_DeNID = K1.DeE_DeNID and K1.DeE_KontoWn = '404-1' and K2.DeE_KontoWn = '501-01')

Na fakturze w Rejestrze VAT wpisuję jako wartość atrybutu numer rejestracyjny samochodu i jako kolejny atrybut – paliwo, jak sprawdzić ile paliwa zakupiono dla danego samochodu?

Na jednym dokumencie uzupełniono atrybuty REJESTRACJA (nr rejestracyjny samochodu) i PALIWO (ilość zakupionego paliwa). Poniższe zapytanie, w Rejestrach VAT, na zakładce [Wg atrybutów], zwróci rekordy zawierające ilość paliwa dla podanego numeru rejestracyjnego samochodu. Przed odfiltrowaniem program zapyta o nr rejestracyjny.

exists (select * from CDN.VATAtrybutyView as ATR1 join CDN.VATAtrybutyView as ATR2 on (ATR1.VAV_VaNID=ATR2.VAV_VaNID and ATR2.VAV_DeAKod='REJESTRACJA' AND ATR2.VAV_DAtWartoscTxt =?@S100|Nr rejestracyjny:'') where ATR1.VAV_VaNID=VAN_VaNID and ATR1.VAV_DeAKod = 'PALIWO')

W polu Atrybut można wybrać atrybut PALIWO – wtedy będzie można podsumować wyfiltrowane rekordy (ilość paliwa).

Jak wyfiltrować dokumenty w rejestrze VAT według wskazanych grup kontrahentów?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT Gru_GruID, Gru_Nazwa FROM cdn.Grupy WHERE Gru_Typ=31)|Grupa_kontrahentow|&Grupa_kontrahentow:REG= @? PAR@
exists (select * from cdn.kontrahenci where knt_kntID=van_podId and van_podmiotTyp=1 and knt_grupa=??_Q_RES2_Grupa_kontrahentow)

Jak wyfiltrować faktury z rejestru VAT zaksięgowane pomiędzy podanymi datami, które zakwalifikowane zostały do deklaracji VAT-7 za podany okres?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|data_od|&Data_zapisu_od:{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|data_do|&Data_zapisu_do:{DateClwLastDay('m')} @? PAR@
@PAR ?@N4|Rok|&Rok_deklaracji:{Year(Today())} @? PAR@
@PAR ?@N4|Miesiac|&Miesiąc_deklaracji:{Month(Today())} @? @RL(1) @RH(12) PAR@
EXISTS (SELECT * FROM CDN.DekretyNag WHERE VaN_DekId = DeN_DeNId AND VaN_DekId IS NOT NULL AND VaN_DeklRokMies={100 * ??Rok + ??Miesiac} AND DeN_DataDok >=??Data_od AND DeN_DataDok <= ??Data_do)

W przypadku stosowania metody kasowej należy użyć poniższego filtra:
@PAR ?@D17|data_od|&Data_zapisu_od:{DateClwFirstDay('m')} @? PAR@ @PAR ?@D17|data_do|&Data_zapisu_do:{DateClwLastDay('m')} @? PAR@ @PAR ?@N4|Rok|&Rok_deklaracji:{Year(Today())} @? PAR@ @PAR ?@N4|Miesiac|&Miesiąc_deklaracji:{Month(Today())} @? @RL(1) @RH(12) PAR@ EXISTS (SELECT * FROM CDN.DekretyNag WHERE VaN_DekId = DeN_DeNId AND VaN_DekId IS NOT NULL AND DeN_DataDok >=??Data_od AND DeN_DataDok <= ??Data_do) AND EXISTS ( SELECT * FROM CDN.VatTab7 WHERE Va7_VaNID=VaN_VaNID AND Va7_RokMiesiac={100 * ??Rok + ??Miesiac} AND VaN_MetodaKasowa=1)

Jak wyfiltrować środki trwałe mające określony atrybut?

Na liście środków trwałych w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = DeA_DeAId, Kod = DeA_Kod FROM CDN.DefAtrybuty WHERE DeA_Typ=3 ORDER BY DeA_Kod)|KodAtr|&Kod atrybutu:ATR1 @? PAR@
EXISTS (SELECT * FROM CDN.TrwaleAtrybuty JOIN CDN.DefAtrybuty ON SrA_DeAId = DeA_DeAId WHERE SrT_SrTID = SrA_SrTId AND DeA_DeAId =??KodAtr)

Jak wyfiltrować dokumenty w rejestrze VAT, które zostały wprowadzone lub zmodyfikowane po konkretnej dacie?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|data_od|&Data_wprowadzenia_lub_modyfikacji:{DateClwFirstDay('m')} @? PAR@
VaN_TS_Zal >= ??data_od OR VaN_TS_Mod >= ??data_od

Jak wyfiltrować dokumenty w Rejestrze VAT posiadające określony atrybut?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@LS20(OP_TWR.DLL|CALLLOOKUPATRLISTADOK())|Atrybut|&Atrybut:REG= @? PAR@ exists (select * from CDN.DokAtrybuty where VaN_VaNID = DAt_VaNID and DAt_DeAId = ??Atrybut)

Jak wyfiltrować dokumenty w Rejestrze VAT posiadające określoną wartość atrybutu?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@S30|Wartosc_atrybutu|&Wartosc_atrybutu:''@? PAR@
exists (select * from CDN.DokAtrybuty where VaN_VaNID = DAt_VaNID and DAt_WartoscTxt
= ??Wartosc_atrybutu)

Jak wyfiltrować dokumenty w Rejestrze VAT, które mają nie zaznaczonego parametru Rozliczać w deklaracji VAT?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

VaN_RozliczacVat7 = 0

Jak znaleźć zapisy w Rejestrze VAT, które pod listą zaliczek mają wybranego jakiegoś pracownika?

W Rejestrze VAT w konstruktorze filtra na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

VaN_PodmiotZalTyp='3’

Jak odnaleźć zapisy księgowe na koncie z daną kategorią w elemencie zapisu?

W menu Księgowość/Dzienniki, zakładka [Konto] w konstruktorze filtra na zakładce [Zaawansowane] należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKATLISTA())|Kategoria|&Kategoria:REG= @?TIP(Wybierz
kategorię) PAR@ DeE_KatId =??kategoria

Jak odnaleźć zapisy księgowe na koncie z daną kategorią w nagłówku zapisu?

W menu Księgowość/Dzienniki, zakładka [Konto] w konstruktorze filtra na zakładce [Zaawansowane] należy wpisać:

@PAR ?@LS20(OP_LIST.DLL|CALLLOOKUPKATLISTA())|Kategoria|&Kategoria:REG=-brak- @? PAR@
DeN_KatId = ??Kategoria

W jaki sposób wyszukać dokumenty środków trwałych w zależności od osoby odpowiedzialnej przypisanej w zadanym okresie?

Na liście dokumentów środków trwałych w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@D17|data1|&Data od:{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|data2|&Data do:{DateClwLastDay('m')} @? PAR@
@PAR ?@R(SELECT distinct Pri_PraId, PRi_nazwisko+' '+pri_Imie1 FROM cdn.Pracidx where PRI_Typ <>2 order by 2 )|PRACOWNIK|&PRACOWNIK:0|@? PAR@
Exists (select * from CDN.TrwaleOsobyOdpowiedzialne where SrH_SrtID=SrOO_SrTID and SrOO_DataOd<=??data1 and (SrOO_DataDo >=??data2 or SrOO_DataDo is null) and SrOO_PrcID =??PRACOWNIK)

W jaki sposób na liście zapisów w rejestrze VAT (bądź na liście faktur) wyszukać dokumenty zaksięgowane na konkretne konto?

Na liście zapisów w rejestrze VAT w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@S30|Konto|&Konto:''@? PAR@
EXISTS (SELECT * FROM CDN.DekretyNag join CDN.DekretyElem on DeN_DeNId=DeE_DeNId WHERE VaN_DekID = DeN_DeNId AND (DeE_KontoWn=??Konto OR DeE_KontoMa=??Konto))

Filtr do zastosowania na liście faktur:

@PAR ?@S30|Konto|&Konto:''@? PAR@
EXISTS (SELECT * FROM CDN.DekretyNag join CDN.DekretyElem on DeN_DeNId=DeE_DeNId WHERE TrN_DekId = DeN_DeNId AND (DeE_KontoWn=??Konto OR DeE_KontoMa=??Konto))

W jaki sposób wyszukać zapisy KPiR zaksięgowane z określonych dokumentów źródłowych?

Na liście zapisów KPiR w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@R (SELECT Id = 2, Kod = 'Rejestr VAT' UNION
SELECT Id = 3, Kod = 'Samochodówka' UNION
SELECT Id = 4, Kod = 'Remanent' UNION
SELECT Id = 5, Kod = 'Wynagrodzenia uproszczone' UNION
SELECT Id = 7, Kod = 'Dokumenty ŚT' UNION
SELECT Id = 10, Kod = 'Wynagrodzenia' UNION
SELECT Id = 12, Kod = 'Ewidencja dodatkowa' UNION
SELECT Id = 13, Kod = 'Różnice kursowe' UNION
SELECT Id = 14, Kod = 'Zapisy k/b'
)|Zrodlo|&Zrodlo: @? PAR@
KPR_Zrodlo = ??Zrodlo

W jaki sposób wyszukać zapisy księgowe na koncie mające parę (taką samą kwotę) po obu stronach konta?

Z poziomu Księgowość/ Dzienniki/ zakładka [Konto] w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@D17|data1|&Data od:{DateClwFirstDay('y')} @? PAR@ @PAR ?@D17|data2|&Data do:{DateClwLastDay('y')} @? PAR@
@PAR ?@S30|Konto|&Konto:''@? PAR@
Exists (Select * From CDN.DekretyElem A Where A.DeE_DeEId=DeK_DeEId
And (Exists (Select * From CDN.DekretyElem B Where A.DeE_Kwota=B.DeE_Kwota
And A.DeE_KontoMa=??Konto and B.DeE_KontoWn=??Konto
AND A.DeE_DataWys between ??data1 And ??data2
AND B.DeE_DataWys between ??data1 And ??data2)
OR Exists (Select * From CDN.DekretyElem B Where A.DeE_Kwota=B.DeE_Kwota
And A.DeE_KontoWn=??Konto and B.DeE_KontoMa=??Konto
AND A.DeE_DataWys between ??data1 And ??data2
AND B.DeE_DataWys between ??data1 And ??data2)))

W jaki sposób na planie kont wyszukać konta rozrachunkowe tego samego podmiotu, na których istnieją nierozliczone rozrachunki po przeciwnych stronach?

Z poziomu Księgowość/ Plan kont w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

EXISTS( Select * From CDN.Konta B Where A.Acc_SlownikId=B.Acc_SlownikId And A.Acc_SlownikTyp=B.Acc_SlownikTyp And A.Acc_Rozrachunkowe = 1 And B.Acc_Rozrachunkowe = 1 AND A.Acc_NumerIdx IN (SELECT Roz.KRo_KontoIdx FROM CDN.KsiRozrachunki AS Roz WHERE Roz.KRo_RozliczenieID IS NULL AND Roz.KRo_Strona=1) AND B.Acc_NumerIdx IN (SELECT Roz.KRo_KontoIdx FROM CDN.KsiRozrachunki AS Roz WHERE Roz.KRo_RozliczenieID IS NULL AND Roz.KRo_Strona=2))
OR
EXISTS( Select * From CDN.Konta B Where A.Acc_SlownikId=B.Acc_SlownikId And A.Acc_SlownikTyp=B.Acc_SlownikTyp And A.Acc_Rozrachunkowe = 1 And B.Acc_Rozrachunkowe = 1 AND A.Acc_NumerIdx IN (SELECT Roz.KRo_KontoIdx FROM CDN.KsiRozrachunki AS Roz WHERE Roz.KRo_RozliczenieID IS NULL AND Roz.KRo_Strona=2) AND B.Acc_NumerIdx IN (SELECT Roz.KRo_KontoIdx FROM CDN.KsiRozrachunki AS Roz WHERE Roz.KRo_RozliczenieID IS NULL AND Roz.KRo_Strona=1))

Powyższy filtr zadziała w przypadku, gdy jest nierozliczony rozrachunek po stronie Wn na koncie 201-2-1-ADM
i po stronie Ma na koncie 202-2-1-ADM, chociaż równie dobrze może to być to samo konto.

W jaki sposób na liście dokumentów w rejestrze VAT wyfiltrować dokumenty według stanu ich rozliczeń?

Z poziomu rejestru VAT w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać treść filtra odpowiednią dla szukanych dokumentów:
– wyłącznie dokumenty nierozliczone całkowicie:

not exists (select * from CDN.BnkZdarzenia where VaN_VaNID = BZd_DokumentID and BZd_DokumentTyp = 2 and (Bzd_KwotaRoz > 0)) AND VaN_Wewnetrzna = 0

– wyłącznie dokumenty rozliczone częściowo:

exists(select BZd_DokumentID, BZd_DokumentTyp, SUM(BZd_Kwota), SUM(BZd_KwotaRoz) from cdn.BnkZdarzenia where BZd_DokumentID = VaN_VaNID AND BZd_DokumentTyp = 2 GROUP BY BZd_DokumentID, BZd_DokumentTyp HAVING SUM(BZd_Kwota) <> SUM(BzD_KwotaRoz) AND SUM(BzD_KwotaRoz) > 0.00)

– dokumenty nierozliczone bądź częściowo rozliczone:

exists (select BZd_BZdID FROM CDN.BnkZdarzenia where VaN_VaNID=BZd_DokumentID and BZd_DokumentTyp = 2 and (Bzd_Kwota<>Bzd_KwotaRoz))

– wyłącznie dokumenty rozliczone całkowicie:

exists(select BZd_DokumentID, BZd_DokumentTyp, SUM(BZd_Kwota), SUM(BZd_KwotaRoz) from cdn.BnkZdarzenia where BZd_DokumentID = VaN_VaNID AND BZd_DokumentTyp = 2 GROUP BY BZd_DokumentID, BZd_DokumentTyp HAVING SUM(BZd_Kwota) = SUM(BzD_KwotaRoz) AND SUM(BzD_KwotaRoz) > 0.00)

Płace i Kadry

Jak wyfiltrować pracowników, dla których ważność badań upływa w podanym okresie?

Na liście pracowników w menu Kadry/Płace / Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|DataOd|Podaj datę:{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DataDo|Podaj datę:{DateClwLastDay('m')} @? PAR@
exists (select 1 from CDN.PracEtaty where PRI_PraId=PRE_PraId and
PRE_WaznoscBadanOkres between ??DataOd AND ??DataDo)

Przed odfiltrowaniem pojawi się pytanie o daty. Domyślnie podpowiada się data pierwszego i ostatniego dnia miesiąca.

Jak odfiltrować listę pracowników niepełnosprawnych po kodzie niepełnosprawności?

Po uruchomieniu filtru pojawi się okno, w którym należy wpisać kod niepełnosprawności (1,2,3 lub 4) datę tj. dzień, na który chcemy sprawdzić listę osób niepełnosprawnych (sprawdzane są daty od-do niepełnosprawności).
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|Data|&Data:{Today()}@? PAR@
exists(select 1 from cdn.pracetaty where pri_praid=pre_praid and PRE_StNiepelnosp LIKE '%' +
?@S100|Stopień niepełnospr:'' + '%' and ??Data between pre_niepelnospod and pre_niepelnospdo)

Jak wyfiltrować listę osób mających zawarte umowy cywilno-prawne o podanym symbolu?

Po uruchomieniu filtru pojawi się okno, w którym należy wpisać zakres dat (sprawdza datę zawarcia umowy we wskazanym okresie) oraz symbol umowy (np. UMW).
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|DataOd|Podaj datę:{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DataDo|Podaj datę:{DateClwLastDay('m')} @? PAR@
exists (select 1 from CDN.UMOWY where Pri_PraID = UMW_PraID and umw_numerstring LIKE
'%' + ?@S100|Symbol:'' + '%' and UMW_DataOd between ??DataOd AND ??DataDo)

Jak wyfiltrować z listy pracowników osoby z przypisanym Urzędem Skarbowym, na wskazany dzień?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|Data|na dzień:{Today()}@? PAR@
exists (select * from CDN.PracEtaty where PRI_Praid=PRE_PraId and pre_PODUrzSkarbId>0 and
??Data between PRE_DataOd and PRE_DataDo)

Ewentualnie zamiast @D17 można wykorzystać @HD17 jeśli parametr z datą ma być ukryty (a więc zawsze jako parametr ma się pojawiać data bieżąca):

@PAR ?@HD17|filtr_dtDataAkt|&filtr_dtDataAkt:{Today()}@? PAR@
exists (select * from CDN.PracEtaty where PRI_Praid=PRE_PraId and pre_PODUrzSkarbId>0 and
??filtr_dtDataAkt between PRE_DataOd and PRE_DataDo)

Osoby bez przypisanego Urzędu Skarbowego:

@PAR ?@D17|Data|na dzień:{Today()}@? PAR@
not exists (select * from CDN.PracEtaty where PRI_Praid=PRE_PraId and pre_PODUrzSkarbId>0 and
??Data between PRE_DataOd and PRE_DataDo)

Jak wyfiltrować pracowników, którym wybrana kwalifikacja kończy się w zadanym zakresie?

Na liście pracowników w menu Kadry/Płace / Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT ID = Dkm_DkmID, Kod = DKM_Nazwa from cdn.DaneKadMod where dkm_Rodzaj = 6 order by DKM_Nazwa)|Kwalifikacje|&Kwalifikacje: @? PAR@
@PAR ?@D17|DataOd|&DataOd:REG={DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DataDo|&DataDo:REG={DateClwLastDay('m')} @? PAR@
exists (select 1 from cdn.Uprawnienia join cdn.DaneKadMod on Upr_DkmId = Dkm_DkmID where Pri_PraID
= Upr_PraID and DKM_DkmID = ??Kwalifikacje and upr_KursTermin between ??DataOd and ??DataDo)

Przed odfiltrowaniem pojawi się rozwijana lista kwalifikacji oraz pytanie o zakres dat.

Jak zablokować operatorowi dostęp do dokumentów dotyczących rozliczeń z pracownikami z tytułu wynagrodzeń?

Aby operator nie widział:
A. Zapisów kasowo/bankowych wystawionych na pracowników, należy założyć filtr w menu: Kasa/bank/Zapisy kasowe/bankowe. Kliknąć na ikonę „Konstruktor filtra” i na zakładce [Zaawansowane], wpisać w polu Filtr SQL:

BZp_PodmiotTyp<>3

Na zakładce [Opcje], wybrać: Obowiązkowy i wybrać operatora, który ma mieć załączony ten filtr.
Jeżeli jest więcej niż jeden operator, który ma mieć założony taki filtr, należy zbudować drugi identyczny filtr, z tym, że na zakładce Opcje wybrać innego operatora.

B. Dla zdarzeń w Preliminarzu pochodzących z list płac, należy założyć filtr w menu: Kasa/Bank / Preliminarz płatności.
Kliknąć na ikonę „Konstruktor filtra” i na zakładce [Zaawansowane], wpisać w polu Filtr SQL:

BZd_DokumentTyp<>8

Na zakładce [Opcje], wybrać: Obowiązkowy i wybrać operatora, który ma mieć załączony ten filtr.
Jeżeli jest więcej niż jeden operator, który ma mieć założony taki filtr, należy zbudować drugi identyczny filtr, z tym, że na zakładce Opcje wybrać innego operatora.

C. Aby operator nie mógł wybrać z listy pracownika (np. po to aby podglądnąć listę rozliczonych i nierozliczonych zapisów dla wybranego pracownika w menu Kasa/bank/ Rozliczenia podmiotu. Należy operatorowi dodać blokadę dostępu do listy pracowników. Blokadę zakłada się w menu: System / Konfiguracja / Program/Użytkowe/Operatorzy. Na formatce danego operatora, na zakładce [Blokady dostępu] należy dodać blokadę: Lista pracowników, wspólników i właścicieli.

D. Aby operator nie widział rozliczeń powstałych z dokumentów, z których przynajmniej jeden jest wystawiony na pracownika, należy założyć następujący filtr obowiązkowy dla operatora w menu Kasa/Bank/ Rozliczenia: pole Filtr SQL:

not exists (select * from CDN.BnkRozKwotyView where BRKV_BRKId=BRK_BRKId and (BRKV_PodmiotTyp1=3 OR BRKV_PodmiotTyp2=3))

Filtry obowiązkowe włącza się w menu: System/Konfiguracja/Program/Użytkowe/Parametry: Stosuj filtry obowiązkowe. Operator nadający filtry obowiązkowe musi być Administratorem, pozostali operatorzy nie powinni być administratorami.

Uwaga
Na formatce Operatora (menu: System/Konfiguracja/Program/Użytkowe/Operatorzy) znajduje się parametr Blokada dostępu do rozliczeń pracowników. Parametr ten blokuje dostęp do dokumentów w module Kasa/Bank, na których jako podmiot jest wybrany pracownik lub wspólnik.

Jak wyfiltrować listę pracowników, którym kończy się ważność badań okresowych?

Na liście pracowników w menu Kadry/Płace/Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|DataOd|Podaj datę:{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DataDo|Podaj datę:{DateClwLastDay('m')} @? PAR@
exists (select 1 from CDN.PracEtaty where PRI_PraId=PRE_PraId and
PRE_WaznoscBadanOkres between ??DataOd AND ??DataDo)
Przed odfiltrowaniem pojawi się pytanie o zakres dat.

Jak wyfiltrować listę pracowników zatrudnionych na stanowiskach robotniczych?

Na liście pracowników w menu Kadry/Płace/Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|Data|&Data:{Today()}@? PAR@
exists (select 1 from CDN.PracEtaty join CDN.DaneKadMod on PRE_ETADkmIdStanowisko=DKM_DkmId
where DKM_Robotnicze=1 and DKM_Rodzaj=1 and PRE_PraId=PRI_PraId and ??Data between PRE_DataOd and PRE_DataDo)

Przed odfiltrowaniem pojawi się zapytanie o datę.

Jak wyfiltrować listę pracowników zgłoszonych do wszystkich ubezpieczeń (społeczne i zdrowotne)?

Na liście pracowników w menu Kadry/Płace/Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from cdn.pracetaty where pri_praid=pre_praid and pre_ubzzdrowod CONVERT(DATETIME,'1899-12-30',120) and PRE_UBZJestEmerytal=1 and PRE_UBZJestRentowe=1 and PRE_UBZJestchorobowe=1 and PRE_UBZJestwypad=1)

Jak wyfiltrować listę pracowników zgłoszonych tylko do ubezpieczenia zdrowotnego?

Na liście pracowników w menu Kadry/Płace/Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from cdn.pracetaty where pri_praid=pre_praid and pre_ubzzdrowod CONVERT(DATETIME,'1899-12-30',120) and PRE_UBZJestEmerytal=0 and PRE_UBZJestRentowe=0 and PRE_UBZJestchorobowe=0 and PRE_UBZJestwypad=0)

Jak wyfiltrować listę pracowników przypisanych do wybranej kategorii?

Na liście pracowników w menu Kadry/Płace/Kadry, w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(select ID=KAT_KatId, Kat_KodSzczegol from CDN.Kategorie)|Kategoria|&Kategoria:REG=PLACE @? PAR@
exists (select 1 from CDN.PracEtaty where PRI_PraId=PRE_PraId and PRE_KATId=
??Kategoria and ?@D17|Data:{Today()} between PRE_DataOd and PRE_DataDo)

Przed odfiltrowaniem pojawi się rozwijana lista słownikowa z kategoriami oraz pytanie o datę.

Jak wyfiltrować listę dokumentów nierozliczonych wystawionych na pracownika?

Na liście Dokumentów Nierozliczonych w menu Kasa/Bank w Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

exists (select * from CDN.PodmiotyView where DKB_PodmiotId=Pod_PodId
and Dkb_PodmiotTyp = Pod_PodmiotTyp AND DKb_PodmiotTyp=3)

Jak wyfiltrować pracowników z listy Kadry zwolnionych w zadanym okresie, w aktualnym okresie historycznym?

W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@D17|DataOd|Zwoln. w okresie od:{DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DataDo|do:{DateClwLastDay('m')} @? PAR@
exists (select 1 from CDN.PracEtaty where PRI_PraId=PRE_PraId and
PRE_ZatrudnionyDo between ??DataOd AND ??DataDo and ?@D17|Na datę aktualności:{Today()} between PRE_DataOd and PRE_DataDo)

Jak wyfiltrować pracowników, którzy mają formę płatności „ROR” lub „gotówka”, w aktualnym okresie historycznym?

Filtr działa tak, że sprawdza odpowiedni zapis historyczny pracownika (data ,którą ustawimy jako „Zapis hist. prac” – podpowiada się aktualna) oraz płatność, która ma ustawioną „nadwyżkę”.
W Konstruktorze filtra, na zakładce [Zaawansowane], w polu Filtr SQL należy wpisać:

@PAR ?@R(SELECT Id = 1, Kod = 'gotówka' UNION
SELECT Id = 3, Kod = 'ROR')|platnosc|&platność:REG= @? PAR@
exists(select 1 from CDN.PracEtaty join CDN.SchematPlatnosci on SPL_PodmiotId = PRE_PreId
where PRE_PraId=PRI_PraId and SPL_Reszta = 1 and SPL_FplId = ??Platnosc AND ?@D17|Zapis hist. prac:{Today()} between PRE_DataOd and PRE_DataDo)

W jaki sposób wyszukać pracowników z określoną kategorią na wybranej liście płac?

Z poziomu Płace i Kadry/ Wypłaty pracowników w Konstruktorze filtra, na zakładce [Zaawansowane] należy wpisać:

@PAR ?@R(SELECT LPL_LplId, LPL_NumerPelny FROM CDN.ListyPlac)|Lista|&Lista plac:REG= @? PAR@
@PAR ?@LS0(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:0|@? PAR@
EXISTS(SELECT 1 FROM CDN.PracEtaty
JOIN CDN.Wyplaty ON WPL_PraId = PRE_PraId
JOIN CDN.ListyPlac ON LPL_LplId = WPL_LplId
WHERE PRI_PraId = PRE_PraId
AND WPL_KatId = ??Kategoria
AND LPL_LplId = ??Lista)

Można również zastosować wariant filtra, w którym numer listy płac jest automatycznie przekazywany na podstawie wybranej na oknie listy:

@PAR ?@HN0|ListaPlacId|&ListaPlacId:0@? PAR@
@PAR ?@LS0(OP_LIST.DLL|CALLLOOKUPKATLISTA())|kategoria|&kategoria:0|@? PAR@
EXISTS(SELECT 1 FROM CDN.PracEtaty
JOIN CDN.Wyplaty ON WPL_PraId = PRE_PraId
JOIN CDN.ListyPlac ON LPL_LplId = WPL_LplId
WHERE PRI_PraId = PRE_PraId
AND WPL_KatId = ??Kategoria
AND LPL_LplId = ??ListaPlacId)




OPT079- Jednolity Plik Kontrolny


1 Wstęp

Od 1 lipca 2016 roku weszły w życie przepisy mówiące o konieczności generowania plików JPK dla dużych firm. Jednolite Pliki Kontrolne mają być wykorzystywane przez Urzędy Skarbowe celem weryfikacji Ksiąg oraz zapisów na podstawie, których powstały.

W przypadku dużych podatników obowiązkiem będzie przygotowywanie tego typu plików, w przypadku małych i średnich przedsiębiorców będzie okres przejściowy (2 lata) do 1 lipca 2018, kiedy będą mogli ale nie będą musieli takich plików przygotowywać. Po tym czasie każdy przedsiębiorca będzie musiał przygotowywać na wezwanie US tego rodzaju pliki.

Obowiązkowe comiesięczne pliki JPK_VAT – w przypadku rejestrów VAT dane przesyłane będą obowiązkowo co miesiąc. Dla dużych podatników obowiązek ten istnieje od 1 lipca 2016 roku, natomiast w przypadku małych i średnich firm od 1 stycznia 2017. Mikroprzedsiębiorstwa muszą spełniać ten obowiązek od 1 stycznia 2018.

Na moment publikacji tego biuletynu zostało przygotowanych i opublikowanych 7 struktur plików dotyczących dokumentów handlowych, kasowo/bankowych oraz księgowych. Struktury plików JPK znajdują się na poniższej stronie: http://www.mf.gov.pl/krajowa-administracja-skarbowa/dzialalnosc/struktury-jpk.

W programie Comarch ERP Optima udostępniona została możliwość eksportu wymaganych danych dla każdego Użytkownika bez względu na wielkość firmy.

Prawo eksportu posiadają wyłącznie wybrani operatorzy w programie – ze względu na to aby zabezpieczyć dane przed niepowołanym do nich wglądem przez nieupoważnione osoby.

W przypadku zmiany wymaganej struktury plików JPK istnieje możliwość aktualizacji formatów służących do eksportu poprzez pobranie ich z serwerów Comarch w momencie generowania plików.

Uwaga
Funkcjonalność aktualizacji wzorów dokumentu elektronicznego dla plików JPK jest dostępna tylko dla programów na gwarancji oraz w przypadku pracy na najnowszej dostępnej wersji programu Comarch ERP Optima.

Wskazówka

Zachęcamy do obejrzenia filmów instruktażowych prezentujących jak wygenerować Jednolity Plik Kontrolny:

Jak złożyć obowiązkowy miesięczny plik JPK_VAT

Jak wygenerować plik JPK na wezwanie Urzędu Skarbowego

Jak scalić pliki JPK_VAT wygenerowane w innych programach

Wskazówka
Dostępny jest również film instruktażowy prezentujący jak wygenerować Jednolity Plik Kontrolny w wersji wcześniejszej niż 2017.3.1.

Wskazówka

Wskazówka
Po kliknięciu w menu JPK na pozycję Informacje o JPK otwierana jest strona pomocy dotycząca Jednolitego Pliku Kontrolnego (JPK) w Comarch ERP Optima.

2 Konfiguracja ustawień związanych z JPK

Aby móc wyeksportować dane, na karcie operatora w Konfiguracji Programu/ Użytkowe/ Operatorzy musi zostać zaznaczony parametr Prawo eksportu plików JPK:

Tylko Operator z uprawnieniami administratora może zaznaczyć ten parametr sobie bądź innym Operatorom. Początkowo jedynie operator ADMIN ma ten parametr zaznaczony.

Poniżej znajduje się parametr Zmiana atrybutów na zatwierdzonym dok. umożliwiający edycję atrybutów na zatwierdzonej oraz na zaksięgowanej Fakturze Zakupu/Sprzedaży oraz na zaksięgowanym dokumencie w rejestrze VAT. Jest to istotne w związku z przenoszeniem informacji zawartych na atrybutach do plików JPK (dla rejestrów VAT oraz faktur). Parametr może być edytowany tylko przez operatora z uprawnieniami administratora.

Dodatkowo w Konfiguracji Stanowiska/ Ogólne/ Jednolity Plik Kontrolny musi zostać wskazany katalog przechowywania plików wymiany, do którego będą zapisywane kopie wysyłanych plików w formacie *.xml:

Przy eksporcie Jednolitego Pliku Kontrolnego w ramach wskazanego katalogu tworzony jest podkatalog z nazwą firmy (bazy), więc w przypadku biur rachunkowych dane poszczególnych firm trafiają do własnych katalogów. Nazwy plików określają ich zawartość:

      • dla dokumentów z rejestrów VAT – JPK_VAT_PLN_Data_od_Data_do_Data_i_godzina_utworzenia
      • dla Księgi Handlowej – JPK_KR_ Data_od_Data_do_Data_i_godzina_utworzenia
      • dla Księgi Podatkowej – JPK_PKPIR_ Data_od_Data_do_Data_i_godzina_utworzenia
      • dla ewidencji ryczałtowej – JPK_EWP_Data_od_Data_do_Data_i_godzina_utworzenia
      • dla wyciągów bankowych –JPK_WB_Waluta_Rachunek_bankowy_Data_otwarcia_Data_zamknięcia_Data_i_godzina_utworzenia
      • dla dokumentów handlowych – JPK_FA_Waluta_Data_od_Data_do_Data_i_godzina_utworzenia
      • dla dokumentów magazynowych – JPK_MAG_Magazyn_Waluta_Data_od_Data_do_Data_i_godzina_utworzenia

3 Przygotowanie i eksport plików JPK – informacje ogólne

Przygotowanie plików JPK i eksport danych odbywa się z poziomu menu JPK/ Pliki JPK . Po wybraniu tej opcji otwierane jest okno Pliki JPK:

W wersjach wcześniejszych niż 2018.1.1 okno to było dostępne z poziomu Narzędzia/ Jednolity Plik Kontrolny.

Na oknie widoczne są pliki wysłane na serwer Ministerstwa Finansów przez program Comarch ERP Optima wersją wcześniejszą niż 2017.3.1 oraz wszystkie pliki wygenerowane od wersji 2017.3.1 i dodane ręcznie przez Użytkownika. Wygenerowane pliki od wersji 2017.3.1 zapisywane są w katalogu do przechowywania plików JPK wskazanym w Konfiguracji Stanowiska/ Ogólne/ Jednolity Plik Kontrolny, jak również w bazie danych programu Comarch ERP Optima.

Na liście prezentowane są takie informacje, jak: operator wysyłający plik JPK, typ pliku, nazwa pliku, numer korekty, data utworzenia, zakres dat danych zawartych w plikach JPK, czy plik został scalony oraz status pliku JPK. Kolumny Okres od i Okres do wyświetlające zakres dat dla danych zawartych w plikach JPK uzupełnione są dla plików JPK wygenerowanych od wersji 2017.3.1. Dla plików wygenerowanych i wysłanych w poprzednich wersjach programu kolumny będą puste. Kolumna Scalony wyświetla dla plików które zostały połączone wartość T, natomiast dla pozostałych wartość N. Istnieje również możliwość dodania domyślnie ukrytej kolumny Czas pokazującej datę i godzinę utworzenia pliku JPK, jak również kolumny JPK_VAT pokazującej czy plik jest obowiązkowy czy na żądanie (po konwersji z wcześniejszych wersji niż 2018.2.1 wszystkie dotychczasowe pliki JPK_VAT otrzymają status Obowiązkowy).

Uwaga
W związku z funkcjonalnością łączenia plików JPK_VAT i możliwością dodania nowych plików JPK, wszystkie pliki wygenerowane w wersjach programu wcześniejszych niż 2017.3.1 ale nie wysłane, po konwersji nie będą widoczne na liście. Istnieje możliwość dodania tych już wygenerowanych plików na listę plików JPK za pomocą ikony .

Możliwe jest filtrowanie plików JPK po typie pliku – służy temu pole Typ pliku. Jako wartość tego pola można wybrać opcję –wszystkie- (wówczas widoczne będą wszystkie pliki JPK bez względu na ich typ) lub wybrać konkretny typ plików (np. JPK_VAT). Domyślnie na liście ustawia się typ plików JPK_VAT. W obszarze filtra znajduje się pole Rok umożliwiające wyfiltrowanie plików JPK dotyczących wybranego roku.

Istnieje możliwość dodania na listę nowych plików JPK (wygenerowanych z poziomu innych baz Comarch ERP Optima lub w programach innych producentów)  – służy do tego ikona Wskaż plik JPK z dysku, aby dodać go na listę . Po kliknięciu ikony pojawia się okno wyboru pliku:

Na otwartym oknie podpowiada się standardowy folder zapisu dla plików JPK dla firmy (określany w Konfiguracji Stanowiska/ Ogólne/ Jednolity Plik Kontrolny, łącznie z podkatalogiem o nazwie zgodnej z nazwą firmy). Po wskazaniu nowego pliku XML zawierającego plik JPK i kliknięciu Otwórz, plik zapisywany jest do bazy i pojawia się na oknie Pliki JPK.

Na oknie znajduje się również ikona Scal pliki JPK_VAT  omówiona w rozdziale 3.3.

U góry okna Pliki JPK znajdują się odnośniki:

3.1    Przygotowanie plików JPK

Aby dodać w programie plik JPK_VAT należy kliknąć na ikonę  – spowoduje to otwarcie okna Przygotowanie pliku JPK_VAT:

Okno wywoływane jest również z poziomu menu kontekstowego po kliknięciu prawym przyciskiem myszy i wybraniu opcji Dodaj, jak również przy pomocy skrótu <Insert>.

Okno zawiera parametry dotyczące plików JPK_VAT. Dla parametru Składam plik JPK istnieje możliwość wyboru dwóch opcji:

      • obowiązkowy (opcja domyślnie zaznaczona),
      • na żądanie Urzędu Skarbowego podczas kontroli.

Uwaga
Opcja dodania plików JPK na żądanie US powinna być wykorzystywana w sytuacji kiedy urząd skarbowy zwróci się o wygenerowanie plików podczas kontroli podatnika.

W polu Za okres wskazywany jest miesiąc i rok za jaki ma zostać wygenerowany plik JPK_VAT. Pole może zostać rozwinięte celem łatwiejszego wybrania odpowiedniego okresu.

Na oknie można zaznaczyć parametr współczynnik szacunkowy struktury sprzedaży i określić jego wartość procentową.

Zaznaczenie parametru Korekta powoduje przeniesienie informacji, że generowany plik JPK_VAT jest korektą – pole CelZlozenia w pliku przyjmuje wówczas wartość 2. W przypadku plików JPK_VAT(3) po zaznaczeniu parametru Korekta istnieje możliwość wpisania numeru korekty. Numer korekty jest uzupełniany automatycznie jako numer kolejny, ale może zostać zmodyfikowany przez Użytkownika. W tym polu nie może zostać wpisana wartość mniejsza niż 1. Numer korekty przenoszony jest do pliku JPK_VAT(3).

Uwaga

W polu Korekta należy podać kolejny numer, tj. jeżeli wcześniej w 2017 r. lub w latach poprzednich złożony został tylko plik pierwotny oznaczony cyfrą”1″ (JPK_VAT(1)), a pierwszej korekty dokonuje się w 2018 r. na nowej strukturze, to należy w polu Korekta wpisać cyfrę „2″, a kolejne korekty za ten sam okres oznaczamy 3, 4, 5 itd.

Jeżeli w 2017 r. złożony został JPK_VAT z oznaczeniem celu złożenia „1″ i potem były złożone korekty z oznaczeniem celu złożenia „2″, to składając kolejną korektę za ten okres już według nowej struktury w 2018 r. należy wpisać „3″ (niezależnie od tego ile w 2017 r. złożono korekt JPK_VAT z oznaczeniem „2″). Kolejne korekty za ten sam okres oznaczamy 4, 5 itd

W 2017 r. przyjęto następującą zasadę oznaczania JPK_VAT 1 – dla pierwotnego JPK_VAT 2 – dla każdej kolejnej korekty JPK_VAT

W 2018 r. przyjęto następującą zasadę oznaczania JPK_VAT: 0 – dla pierwotnego JPK_VAT 1, 2, 3, 4…. dla kolejnych korekt JPK_VAT za ten sam okres.

Pod parametrami wyświetlane są podstawowe informacje dotyczące składania pliku JPK_VAT.

Istnieje możliwość wysłania do arkusza kalkulacyjnego danych znajdujących się w generowanych plikach JPK celem łatwiejszego ich przeglądania. Na oknie Przygotowanie pliku JPK_VAT znajduje się parametr Podczas eksportu utwórz również pliki MS Excel. Po wygenerowaniu pliku JPK z zaznaczonym powyższym parametrem, w zależności od ustawienia parametru Otwieranie wyeksportowanych plików w menu Widok, nastąpi otwarcie arkusza zawierającego wyeksportowane dane (opcja Otwieraj) bądź wyświetlone zostanie pytanie czy plik otworzyć (opcja Pytaj). Tworzony plik arkusza kalkulacyjnego zawiera arkusz dotyczący danych podatnika, agregatów oraz danych poszczególnych dokumentów.

Uwaga
Do eksportu danych JPK do arkusza MS Excel wymagane jest połączenie z Internetem.

Po kliknięciu ikony  Utwórz plik, na liście plików JPK dodany zostanie plik JPK_VAT za podany okres.

Na oknie Pliki JPK istnieje możliwość rozwinięcia ikony plusa – pojawi się wówczas możliwość dodania oprócz pliku JPK_VAT również pozostałych plików JPK:

Po wybraniu drugiej opcji Pozostałe pliki JPK otwierane jest okno:

Okno dodania pozostałych plików JPK może zostać wywołane za pomocą skrótu <Shift>+<Insert>.

Na oknie istnieje możliwość wyboru spośród wszystkich pozostałych (oprócz JPK_VAT) 6 grup danych dla plików JPK:

      • Księgi Handlowe (z opcją uwzględnienia zapisów w buforze),
      • Zapisy KPiR (z opcją uwzględnienia zapisów w buforze),
      • Ewidencja ryczałtowa (z opcją uwzględnienia zapisów w buforze),
      • Wyciągi bankowe (z opcją bądź „poszczególnymi wyciągami” bądź „za okres”),
      • Faktury sprzedaży i zakupu (z możliwością wyboru rodzaju dat na dokumentach dla podanego poniżej zakresu dat),
      • Dokumenty

Na oknie Przygotowanie pliku JPK znajdują się pola, w których należy określić zakres dat za jaki zostaną wyeksportowane dane. Domyślnie po otwarciu okna podpowiada się zakres dat dla poprzedniego miesiąca w stosunku do daty bieżącej, chociaż może on zostać zmieniony przez Użytkownika.

Podany zakres dat nie może być szerszy niż jeden rok kalendarzowy dla zapisów KPiR i ewidencji ryczałtowej. W przypadku wyboru zapisów Księgi Handlowej, zakres dat nie może przekraczać jednego okresu obrachunkowego. Dodatkowo do pliku JPK_KR zostaną wyeksportowane tylko zapisy z bieżącego okresu obrachunkowego.

Na oknie należy wskazać urząd skarbowy, do którego JPK ma zostać skierowany. Domyślnie po wejściu na okno przygotowania plików JPK urząd skarbowy pobierany jest z Konfiguracji Firmy/ Dane firmy/ Deklaracje z pola U.S.  (VAT). Jeżeli urząd skarbowy dla deklaracji VAT będzie nieuzupełniony, wówczas US zostanie pobrany z pola U.S. (PIT‑4R, CIT-8). W przypadku kiedy w żadnym z tych 2 pól w Konfiguracji nie został wskazany urząd skarbowy, wówczas przy pierwszym otwarciu okna przygotowania plików JPK pole z urzędem skarbowym będzie puste i Użytkownik przed przygotowaniem pliku JPK będzie musiał wybrać odpowiedni US. Wybrany urząd skarbowy zostanie zapamiętany przy kolejnym otwarciu okna. Na karcie wybranego urzędu skarbowego musi być uzupełniony czterocyfrowy kod urzędu. W przeciwnym razie przygotowanie pliku nie będzie możliwe.

Istnieje możliwość wysłania do arkusza kalkulacyjnego danych znajdujących się w generowanych plikach JPK celem łatwiejszego ich przeglądania. Na oknie Pliki JPK znajduje się parametr Podczas eksportu utwórz również pliki MS Excel. Po wygenerowaniu pliku JPK z zaznaczonym powyższym parametrem, w zależności od ustawienia parametru Otwieranie wyeksportowanych plików w menu Widok, nastąpi otwarcie arkusza zawierającego wyeksportowane dane (opcja Otwieraj) bądź wyświetlone zostanie pytanie czy plik otworzyć (opcja Pytaj). Tworzony plik arkusza kalkulacyjnego zawiera arkusz dotyczący danych podatnika, agregatów oraz danych poszczególnych dokumentów.

Uwaga
Do eksportu danych JPK do arkusza MS Excel wymagane jest połączenie z Internetem.

Ikona utworzenia pliku JPK  staje się aktywna po zaznaczeniu co najmniej jednej grupy danych oraz wskazaniu urzędu skarbowego.

Podczas eksportu danych do pliku (zarówno JPK_VAT jak i pozostałych plików JPK) następuje weryfikacja poprawności wysyłanych danych poprzez porównanie ze wzorcem dokumentu elektronicznego. Generowany plik jest również weryfikowany pod kątem uzupełnienia pól obowiązkowych.

Uwaga
Występujący w logu podczas generowania plików JPK komunikat:

Nie można odnaleźć informacji schematu dla elementu…

może wynikać z braku możliwości połączenia się z serwerem http://crd.gov.pl, na którym znajdują się wzorce dokumentu elektronicznego z którymi Comarch ERP Optima porównuje generowany plik JPK. Należy sprawdzić na stanowisku ustawienia programu antywirusowego, zapory sieciowej, a w przypadku korzystania z serwera proxy – dodać wyjątek na ten adres. Komunikat może również wynikać z czasowej niedostępności tego serwera. Należy również zweryfikować możliwość nawiązania komunikacji z adresem www.mf.gov.pl.

Możliwe jest wyłączenie sprawdzania poprawności generowanych plików JPK poprzez odznaczenie parametru Sprawdzaj poprawność plików JPK przed wysłaniem, znajdującego się w Konfiguracji Programu/ Ogólne/ e‑deklaracje/JPK.

W przypadku braku danych za okres podany podczas eksportu, pliki JPK nie są tworzone a w logu z przebiegu operacji pojawia się stosowny komunikat.  Wyjątkiem jest plik JPK_VAT, który jest tworzony nawet jeśli za dany okres nie ma zapisów w rejestrze VAT, a Użytkownik jest zobligowany do złożenia pustej deklaracji VAT-7.

Jeżeli w Konfiguracji Stanowiska/ Ogólne/ Jednolity Plik Kontrolny nie ustawiono katalogu dla plików z danymi, wówczas podczas próby przygotowania pliku JPK pojawia się okno z odpowiednim komunikatem.

Podczas eksportu danych do nagłówka pliku JPK_VAT(3) przenoszone są następujące informacje:

      • Zakres dat dla eksportowanych danych
      • Dane identyfikacyjne podatnika pobierane z Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy – NIP oraz Pełna nazwa
      • Adres E-mail (pole opcjonalne) pobierany w pierwszej kolejności z deklaracji VAT-7(18); jeżeli nie jest uzupełniony na deklaracji, zostanie pobrany z Konfiguracji Firmy/ Dane firmy/ VAT, AKC-WW, a jeżeli tam również nie będzie uzupełniony – wówczas z Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy
      • Nazwa programu z którego wygenerowano plik JPK_VAT(3) (w pliku widnieje nazwa „Comarch ERP Optima” wraz numerem wersji)

Podczas eksportu danych do nagłówka pozostałych plików JPK przenoszone są następujące informacje (wyjątek: JPK_PKPiR(2) – uwaga poniżej):

      • Kod urzędu skarbowego (uzupełniany z poziomu Ogólne/ Inne/ Urzędy)
      • Zakres dat dla eksportowanych danych
      • Dane identyfikacyjne oraz adres podatnika pobierane z Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy (NIP, Pełna nazwa, REGON, Kod Kraju, Województwo, Powiat, Gmina, Ulica, Nr domu, Nr lokalu, Miejscowość, Kod pocztowy, Poczta)

Uwaga
W przypadku plików JPK_PKPiR(2) (generowanych za okres od stycznia 2017) pola adresowe podatnika oprócz kodu kraju i miasta nie są już obowiązkowe. W związku z tym podczas generowania pliku JPK_PKPiR(2) nie jest sprawdzane uzupełnienie województwa, powiatu, gminy, nr domu, kodu pocztowego i poczty w Pieczątce firmy (w przypadku pozostałych struktur plików JPK te pola nadal są obowiązkowe i powinny zostać uzupełnione).

Dane te są wymagane przez wzór dokumentu elektronicznego i muszą być uzupełnione w programie przed wysyłką plików JPK.

Uwaga
Jeżeli w Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy numer NIP podatnika jest uzupełniony łącznie z kodem kraju (PL), do plików JPK przenoszone są tylko cyfry z numeru NIP.

3.2 Wysyłka plików JPK

Po rozwinięciu na oknie Pliki JPK ikony Wyślij istnieje możliwość wyboru dwóch sposobów podpisania wysyłanych plików JPK:

      • Wyślij podpisem kwalifikowanym,
      • Wyślij Profilem Zaufanym ePUAP/eGO.

Wybranie pierwszej opcji powoduje wywołanie listy zainstalowanych w systemie Windows certyfikatów służących do elektronicznego podpisywania wysyłanych deklaracji oraz plików JPK.

Uwaga
Jeżeli Użytkownik korzysta z podpisu kwalifikowanego (np. Szafir) podpisując nim w programie Comarch ERP Optima deklaracje np. VAT, a pomimo to podczas wysyłania pliku JPK na liście certyfikatów podpis nie jest widoczny, wówczas należy zaktualizować ze strony producenta aplikację do obsługi karty kryptograficznej i zrestartować komputer.

Warunkiem widoczności certyfikatu jest jego zainstalowanie w systemie operacyjnym. Certyfikat musi być prawidłowy (zaufany). W celu weryfikacji poprawności certyfikatu należy uruchomić program certmgr.msc. W grupie certyfikatów osobistych należy sprawdzić, czy jest widoczny certyfikat, który ma być wykorzystany do podpisu. Jeżeli go nie ma w tym miejscu, oznacza to że certyfikat nie został zainstalowany w systemie Windows.

Po wyświetleniu szczegółów certyfikatu należy na zakładce [Ogólne] upewnić się czy jest on aktualny oraz czy widoczna jest informacja: Masz klucz prywatny, który odpowiada temu certyfikatowi. Dodatkowo na zakładce [Ścieżka certyfikacji] musi być widoczny stan certyfikatu: Ten certyfikat jest prawidłowy – tak jak na poniższych zrzutach ekranu:

Po wybraniu drugiej opcji dla plików o statusie Nie wysłano otwierane jest okno z kreatorem procesu podpisywania pliku JPK Profilem Zaufanym ePUAP/eGO:

Plik JPK przeznaczony do podpisu za pomocą Profilu Zaufanego tworzony jest w katalogu wskazanym w Comarch ERP Optima w Konfiguracji Stanowiska/ Ogólne/ Jednolity Plik Kontrolny w katalogu zgodnym z nazwą firmy w podkatalogu E-PUAP. Informacja o dokładnej ścieżce do pliku znajduje się na oknie Podpisywanie pliku JPK Profilem Zaufanym ePUAP/eGO w pierwszym kroku kreatora. Tam również dostępny jest przycisk Skopiuj link do schowka, którego użycie ułatwia wklejenie ścieżki do katalogu, w którym znajduje się przygotowany plik JPK na stronie ePUAP.

W drugim kroku należy przejść  na stronę www.epuap.gov.pl/wps/portal W górnej części okna widoczny będzie tekst: Masz firmę? Podpisz JPK_VAT profilem zaufanym. Należy wybrać: Podpisz Profilem Zaufanym.

Należy kliknąć na przycisk Podpisz JPK_VAT:

Następnie należy wybrać sposób logowania „profil zaufany”:

Należy zalogować się za pomocą hasła lub wskazać odpowiedni bank:

Po zalogowaniu należy kliknąć w przycisk Wybierz plik z dysku.

Skopiowany w Kroku 1 link należy wkleić w polu Nazwa pliku (np. za pomocą skrótu <CTRL> + <V>).

Po wskazaniu pliku z wybranego katalogu rozpocznie się wczytywanie i sprawdzanie pliku. Ze względu na obciążenie serwerów może to potrwać nawet kilka minut.

Po prawidłowym wczytaniu pliku JPK_VAT, należy kliknąć na przycisk Podpisz profilem zaufanym.

W zależności od wybranej formy weryfikacji, na ekranie pojawi się okno na wpisanie kodu autoryzacyjnego, który jest wysyłany SMS-em bądź na adres mailowy.

W sytuacji, gdy Profil Zaufany zakładany był za pomocą aplikacji bankowej, proces podpisywania pliku wygląda nieco inaczej. Użytkownik po wyborze opcji Podpisz profilem zaufanym zobaczy swoje dane i ponownie wybiera Podpisz profilem zaufanym.

Po tej operacji pojawi się okno autoryzacji podpisania profilem zaufanym i prośba o zalogowanie i potwierdzenie smsem lub kodem ze zdrapki.

Po wykonaniu tych czynności można zapisać na dysku plik JPK_VAT za pomocą opcji Zapisz.

W ostatnim kroku kreatora podpisywania pliku JPK Profilem Zaufanym ePUAP/eGO w Comarch ERP Optima należy zaimportować podpisany plik JPK klikając na przycisk Wybierz podpisany plik JPK. Po wskazaniu pliku pojawia się komunikat: Czy chcesz teraz wysłać podpisany plik?

Wybór opcji Tak powoduje wysłanie pliku JPK i zamknięcie okna z kreatorem podpisywania pliku JPK. Plik na liście otrzymuje status Wysłano/Nie odebrano UPO.

Wybór opcji Nie zamyka okno kreatora podpisywania pliku JPK. Plik na liście otrzymuje status Podpisany Profilem Zaufanym ePUAP/Nie wysłano. Usunięcie z listy pliku o tym statusie usuwa plik również z podkatalogu EPUAP. Pliku już podpisanego nie można ponownie podpisać. Po wybraniu opcji Wyślij Profilem Zaufanym ePUAP/eGO na pliku o statusie Podpisany Profilem Zaufanym ePUAP/Nie wysłano, następuje automatyczna wysyłka pliku bez konieczności ponownego przechodzenia kreatora podpisywania pliku JPK.

Pliku JPK o statusie Podpisany Profilem Zaufanym ePUAP/Nie wysłano nie można wysłać za pomocą podpisu kwalifikowanego. Przy próbie takiej wysyłki pojawia się stosowny komunikat.

Plik JPK podpisany Profilem Zaufanym ePUAP/eGO może zostać wysłany wyłącznie z komputera, na którym został skierowany do podpisu i podpisany.

Równoczesna opcja podpisu i wysyłki pliku JPK Profilem Zaufanym ePUAP/eGO możliwa jest dla pojedynczego pliku. Jeżeli zaznaczono kilka plików JPK o statusie Podpisany profilem zaufanym ePUAP/Nie wysłano możliwa jest ich zbiorcza wysyłka za pomocą opcji podpisu Profilem Zaufanym ePUAP/eGO.

Wysyłka pliku JPK za pomocą Profilu Zaufanego ePUAP/eGO nie jest dostępna z programu Comarch ERP Optima Biuro Rachunkowe.

Na oknie Pliki JPK znajduje się również przycisk  Odbierz służący do odbioru UPO. Aby uniemożliwić nadpisywanie daty odebrania Urzędowego Poświadczenia Odbioru dla plików JPK, nie ma możliwości ponownego pobrania UPO dla plików JPK ze statusem Wysłano/ odebrano UPO.

Z poziomu tego okna możliwe jest również podejrzenie pobranego Urzędowego Poświadczenia Odbioru za pomocą ikony  Podgląd UPO lub za pomocą funkcji Zmień dostępnej w menu kontekstowym po kliknięciu prawym przyciskiem myszy na pliku JPK. Wydruk UPO dostępny jest z poziomu listy plików JPK.

Wybór opcji  Podgląd pliku powoduje otwarcie arkusza kalkulacyjnego zawierającego dane znajdujące się w podświetlonym na liście pliku JPK celem ich weryfikacji. Otwarcie arkusza MS Excel możliwe jest również po wywołaniu funkcji Podgląd dokumentu w menu kontekstowym. Jeżeli w katalogu jest zapisany arkusz kalkulacyjny to on jest otwierany, jeśli go nie ma wówczas arkusz jest tworzony. Wygenerowanie bądź dodanie na listę pliku JPK powoduje zapisanie go do bazy firmowej, więc podgląd pliku będzie zawsze możliwy bez względu na stanowisko na którym wygenerowano bądź dodano plik JPK.

Możliwe jest również usuwanie zaznaczonych plików JPK za pomocą ikony  Usuń. Aby usunięcie pliku JPK było możliwe, musi on mieć inny status niż Wysłano/nie odebrano UPO lub Wysłano/ odebrano UPO. Usunięcie pliku powoduje usunięcie go z listy plików, z bazy danych oraz z katalogu do przechowywania plików JPK.

3.3 Scalanie plików JPK

Istnieje możliwość łączenia plików JPK_VAT w programie Comarch ERP Optima. Użytkownik może wskazać pliki które mają zostać połączone i na podstawie tych plików zostanie utworzony nowy plik zawierający dane z tych wskazanych plików.

Proces łączenia plików JPK_VAT wygląda następująco: Użytkownik powinien zaznaczyć wybrane przez siebie pliki na liście plików JPK i kliknąć ikonę Scal pliki JPK_VAT . Funkcja może zostać również uruchomiona z poziomu menu kontekstowego po kliknięciu prawym przyciskiem myszy na plikach JPK i wybraniu opcji Scal pliki JPK_VAT. Zarówno ikona jak i funkcja w menu kontekstowym jest aktywna po wyfiltrowaniu plików JPK do typu JPK_VAT(wybór w polu Typ pliku wartości JPK_VAT) i zaznaczeniu co najmniej 2 plików.

Na oknie Łączenie plików JPK_VAT można wskazać czy plik ma być złożony jako korekta (parametr Oznacz plik JPK_VAT jako korektę). Podczas scalania plików JPK_VAT(3) po oznaczeniu scalonego pliku jako korekty można wpisać numer tej korekty. Scalane pliki JPK_VAT muszą być w tej samej wersji. Na oknie można również zaznaczyć czy po wygenerowaniu pliku JPK_VAT ma zostać również wygenerowany arkusz kalkulacyjny zawierający dane przeniesione do połączonego pliku.

Na oknie dostępny jest parametr Składam plik JPK z dwiema opcjami:

      • obowiązkowy (opcja domyślnie zaznaczona),
      • na żądanie Urzędu Skarbowego podczas kontroli.

Generowanie pliku rozpoczynane jest po kliknięciu ikony Wykonaj połączenie  . Funkcja może zostać również wywołana poprzez naciśnięcie <F8>.

Warunkiem połączenia plików jest to, aby były to pliki JPK_VAT wygenerowane w  tym samym wzorcu dokumentu elektronicznego – wszystkie pliki we wzorcu JPK_VAT(2) bądź wszystkie we wzorcu JPK_VAT(3) i zawierające dokumenty za ten sam zakres dat (z tym samym rokiem i miesiącem rozliczenia w deklaracji VAT).

Dane dotyczące podatnika składającego połączony plik JPK_VAT pobierane są z Pieczątki firmy (Konfiguracja Firmy/ Dane firmy/ Pieczątka firmy). Pozostałe dane zostaną odpowiednio połączone – wszystkie dokumenty sprzedaży ze wszystkich plików zostaną umieszczone w sekcji dotyczącej Rejestrów sprzedaży. Analogicznie dla rejestrów VAT zakupu. Sekcje zawierające zagregowane dane będą zawierały informacje dotyczące wszystkich pozycji z wszystkich plików. Tak więc suma ilości pozycji z wszystkich łączonych plików będzie zgodna z ilością w pliku zbiorczym. Nowy połączony plik zbiorczy otrzymuje nazwę JPK_VAT_SCALONY_PLN_Data_od_Data_do_Data_i_godzina_utworzenia.

Po utworzeniu zbiorczego pliku JPK_VAT, pliki cząstkowe które podlegały połączeniu zmieniają status z Nie wysłano na Nie podlega. Dopiero w przypadku usunięcia pliku zbiorczego takie pliki otrzymają z powrotem status Nie wysłano. Nie ma możliwości wysłania plików, które uległy połączeniu  – w takim przypadku należy wysłać plik zbiorczy. Nie jest również możliwe usunięcie pliku cząstkowego – należy w pierwszej kolejności usunąć plik wynikowy.

Nie jest możliwe ponowne połączenie plików, które już zostały poddane łączeniu. Wysłane pliki JPK_VAT również nie podlegają połączeniu – łączenie  plików JPK_VAT możliwe jest tylko dla plików o statusie Nie wysłano.

Domyślnie pliki JPK_VAT które zostały połączone są ukrywane, ale można je wywołać na listę plików JPK. Służy temu parametr Pokaż scalone. Pliki cząstkowe, które zostały  połączone, wyświetlane są na liście plików w kolorze szarym.

W kolejnych rozdziałach biuletynu opisane zostały szczegółowe informacje dotyczące eksportu poszczególnych grup danych do plików JPK.

4 Rejestry VAT – JPK_VAT

Uwaga
Znajdujący się na dokumentach w Rejestrze VAT parametr JPK_FA opisany został w rozdziale dotyczącym faktur. Parametr nie dotyczy plików JPK_VAT składanych obowiązkowo co miesiąc. Należy zaznaczyć go w przypadku, gdy na żądanie US podatnik jest zobligowany do złożenia pliku z fakturami (JPK_FA), które wprowadzone zostały ręcznie do rejestru VAT z pominięciem modułu Handel.

Podczas eksportu Rejestrów VAT istnieje możliwość zaznaczenia parametru współczynnik szacunkowy struktury sprzedaży. Domyślnie parametr nie jest zaznaczony. Wówczas w polu obok parametru program wylicza wartość współczynnika na podstawie dokumentów w Rejestrze VAT Sprzedaży za rok poprzedni w stosunku do roku określonego w polu Zakres dat od: na oknie przygotowania plików JPK. Do wyliczenia wartości współczynnika brane są pod uwagę dokumenty, które na pozycji w kolumnie Uwz. w proporcji mają ustawione Uwzględniaj lub Tylko w mianowniku. Proporcja jest wyliczana jako iloraz, gdzie w liczniku znajduje się roczny obrót z tytułu czynności, w związku z którymi podatnik ma prawo do obniżenia podatku należnego, a w mianowniku całkowity roczny obrót podatnika (łącznie np. z subwencjami). Współczynnik szacunkowy struktury sprzedaży służy do przemnożenia wartości z pozycji dokumentów z Rejestru VAT Zakupu, które w kolumnie Odliczenia mają ustawione Warunkowo.

Po zaznaczeniu parametru pole z wartością współczynnika jest odblokowywane i Użytkownik może wpisać wartość inną niż wyliczona przez program. Możliwe jest wpisanie wartości współczynnika szacunkowego struktury

sprzedaży z dokładnością do dwóch miejsc po przecinku. Ma to zastosowanie w związku z centralizacją jednostek budżetowych kiedy jednostki podległe mają obowiązek przesyłania plików JPK do jednostek nadrzędnych (gmin) z niezaokrąglonymi wartościami współczynników i prewspółczynników.

Wpisywana wartość szacunkowego współczynnika struktury sprzedaży zapamiętywana jest dla operatora w kontekście każdej firmy osobno. Dzięki temu po zalogowaniu tego operatora do konkretnej bazy i przygotowywania kolejnego pliku JPK_VAT, wpisana poprzednio wartość współczynnika dla tej firmy jest podpowiadana przez program.

Pliki JPK_VAT generowane za okres od stycznia 2018 roku, jak również korekty plików  JPK_VAT za okresy wcześniejsze, tworzone są wzorcem dokumentu elektronicznego JPK_VAT(3). Dla plików JPK_VAT(3) zastosowanie ma znajdujący się na oknie Przygotowanie pliku JPK_VAT parametr Korekta, którego zaznaczenie powoduje oznaczenie składanego pliku jako korekty.

Podczas eksportu Rejestrów VAT do plików JPK przenoszone są m.in. następujące dane:

W przypadku plików JPK_VAT(3):

Dla Rejestru VAT zakupu:

      • Nazwa i identyfikator (NIP w przypadku podmiotu gospodarczego, w przypadku osób fizycznych wstawiana jest wartość BRAK) podmiotu z zapisu w rejestrze VAT ‑ pola obowiązkowe; w przypadku nieuzupełnienia pól na dokumencie do pliku JPK_VAT(3) przenoszona jest wartość BRAK
      • Dane adresowe podmiotu z zapisu w rejestrze VAT (Miasto, Ulica, Nr domu/lokalu, Kod pocztowy, Poczta (jeżeli jest inna niż Miasto)) – pola obowiązkowe; w przypadku nieuzupełnienia pól na dokumencie do pliku JPK_VAT(3) przenoszona jest wartość BRAK
      • Data wpływu
      • Data wystawienia
      • Numer dokumentu
      • Kwoty podzielone według kwalifikacji na deklaracji VAT-7

Dla Rejestru VAT sprzedaży:

      • Nazwa i identyfikator (NIP w przypadku podmiotu gospodarczego, w przypadku osób fizycznych wstawiana jest wartość BRAK) podmiotu z zapisu w rejestrze VAT ‑ pola obowiązkowe; w przypadku nieuzupełnienia pól na dokumencie do pliku JPK_VAT(3) przenoszona jest wartość BRAK; jeżeli dokument jest Paragonem przeniesionym bezpośrednio do rejestru VAT z modułu Handel/Faktury lub ma powiązanie z Paragonem, wówczas w polu określającym nazwę odbiorcy pojawia się opis SPRZEDAŻ PARAGONOWA
      • Dane adresowe podmiotu z zapisu w rejestrze VAT (Miasto, Ulica, Nr domu/lokalu, Kod pocztowy, Poczta (jeżeli jest inna niż Miasto)) – pola obowiązkowe; w przypadku nieuzupełnienia pól na dokumencie do pliku JPK_VAT(3) przenoszona jest wartość BRAK; jeżeli dokument jest Paragonem przeniesionym bezpośrednio do rejestru VAT z modułu Handel/Faktury lub ma powiązanie z Paragonem, wówczas w polu określającym adres odbiorcy pojawia się opis SPRZEDAŻ PARAGONOWA
      • Data wystawienia i data sprzedaży (o ile różni się od daty wystawienia)
      • Numer dokumentu
      • Kwoty podzielone według kwalifikacji na deklaracji VAT-7

Dane te są wymagane przez wzór dokumentu elektronicznego i muszą być uzupełnione w programie przed wysyłką plików JPK.

W logu z procesu generowania pliku JPK_VAT(3) pojawia się informacja/ostrzeżenie dla jakich dokumentów i do jakich pól wstawiono do pliku wartość BRAK/SPRZEDAŻ PARAGONOWA wraz z sugestią, aby Użytkownik zweryfikował poprawność tych dokumentów. W przypadku raportu dobowego lub faktury dla osoby fizycznej brak

numeru NIP nie jest błędem, natomiast w przypadku np. faktury sprzedaży dla podmiotu gospodarczego dane takie jak numer NIP, nazwa i adres odbiorcy powinny zostać uzupełnione na dokumencie a plik JPK_VAT ponownie wygenerowany.

W przypadku dokumentów wewnętrznych sprzedaży i zakupu rozliczających transakcje (m.in. nabycia wewnątrzunijnego, importu usług, zakupu z odwrotnym obciążeniem) do pliku JPK_VAT jako numer dokumentu przenoszony jest numer dokumentu pierwotnego z rejestru zakupu. Warunkiem jest powiązanie dokumentów wewnętrznych z dokumentem źródłowym. W związku z tym kiedy takiego powiązania nie ma (dokumenty wewnętrzne dodane ręcznie do rejestru VAT bądź zaimportowane mechanizmem pracy rozproszonej), dokumenty wewnętrzne do pliku JPK_VAT zostaną przeniesione z własnym numerem dokumentu.

Dokumenty wewnętrzne będące korektą paragonów przekształconych do faktur przenoszone są do pliku JPK_VAT z numerem dokumentu wewnętrznego.

Wykonanie korekty danych z poziomu korekt faktury w module Handel / Faktury nie spowoduje zmiany na dokumencie w Rejestrze VAT – zmiany danych na dokumencie należy dokonać ręcznie. Dokument Faktura korygująca dane nie jest przenoszony do Rejestrów VAT.

Do plików JPK_VAT(3) przenoszone są wszystkie zapisy korekcyjne wygenerowane z załącznika VAT-ZD za wskazany okres. Pozycje na tych zapisach z odliczeniami warunkowymi są przeliczane przez określony na oknie przygotowania plików JPK współczynnik szacunkowy struktury sprzedaży.

W celu wykazywania wartości w odpowiednich polach w plikach JPK dla Rejestrów VAT, wprowadzone zostały następujące atrybuty dokumentów:

      • KOREKTA ŚR. TRWAŁYCH (Korekta podatku naliczonego od nabycia środków trwałych),
      • KOREKTA POZ. NABYĆ (Korekta podatku naliczonego od pozostałych nabyć),
      • VAT-ZD ZAKUP NIEZAPŁ (Korekta podatku naliczonego, zgodnie z Art. 89b ust. 1),
      • VAT-ZD ZAKUP ZAPŁAC. (Korekta podatku naliczonego, zgodnie z Art. 89b ust. 4),
      • PODATEK OD SPISU (Podatek należny od towarów objętych spisem z natury),
      • ZWROT ZA KASĘ FISKAL (Zwrot odliczonej lub zwróconej kwoty wydatkowanej na zakup kas rejestrujących),
      • NAB.PALIW SILN. (Podatek od wewnątrzwspólnotowego nabycia paliw silnikowych); atrybut ten będzie wykorzystany po pojawieniu się wzoru dokumentu elektronicznego dla pliku JPK_VAT zgodnego z deklaracją VAT-7(17),
      • NABYCIE ŚR.TRAN (Wewnątrzwspólnotowe nabycie środków transportu).

Pierwsze 4 atrybuty powinny być wybierane na dokumentach w rejestrze zakupu VAT, natomiast kolejne 4 na dokumentach w rejestrze sprzedaży VAT.

Uwaga
W przypadku kiedy w programie utworzony został załącznik VAT-ZD o typie zakup i wygenerowany/e z niego zapis/y korekcyjny/e, atrybutów VAT‑ZD ZAKUP NIEZAPŁ oraz VAT-ZD ZAKUP ZAPŁAC. nie należy dodawać na dokumentach w rejestrze VAT ponieważ spowoduje to duplikację kwot w pliku JPK_VAT. Zapisy korekcyjne z VAT-ZD o typie zakup są wykazywane w pliku JPK_VAT jako korekta zgodnie z Art. 89b, odpowiednio ust. 1 lub 4.

Podobnie w przypadku atrybutu WEWN.NABYCIE ŚR.TRAN – jeżeli na przeliczanej w programie Comarch ERP Optima deklaracji VAT-7pole Podatek od wewnątrzwsolnotowego nabycia środków transportu jest uzupełniane automatycznie przez program na podstawie wprowadzonych dokumentów, atrybutu nie należy stosować.

Wspomniane atrybuty należy wykorzystywać tylko pod warunkiem, że odpowiadające im pola na deklaracji VAT-7 Użytkownik uzupełnia ręcznie.

Jest to związane z tym, że sumy dla dokumentów z rejestrów VAT w plikach JPK powinny być zgodne z deklaracją VAT-7 za ten sam okres, natomiast m.in. pola 47 Korekta podatku naliczonego od nabycia środków trwałych oraz 48 Korekta podatku naliczonego od pozostałych nabyć (numeracja wg deklaracji VAT-7 wersja 17) mogą być wyliczane na podstawie dokumentów z poprzednich okresów bądź uzupełniane ręcznie. W związku z tym jeżeli na deklaracji VAT-7 pojawiły się wartości w polach 36, 37, 39, 47 lub 48, należy do rejestru VAT zakupu dodać odpowiedni dokument techniczny. Dokument taki nie musi posiadać żadnej pozycji, natomiast należy wybrać na nim odpowiedni wskazany powyżej atrybut (jeden bądź więcej) uzupełniając jego wartość kwotą z odpowiadających im pól na deklaracji. W celu spełnienia wymagań wzorca dokumentu elektronicznego, należy uzupełnić numer dokumentu (np.: Dokument techniczny do deklaracji VAT-7 pod plik JPK_VAT). Zalecamy kontakt z Urzędem Skarbowym celem uzgodnienia jakie dane powinny się na tego typu dokumentach znaleźć.

W przypadku korzystania z atrybutów VAT-ZD ZAKUP NIEZAPŁ lub VAT-ZD ZAKUP ZAPŁAC należy na wprowadzonych dokumentach nie dodawać pozycji, natomiast uzupełnić numer dokumentu oraz wskazać kontrahenta jaki występował fakturze która ma zostać skorygowana.

Wymienione atrybuty należy w razie potrzeby dodać na dokumencie w Rejestrze VAT na zakładce [Atrybuty] w sekcji JPK_VAT. W tej sekcji można wskazać atrybut widoczny na liście atrybutów (Ogólne/ Atrybuty) na zakładce [JPK], który ma zaznaczony parametr JPK_VAT.

Atrybut z zaznaczonym parametrem JPK_VAT oraz dodatkowo zaznaczonym parametrem przenosić na transakcje zostanie automatycznie dodany na każdym nowo dodawanym dokumencie w rejestrze VAT.

Podczas eksportu Rejestrów VAT do plików JPK wysyłane są dokumenty mające określony miesiąc kwalifikacji na deklaracji VAT-7 (parametr Rozliczać w deklaracji VAT na dokumencie) zgodny z określonym podczas eksportu danych. W przypadku Rejestru VAT zakupu, eksportowane są tylko dokumenty mające na pozycjach w kolumnie Odliczenia ustawione Tak lub Warunkowo oraz stawkę VAT inną niż ZW i NP. Dodatkowo wpływ na eksportowane dane mają ustawienia parametrów w Konfiguracji Programu/ Księgowość/ Deklaracje. Porównując eksportowane dokumenty należy więc korzystać z drugiej zakładki na rejestrze VAT: [Do deklaracji VAT-7]. Dodatkowo w plikach JPK_VAT wykazywane są dokumenty z rejestru sprzedaży VAT zawierające pozycje ze stawką 4% (faktury taksówkarzy). Pozycje wykazywane są w pliku JPK_VAT polach K_17 (wartość netto) oraz K_18 (wartość VAT), natomiast te dokumenty nie są wykazywane w deklaracji VAT-7.

W przypadku dokumentów mających dodany atrybut o typie JPK_VAT oraz zapisów korekcyjnych wygenerowanych z załącznika VAT-ZD, do pliku JPK_VAT tego typu dokumenty przenoszone są bez względu na to czy parametr Rozliczać w deklaracji VAT jest na nich zaznaczony czy nie.

W przypadku braku zapisów w rejestrze zakupów bądź rejestrze sprzedaży za podany podczas eksportu okres, tworzony plik JPK będzie zawierał informacje tylko o tym typie rejestru, w którym były zapisy. Jeżeli w określonym podczas przygotowania plików JPK okresie czasu nie ma zapisów w rejestrze VAT zakupu ani sprzedaży, wówczas jest generowany plik JPK_VAT zawierający tylko dane nagłówkowe i dane podatnika.

5 Księgi Handlowe – JPK_KR

W przypadku zaznaczenia opcji Księgi Handlowe na oknie przygotowania plików JPK istnieje możliwość wskazania, czy mają być eksportowane również zapisy znajdujące się w buforze – parametr Uwzględniaj zapisy w buforze. Domyślnie jest on zaznaczony. W pliku JPK zapisy księgowe znajdujące się w buforze rozróżnione są od zapisów zatwierdzonych poprzez oznaczenie numeru dziennika znacznikiem (b).

Podczas eksportu zapisów z Ksiąg Handlowych do plików JPK przenoszone są m.in. następujące dane:

      • Dane nagłówka pliku JPK (opisane w Rozdziale 3.1)
      • Dane dotyczące kont księgowych (Numer konta, Typ, Nazwa, Bilans otwarcia dla konta, Obroty konta za podany okres, Obroty narastająco, Saldo konta)
      • Dane dotyczące nagłówków zapisów księgowych:
        • Nr dziennika cząstkowego
        • Nazwa dziennika
        • Numer dokumentu
        • Data księgowania
        • Data Operacji
        • Data wystawienia
        • Akronim operatora (z pola Zmodyfikował)
        • Opis operacji (wartość wymagana)
      • Dane dotyczące pozycji zapisów księgowych:
        • Numery kont Wn i Ma
        • Symbol waluty na pozycji dekretu
        • Kwota w PLN i w walucie
        • Opis na pozycji dekretu (niewymagany, może być nieuzupełniony)

Dane te są wymagane przez wzór dokumentu elektronicznego i muszą być uzupełnione w programie przed wysyłką plików JPK.

Dane dotyczące kont pozabilansowych nie są wysyłane do pliku JPK.

W przypadku braku zapisów mających daty księgowania za podany podczas eksportu okres, pliki JPK nie są tworzone.

6 Zapisy KPiR – JPK_PKPIR

W przypadku zaznaczenia opcji Zapisy KPiR na oknie przygotowania plików JPK istnieje możliwość wskazania, czy mają być eksportowane również zapisy znajdujące się w buforze – parametr Uwzględniaj zapisy w buforze. Domyślnie jest on zaznaczony.

Pliki JPK_PKPiR dla zapisów z księgi podatkowej generowane za okres od stycznia 2017 roku tworzone są nowym wzorcem dokumentu elektronicznego – JPK_PKPiR(2). Zapisy za wcześniejsze okresy są wysyłane poprzednią wersją wzorca.

Podczas eksportu zapisów KPiR do plików JPK przenoszone są m.in. następujące dane:

      • Dane nagłówka pliku JPK (opisane w Rozdziale 3.1)
      • Wartość spisu z natury na początek roku podatkowego (wartość z kolumny 15 spisu za miesiąc styczeń roku, z którego dane są eksportowane)
      • Wartość spisu z natury na koniec roku podatkowego (wartość z kolumny 15 spisu za miesiąc grudzień roku, z którego dane są eksportowane)
      • Liczba porządkowa zapisu KPiR
      • Data operacji gospodarczej
      • Numer dowodu
      • Nazwa podmiotu z zapisu KPiR – pole obowiązkowe
      • Dane adresowe podmiotu z zapisu KPiR (Miasto, Ulica, Nr domu/lokalu, Kod pocztowy) – pola obowiązkowe
      • Opis z zapisu KPiR – pole obowiązkowe
      • Kwoty dla poszczególnych kolumn od 7 do 16 na zapisie KPiR
      • Wartość z kolumny Uwagi na zapisie KPiR (pole opcjonalne)

Dane te są wymagane przez wzór dokumentu elektronicznego i muszą być uzupełnione w programie przed wysyłką plików JPK.

Zaznaczenie parametru Korekta nie ma wpływu na generowanie pliku JPK_PKPiR – plik zawsze wysyłany jest jako pierwotnie złożony.

Zapisy skreślone nie są eksportowane do plików JPK.

W przypadku braku zapisów mających datę księgowania za podany podczas przygotowania plików okres, pliki JPK nie są tworzone.

Uwaga
W związku z wymaganiami wzoru dokumentu elektronicznego, należy uzupełnić spis z natury na koniec roku (nawet jeśli spis na koniec roku jest równy spisowi na początek roku). Jest to niezbędne aby został prawidłowo wyliczony dochód w pliku JPK podczas eksportu danych za cały rok.

7 Ewidencja ryczałtowa – JPK_EWP

W przypadku zaznaczenia opcji Ewidencja ryczałtowa na oknie przygotowania plików JPK istnieje możliwość wskazania, czy mają być eksportowane również zapisy znajdujące się w buforze – parametr Uwzględniaj zapisy w buforze. Domyślnie jest on zaznaczony.

Podczas eksportu ewidencji ryczałtowej do plików JPK przenoszone są m.in. następujące dane:

      • Dane nagłówka pliku JPK (opisane w Rozdziale 3.1)
      • Liczba porządkowa zapisu w ewidencji
      • Data wpisu do ewidencji
      • Data uzyskania przychodu
      • Numer dokumentu
      • Kwoty dla poszczególnych stawek

Dane te są wymagane przez wzór dokumentu elektronicznego i muszą być uzupełnione w programie przed wysyłką plików JPK.

Zapisy skreślone nie są eksportowane do plików JPK. Nie są również przesyłane zapisy związane z ewidencją produktów rolnych (2%).

W przypadku braku zapisów mających daty wpisu do ewidencji za podany podczas eksportu okres, pliki JPK nie są tworzone.

8 Wyciągi bankowe – JPK_WB

W przypadku wybrania opcji Wyciągi bankowe na oknie przygotowania plików JPK istnieje możliwość określenia w jaki sposób mają być wysyłane dane.

Domyślnie zaznaczona opcja poszczególnymi wyciągami spowoduje wygenerowanie tyle plików JPK ile było raportów bankowych w podanym zakresie dat. Dla każdego rejestru bankowego będą generowane oddzielne pliki dla każdego wyciągu. W przypadku kiedy wyciągi będą za inny okres niż miesięczny i ten okres nie będzie się pokrywał z zakresem dat wskazanym przed eksportem, wówczas wyeksportowane zostaną wszystkie wyciągi, które będą miały daty otwarcia bądź zamknięcia zawierające się w tym zakresie dat, nawet jeżeli tylko część dni z wyciągu będzie zawierać się w podanym zakresie dat.

Wybór opcji za okres spowoduje wygenerowanie tyle plików ile jest rejestrów o typie Konto bankowe. Dla każdego rejestru bankowego zostanie utworzony jeden plik za cały zakres dat.

Na oknie generowania plików JPK dla wyciągów bankowych istnieje możliwość wyboru rejestru bankowego, z którego będą eksportowane operacje do pliku JPK. W polu Rachunek bankowy można wybrać czy mają być eksportowane zapisy z wszystkich, czy z jednego wybranego rejestru bankowego.

Eksportowane są tylko wyciągi zawierające zapisy (nie są eksportowane puste raporty). Eksportowane są również otwarte raporty.

Podczas eksportu wyciągów bankowych do plików JPK przenoszone są m.in. następujące dane:

      • Dane nagłówka pliku JPK (opisane w Rozdziale 3.1)
      • Numer rachunku wpisany na formularzu rejestru kasowego/bankowego
      • Symbol waluty rachunku bankowego
      • Liczba porządkowa zapisu K/B
      • Data zapisu K/B
      • Nazwa podmiotu z zapisu K/B
      • Opis z zapisu K/B (przenoszonych jest pierwszych 256 znaków)
      • Kwota operacji

Numer rachunku bankowego określany na formularzu rejestru bankowego musi być w formacie IBAN. Zgodnie wymaganiami Ministerstwa Finansów, tylko takie rachunki zostaną wyeksportowane za pomocą pliku JPK_WB. W sytuacji kiedy w systemie numer rachunku zapisany jest jako numer w standardzie IBAN jednak bez kodu kraju PL, kod ten jest automatycznie dodawany podczas wysyłki do pliku.

Dane te są wymagane przez wzór dokumentu elektronicznego i muszą być uzupełnione w programie przed wysyłką plików JPK.

9 Faktury – JPK_FA

Dla każdej waluty, w jakiej zostały wystawione dokumenty w danym okresie, podczas przygotowania pliku tworzony jest osobny plik JPK_FA. Na dokumentach walutowych wartość netto wykazywana jest w walucie dokumentu, natomiast kwota VAT w PLN. Podczas generowania plików JPK_FA istnieje możliwość wyboru waluty. Jeśli w bazie istnieją waluty nieaktywne, wówczas na liście takie waluty widoczne są w kolorze czerwonym. Domyślne ustawienie pola pozwala na eksport dokumentów we wszystkich walutach. Po wyborze konkretnej waluty tworzony jest plik zawierający tylko dokumenty w tej walucie.

      • JPK_FA nie musi zawierać faktur zakupowych, natomiast struktura JPK_ VAT zawiera faktury zakupowe, z których podatnikowi przysługuje prawo do zmniejszenia podatku należnego,
      • Faktury, na których oprócz standardowych stawek pojawiają się też stawki NP. lub zw dla zakupów będą trafiały do pliku JPK_FA w całości, a na deklarację VAT-7 (w tym do pliku JPK_VAT) bez pozycji w tych stawkach,
      • JPK_FA nie zawiera sprzedaży detalicznej (paragonów), transakcje te natomiast wykazywane są w pliku JPK_VAT,
      • Korekta faktury in minus, której potwierdzenia odbioru od kupującego nie uzyskał podatnik – w pliku JPK_FA zostanie wykazana, natomiast w strukturze JPK_VAT pojawi się wówczas, gdy spełnione zostaną dodatkowe przesłanki dające podatnikowi prawo do obniżenia podstawy opodatkowania,
      • Faktura z oznaczeniem „metoda kasowa” jest wykazana w pliku JPK_VAT w okresie, w którym została ona zapłacona w całości lub części (odliczenie VAT dotyczy wyłącznie tej części). Dokument ten natomiast w pliku JPK_FA będzie wykazywany w całości niezależnie od terminu zapłaty.

Podczas eksportu Faktur do plików JPK przenoszone są m.in. następujące dane:

      • Dane nagłówka pliku JPK (opisane w Rozdziale 3.1)
      • Dane dotyczące nagłówków faktur:
        • Data wystawienia dokumentu
        • Numer dokumentu (dla Faktur Zakupu numer obcy)
        • Nazwa i dane adresowe Nabywcy (dla Faktur Zakupu dane Nabywcy pobierane z Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy
        • Nazwa i dane adresowe sprzedawcy (dla Faktur Zakupu dane Dostawcy)
        • Numer NIP sprzedawcy
        • Numer NIP nabywcy (do pliku przysyłany jest wyłącznie dziesięcioznakowy NIP Nabywcy. W przypadku NIP-u o innej długości, wartość w pliku JPK_FA.xml nie jest uzupełniana)
        • Data zakończenia transakcji (dla Faktur Sprzedaży – data sprzedaży, dla Faktur Zakupu – data zakupu, dla Faktur Zaliczkowych – data wystawienia, dokumenty korygujące – data korekty)
        • Suma kwot netto sprzedaży w danej stawce
        • Kwota podatku VAT w danej stawce
        • Wartość brutto (kwota netto + wartość podatku VAT) w walucie dokumentu
        • Rodzaj dokumentu (dla Faktur – VAT, dla Faktur Zaliczkowych – ZAL, dla dokumentów korygujących – KOREKTA, dla innych dokumentów – POZ)
      • W przypadku Faktur VAT Marża uzupełniane jest pole dotyczące procedury marży
      • W przypadku dokumentów korygujących przenoszone są również następujące dane:
        • Cena (jako różnica pomiędzy ceną pierwotną i korektą), wartości oraz ilości zgodnie z danymi na korekcie. Korekty (wartości) do Faktur Zaliczkowych są uwzględniane w pliku w analogicznej formie jak korekty wartości wystawione do zwykłej Faktury Sprzedaży.
        • Przyczyna korekty. Na potrzeby generowania pliku JPK, dla dokumentów korygujących wprowadzono możliwość zmiany przyczyny korekty na zatwierdzonych dokumentach w module Handel / Faktury. Operator może dokonywać takich zmian, jeśli na jego karcie w Konfiguracji/Program/Użytkowe/Operatorzy na zakładce [Parametry] zostanie zaznaczony parametr Zmiana opisu i osoby odbierającej na dok.
        • Numer faktury korygowanej (dla Faktur Zakupu numer obcy korygowanego dokumentu)
        • Dla dokumentu Korekta Zbiorcza/Rabat przenoszona jest data sprzedaży od – do, czyli okres, do którego odnosi się udzielony rabat (data od – najniższa data sprzedaży, data do – najwyższa data sprzedaży Faktury, której dotyczy korekta). W przypadku pozostałych rodzajów korekt w polu wskazana jest data korekty od – do.
        • Na dokumencie Korekta Zbiorcza/Rabat nie jest ujęta lista towarów, ale wartość sprzedaży za dany okres w poszczególnych stawkach VAT. W związku z tym, w pliku JPK w części dotyczącej szczegółów pozycji z faktur, wartość korekty dla każdej stawki VAT będzie uwzględniona jako osobna pozycja. Ponadto, nie będzie tutaj uzupełniana nazwa towaru / usługi, a pola dotyczące jednostki miary oraz ilości będą uzupełniane wartościami „szt” oraz „1”.
        • W przypadku korekty stawki VAT, jeżeli korekta liczona jest od wartości brutto, cena jednostkowa netto ani wartość netto nie są uzupełniane w pliku, natomiast w polach dotyczących ceny i wartości brutto wpisywane jest 0. Gdy korekta stawki VAT liczona jest od wartości netto, pola dotyczące ceny i wartości brutto nie są uzupełniane, natomiast w polach dotyczące ceny i wartości netto wpisywane jest 0.
      • W przypadku Faktur Zaliczkowych przenoszone są również następujące dane:
        • Otrzymana kwota zapłaty
        • Kwota podatku od tej zapłaty
      • Dane podsumowujące listę faktur – sumy kontrolne, gdzie uwzględnione są dane:
        • Liczba faktur w pliku
        • Łączna wartość kwot brutto faktur w pliku
      • Zestawienie stawek podatku VAT:
        • Stawka1 – stawka podstawowa 23% lub 22% (domyślnie 23%)
        • Stawka2 – stawka obniżona 8% lub 7% (domyślnie 8%)
        • Stawka3 – stawka obniżona 5% (domyślnie 5%)
        • Stawka4 – stawka obniżona trzecia (domyślnie 0%) – tutaj przenoszone są wartości faktur, które oznaczone są jako odwrotne obciążenie
        • Stawka5 – stawka obniżona czwarta (domyślnie 0%) – tutaj przenoszone są wartości faktur, które nie podlegają opodatkowaniu
      • Szczegółowe zestawienie pozycji faktur w pliku
        • Numer dokumentu (dla Faktur Zakupu numer obcy)
        • Nazwa towaru lub usługi
        • Jednostka miary z dokumentu
        • Ilość produktu w jednostce z dokumentu
        • Cena jednostkowa netto towaru w walucie dokumentu
        • Cena jednostkowa brutto towaru w walucie dokumentu
        • Wartość sprzedaży netto
        • Wartość sprzedaży brutto
        • Stawka podatku
      • Dane podsumowujące listę wierszy faktur – sumy kontrolne, gdzie uwzględnione są dane:
        • Suma wszystkich wierszy – elementów z faktur w pliku
        • Łączna wartość brutto wszystkich wierszy – elementów z faktur w pliku

W przypadku, gdy w Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy – jednostka samorządowa został zaznaczony parametr Jednostka podlega pod, wówczas do pliku JPK_FA dla faktur sprzedaży jako dane sprzedawcy, a dla zakupu jako dane nabywcy przenoszone są dane z Pieczątki firmy – jednostka samorządowa. Dotyczy zarówno dokumentów wystawianych w module Handel/Faktury jak i w rejestrze VAT.

Numer NIP kontrahenta z dokumentu jest przenoszony do pliku JPK_FA tylko dla transakcji o statusie KrajowaKrajowa – podatnikiem jest nabywca.

W pliku JPK_FA nie są uwzględniane informacje o kaucjach. Jeżeli zatem na dokumentach FA lub FZ, pobranych do pliku występowały pozycje związane z opakowaniami kaucjonowanymi, dane dotyczące kwot kaucji nie będą zaczytane do pliku JPK.

Dla Faktur Zaliczkowych pozycje dokumentu są przenoszone z Faktury Pro Forma. FPF będą zatem przeniesione dane o ilości, jednostce miary, cenie netto i wartości netto pozycji. W polu zawierającym informację o wartości brutto dokumentu, jest  wstawiana wartość wpłaconej zaliczki. Niezależnie od algorytmu liczenia Faktury Pro Forma (od wartości netto, bądź od wartości brutto), wartości z Faktury Zaliczkowej ujęte w szczegółach pozycji w pliku, są zawsze wartościami netto.

Dla faktur finalnych, do pliku JPK przenoszone są dane zgodnie z wartościami na fakturze finalnej. Wartości w poszczególnych stawkach VAT oraz wartość brutto dokumentu ogółem (wartość z faktury pomniejszona o kwotę użytych zaliczek), sąięc przeniesione z faktury finalnej. Również w części dotyczącej poszczególnych pozycji z dokumentu, w pliku uwzględniane są kwoty i ilości zgodne z fakturą finalną.

W celu wykazywania wartości w odpowiednich polach w plikach JPK, dla faktur wprowadzone zostały następujące atrybuty dla dokumentów handlowych:

      • SAMOFAKTUROWANIE (faktury wystawiane metodą samofakturowania) – atrybut o typie tekst bez domyślnej wartości, atrybut należy dodać na dokument wystawiony metodą samofakturowania, aby taki dokument został poprawnie zarejestrowany w pliku JPK
      • POLSKA USTAWA (przyczyna zastosowania zwolnienia na podstawie Art. 43 ust. 1 ustawy o VAT) – atrybut o typie lista, przed użyciem atrybutu należy ręcznie uzupełnić wartości listy, wpisując który punkt z ustawy daje podstawę do zwolnienia
      • DYREKTYWA UNIJNA (przyczyna zastosowania zwolnienia na mocy artykułu 141 dyrektywy 2006/112/WE) – atrybut o typie lista, przyjmuje wartość: Faktura WE uproszczona na mocy artykułu 141 dyrektywy 2006/112/WE
      • INNE ZWOLNIENIA (inna przyczyna zastosowania zwolnienia)
      • FA NA RZECZ DŁUŻNIKA (faktura wystawiona w imieniu, na rzecz dłużnika; jako wartość atrybutu należy wprowadzić kod kontrahenta, który jest organem egzekucyjnym lub komornikiem) – w bazie danych należy założyć kartę kontrahenta dla komornika lub dla organu egzekucyjnego, który będzie wystawiał faktury w imieniu i na rzecz dłużnika. Na karcie kontrahenta należy uzupełnić pola Kod, Nazwa oraz dane adresowe. Dane te są wymagane, ponieważ są one przenoszone do pliku JPK. Kod takiego kontrahenta należy następnie wprowadzić na listę wartości atrybutu. Jego dane zostaną wówczas automatycznie przeniesione do pliku JPK. Jeśli na listę zostanie wprowadzony niepoprawny kod kontrahenta, np. kod kontrahenta, którego nie ma w bazie, pola w pliku dotyczące organu egzekucyjnego lub komornika nie zostaną uzupełnione.
      • PRZEDSTAWICIEL PODAT (faktura wystawiona w imieniu, na rzecz podatnika; jako wartość atrybutu należy wprowadzić kod kontrahenta, który jest przedstawicielem podatkowym) – w bazie danych należy założyć kartę kontrahenta dla przedstawiciela podatkowego, który będzie wystawiał faktury w imieniu i na rzecz podatnika. Na karcie kontrahenta należy uzupełnić pola Kod, Nazwa, dane adresowe oraz numer NIP. Dane te są wymagane, ponieważ są one przenoszone do pliku JPK. Kod takiego kontrahenta należy następnie wprowadzić na listę wartości atrybutu. Jego dane zostaną wówczas automatycznie przeniesione do pliku JPK. Jeśli na listę zostanie wprowadzony niepoprawny kod kontrahenta, np. kod kontrahenta, którego nie ma w bazie, pola w pliku dotyczące przedstawiciela podatkowego nie zostaną uzupełnione.
      • DATA DOPUSZCZ. POJ (data dopuszczenia nowego środka transportu do użytku) – atrybut o typie data, bez domyślnej wartości. Użytkownik uzupełnia datę dopuszczenia nowego środka transportu do użytku.
      • PRZEBIEG POJAZDU (przebieg pojazdu – w przypadku pojazdów lądowych) – atrybut o typie liczba, bez domyślnej wartości. Użytkownik uzupełnia przebieg pojazdu – w przypadku pojazdów lądowych
      • LICZBA GODZ. UŻYW (liczba godzin roboczych używania nowego środka transportu – w przypadku jednostek pływających oraz statków powietrznych) – atrybut o typie liczba, bez domyślnej wartości. Użytkownik uzupełnia liczbę godzin roboczych używania nowego środka transportu.

Wymienione atrybuty należy w razie potrzeby dodać na dokumencie handlowym na zakładce [Atrybuty] w sekcji JPK. W tej sekcji można wskazać atrybut widoczny na liście atrybutów (Ogólne/ Atrybuty) na zakładce [JPK], który ma zaznaczony parametr JPK_FA: FA.

Atrybut z zaznaczonym parametrem JPK_FA: FA oraz dodatkowo z parametrem przenosić na transakcje zostanie automatycznie dodany na każdym nowo dodawanym dokumencie handlowym.

Na liście Faktur Sprzedaży możliwy jest wybór dodatkowych kolumn odpowiadających atrybutom wykorzystywanym w Jednolitym Pliku Kontrolnym.

Podczas księgowania faktur z modułu Handel/Faktury z wybranymi atrybutami JPK do rejestrów VAT, zostaną one przeniesione na dokument w rejestrze VAT do grupy atrybutów JPK_FA pod warunkiem, że będą mieć zaznaczony parametr kopiować przy księgowaniu do rejestru VAT. Przeniesione w ten sposób atrybuty typu JPK_FA będą widoczne na dokumentach w rejestrze VAT nawet jeśli parametr JPK_FA na dokumencie w rejestrze VAT nie będzie zaznaczony.

Powyższe atrybuty mogą być również wykorzystywane na dokumentach w rejestrach VAT dla np. faktur kosztowych. Warunkiem, aby dokumenty wprowadzone bezpośrednio do Rejestrów VAT zostały wyeksportowane do plików JPK, jest zaznaczenie na nich parametru JPK_FA. Parametr ten został dodany na dokumentach w Rejestrach VAT Zakupu i Sprzedaży w prawej górnej części okna.

W szczególności dotyczy on dokumentów kosztowych, które nie mają odzwierciedlenia w module Handel. Podczas ręcznego dodawania dokumentów do Rejestrów VAT sprzedaży parametr jest automatycznie zaznaczany. Wyjątek stanowią dokumenty wewnętrzne, dla których parametr nie zaznacza się samoczynnie. Od wersji Comarch ERP Optima 2017.1.1. na ręcznie dodawanych dokumentach w rejestrze VAT zakupu parametr JPK_FA nie jest automatycznie zaznaczany ponieważ do pliku JPK_FA nie ma obowiązku eksportu faktur zakupowych.

Dokumenty przeniesione z modułu Handel /Faktury, jak również zaimportowane z pliku VAT_R lub za pomocą Comarch ERP Migrator nie będą miały tego parametru zaznaczonego. Parametr nie będzie również zaznaczany dla istniejących dokumentów podczas konwersji baz danych z poprzednich wersji. Parametr JPK_FA jest przenoszony dla dokumentów zaimportowanych pracą rozproszoną pod warunkiem, eksport odbywa się z rejestrów VAT i na dokumentach w rejestrze VAT w bazie źródłowej parametr JPK_FA jest zaznaczony.

Parametr JPK_FA możliwy jest do zaznaczenia również w przypadku dokumentów zaksięgowanych lub posiadających predekretację.

Dodatkowo dla dokumentów wprowadzanych bezpośrednio w Rejestrze VAT, z racji braku odpowiednich informacji na dokumencie, wprowadzone zostały poniższe atrybuty:

      • FAVAT MARŻA (wybór odpowiedniej procedury marży – wybierany w przypadku rozliczenia marży) ‑ atrybut typu lista. W programie dostępne są następujące pozycje listy (z możliwością edycji): 1 – Procedura marży dla biur podróży, 2 – Procedura marży – towary używane, 3 – Procedura marży – dzieła sztuki, 4 – Procedura marży – przedmioty kolekcjonerskie i antyki.
      • FA ZALICZKOWA (czy dokument jest fakturą zaliczkową – wybierany w przypadku faktur zaliczkowych) ‑ atrybut o typie lista, z domyślną wartością TAK
      • PRZYCZYNA KOREKTY (wybierany w przypadku faktury korygującej) – atrybut o typie lista. W programie dostępne są następujące pozycje listy (z możliwością edycji): 1 – korekta ilości, 2 – korekta wartości/ceny, 3 – korekta stawki VAT, 4 – korekta zbiorcza
      • OKRES KOREKTY OD (korekta za okres: od) – atrybut o typie data
      • OKRES KOREKTY DO (korekta za okres: do) – atrybut o typie data

Wymienione powyżej atrybuty należy dodać na dokumencie w rejestrze VAT na zakładce [Atrybuty] w sekcji JPK_FA. W tej sekcji można wskazać atrybut widoczny na liście atrybutów (Ogólne/ Atrybuty) na zakładce [JPK], który ma zaznaczony parametr JPK_FA: VAT. Warunkiem jest, aby na dokumencie w rejestrze VAT był zaznaczony parametr JPK_FA. W przeciwnym wypadku jeśli parametr jest nie zaznaczony, na zakładce [Atrybuty] w sekcji JPK_FA nie będzie możliwości wybrania tego typu atrybutów.

Dla dokumentów wprowadzonych do rejestru VAT i eksportowanych do pliku JPK_FA,  nazwa towaru pobierana jest z pola Opis na pozycji dokumentu, a w przypadku jego nie uzupełnienia, z kolumny Rodzaj. Jeżeli chodzi o ilość towaru/usługi oraz jednostkę miary – w takim przypadku w pliku JPK_FA przyjmowane są wartości domyślne, czyli 1 szt.

W przypadku wprowadzania do Rejestru VAT dokumentu korygującego, oprócz zaznaczenia na zakładce [Ogólne] parametru Korekta i wprowadzeniu numeru dokumentu korygowanego, należy dodać atrybut PRZYCZYNA KOREKTY. Daty okresu korekty pobierane są z atrybutów OKRES KOREKTY OD oraz OKRES KOREKTY DO, a w przypadku ich braku – z pola Data wystawienia.

Uwaga
Dodanie na dokumentach odpowiednich atrybutów i uzupełnienie ich wartości, jest konieczne aby w pliku JPK zarejestrować dodatkowe informacje dotyczące szczególnych warunków transakcji.

10 Dokumenty magazynowe – JPK_MAG

Do pliku JPK_MAG wysyłane są Przyjęcia Zewnętrzne, Wydania Zewnętrzne, Rozchody Wewnętrzne oraz Przesunięcia Międzymagazynowe, a także wygenerowane do tych dokumentów korekty. Aby dokumenty zostały zaczytane do pliku, muszą być wcześniej zatwierdzone. Do pliku nie są przenoszone dokumenty anulowane ani WZKK.

Pliki JPK_MAG generowane są osobno dla każdego magazynu w bazie i każdej waluty. Wartości w tych plikach wykazywane są w walucie, w jakiej zostały wystawione dokumenty.

Na oknie generowania plików JPK dla dokumentów magazynowych istnieje możliwość wyboru waluty. Jeśli w bazie istnieją waluty nieaktywne, wówczas na liście takie waluty widoczne są w kolorze czerwonym. Domyślne ustawienie pola pozwala na eksport dokumentów we wszystkich walutach. Po wyborze konkretnej waluty tworzony jest plik zawierający tylko dokumenty w tej walucie.

Na oknie generowania plików JPK istnieje również możliwość wyboru magazynu. Jeśli w bazie istnieją magazyny nieaktywne, wówczas na liście wyboru magazynu widoczne są w kolorze czerwonym. Domyślne ustawienie pola pozwala na eksport dokumentów ze wszystkich magazynów.  Po wyborze konkretnego magazynu tworzony będzie plik tylko z dokumentami z tego magazynu.

Podczas eksportu dokumentów magazynowych do plików JPK przenoszone są m.in. następujące dane:

Następnie dla każdego typu dokumentu przenoszone są dane dotyczące wartości całego dokumentu, szczegóły pozycji oraz wiersz sumy kontrolnej ilości dokumentów danego typu i ich łącznej wartości.

Dla dokumentów PZ:

      • Dane wartości dokumentu uwzględniają:
        • Numer obcy
        • Data wystawienia
        • Wartość netto dokumentu
        • Data zakupu
        • Dostawca towaru
        • Numer obcy dokumentu handlowego
        • Data wystawienia Faktury Zakupu powiązanej z PZ
      • Dane dotyczące elementów uwzględniają:
        • Numer obcy
        • Kod towaru / usługi
        • Nazwa towaru / usługi
        • Ilość przyjęta w jednostce miary z dokumentu
        • Jednostka miary z dokumentu
        • Cena netto towaru / usługi
        • Wartość netto
      • Wiersz sumy kontrolnej, gdzie uwzględniono:
        • Liczbę dokumentów PZ w pliku
        • Wartość netto dokumentów PZ w pliku

Dla dokumentów WZ:

      • Dane wartości dokumentu uwzględniają:
        • Numer dokumentu
        • Data wystawienia
        • Wartość netto dokumentu
        • Data wydania WZ
        • Nazwa odbiorcy towaru
        • Numer faktury do WZ
        • Data wystawienia Faktury Sprzedaży powiązanej z WZ
      • Dane dotyczące elementów uwzględniają:
        • Numer dokumentu WZ
        • Kod towaru / usługi
        • Nazwa towaru / usługi
        • Ilość towaru w jednostce miary z dokumentu
        • Jednostka miary z dokumentu
        • Cena netto towaru / usługi
        • Wartość netto
      • Wiersz sumy kontrolnej, gdzie uwzględniono:
        • Liczbę dokumentów WZ w pliku
        • Wartość netto dokumentów WZ w pliku

Dla dokumentów RW:

      • Dane wartości dokumentu uwzględniają:
        • Numer dokumentu RW
        • Data wystawienia
        • Wartość netto dokumentu
        • Data wydania towaru na RW
      • Dane dotyczące elementów uwzględniają:
        • Numer dokumentu RW
        • Kod towaru / usługi
        • Nazwa towaru / usługi
        • Ilość towaru w jednostce miary z dokumentu
        • Jednostka miary z dokumentu
        • Cena netto towaru / usługi w jednostce z dokumentu
        • Wartość netto
      • Wiersz sumy kontrolnej, gdzie uwzględniono:
        • Liczbę dokumentów RW w pliku
        • Wartość netto dokumentów RW w pliku

Dla dokumentów MM:

      • Dane wartości dokumentu uwzględniają:
        • Numer dokumentu
        • Data wystawienia
        • Wartość netto dokumentu
        • Data wydania MM
      • Dane dotyczące elementów uwzględniają:
        • Numer dokumentu MM
        • Kod towaru / usługi
        • Nazwa towaru / usługi
        • Ilość towaru w jednostce miary z dokumentu
        • Jednostka miary z dokumentu
        • Cena netto towaru / usługi
        • Wartość netto
      • Wiersz sumy kontrolnej, gdzie uwzględniono:
        • Liczbę dokumentów MM w pliku
        • Wartość netto dokumentów MM w pliku

11 Import plików JPK_VAT do rejestrów VAT

Od wersji Comarch ERP Optima 2018.1 Użytkownicy mogą skorzystać z funkcji importu plików JPK_VAT do rejestrów VAT. Opcja dostępna jest z menu głównego po wyborze JPK/ Import do rej.VAT  :

Na oknie po kliknięciu ikony  Wybór pliku należy wskazać źródłowy plik XML, z którego mają zostać importowane dane. Warunkiem powodzenia importu jest aby struktura wskazanego pliku była zgodna z wymaganą przez Ministerstwo Finansów strukturą JPK_VAT(2) lub JPK_VAT(3). W przypadku wybrania niewłaściwego typu pliku pojawia się stosowne ostrzeżenie i import danych nie jest możliwy.

Parametr Za okres domyślnie jest nieaktywny. Takie ustawienie powoduje, że wszystkie dokumenty z pliku zostaną zaimportowane bez względu na ich daty. Po wskazaniu pliku JPK_VAT zakres dat zostaje uzupełniony na podstawie danych w pliku. Po zaznaczeniu parametru Za okres Użytkownik może wpisać inny zakres dat (zawęzić okres) za jaki zostaną zaimportowane dokumenty ze wskazanego pliku. Dla dokumentów sprzedażowych wskazywane dla parametru daty dotyczą daty wystawienia, natomiast dla dokumentów zakupowych – daty wpływu. Jeżeli w pliku JPK_VAT dla dokumentu importowanego do rejestru zakupu VAT nieuzupełniona jest data wpływu, jest ona uzupełniona jako zgodna z datą zakupu.

Na oknie istnieje możliwość wskazania rejestrów sprzedaży i zakupów VAT, do których mają zostać zaimportowane dokumenty z pliku. Odznaczenie jednego z typów rejestru VAT (zakupów lub sprzedaży) powoduje,

że tego typu dokumenty nie zostaną zaimportowane z pliku. Jeżeli w pliku JPK_VAT występują tylko dokumenty jednego typu (np. tylko rejestr sprzedaży VAT) i ten typ rejestrów został odznaczony przez Użytkownika, przy próbie importu pojawi się informacja o braku danych do zaimportowania.

Podczas importu dokumentów, jeśli w pliku JPK_VAT uzupełniony jest numer NIP kontrahenta i w bazie istnieje już kontrahent z takim numerem NIP, wówczas po zaimportowaniu dokument przypisywany jest do tego kontrahenta (podstawiany jest jego akronim). Jeżeli istniejący w bazie kontrahent oznaczony został jako zduplikowany podczas operacji łączenia kart kontrahentów, na zaimportowanym dokumencie podstawiony zostanie kontrahent główny. Dane kontrahenta na dokumencie (jego nazwa i adres) przenoszone są zawsze z pliku. Rodzaj transakcji, rodzaj na pozycji dokumentu oraz status kontrahenta na zaimportowanym dokumencie uzupełniane są zgodnie z domyślnymi ustawieniami kwalifikującymi do deklaracji VAT-7 dla pola, do którego dany dokument w pliku JPK_VAT został zakwalifikowany.

Na dokument podstawiana jest kategoria sprzedaży lub zakupu z istniejącej karty kontrahenta (jeżeli domyślne kategorie dla kontrahenta są uzupełnione).

W przypadku nie zaznaczonego parametru Załóż karty kontrahentów (na podstawie numeru NIP) jeżeli kontrahent o takim numerze NIP jak na dokumencie w pliku nie występuje w bazie (lub jest więcej niż jeden kontrahent z takim numerem NIP), wówczas na zaimportowanym dokumencie podstawiany jest kontrahent Nieokreślony. Dane kontrahenta na dokumencie (jego nazwa i adres) przenoszone są z pliku. W przypadku importu dokumentów do rejestru VAT bez zakładania kart kontrahentów, jeżeli na dokumencie w pliku JPK_VAT uzupełniony jest numer NIP kontrahenta, na zaimportowanym dokumencie zaznaczony zostaje parametr Podmiot gospodarczy. Jeżeli w pliku JPK_VAT nie ma numeru NIP dla transakcji (pole z numerem NIP jest puste lub znajduje się w nim znak „-”), w rejestrze VAT na dokumencie zaznaczony zostaje parametr Finalny. Po przeprowadzonym imporcie zaleca się wykonanie dla zaimportowanych dokumentów operacji seryjnej Zweryfikuj status VAT.

W przypadku zaznaczonego parametru Załóż karty kontrahentów (na podstawie numeru NIP) jeżeli kontrahent o takim numerze NIP jak na dokumencie w pliku nie występuje w bazie, wówczas zostanie założona jego karta na podstawie danych w pliku i zostanie on podstawiony na zaimportowanym dokumencie. Jako akronim nowego kontrahenta wstawiany jest numer NIP. Jeżeli w Konfiguracji Firmy/ Ogólne/ Parametry zaznaczony jest parametr Autonumeracja akronimów kontrahentów przy dodawaniu, wówczas akronim zakładanego kontrahenta nadawany jest według wskazanego w Konfiguracji schematu numeracji.

Jeżeli na dokumencie w pliku kontrahent nie ma uzupełnionego numeru NIP (lub w bazie jest więcej niż jeden kontrahent z takim numerem NIP), wówczas karta kontrahenta nie jest zakładana. Na takim dokumencie po imporcie podstawia się kontrahent Nieokreślony z danymi adresowymi takimi, jakie są w pliku JPK_VAT. W przypadku braku numeru NIP kontrahenta w pliku JPK_VAT, na dokumencie jako rodzaj transakcji podpowie się Krajowa.

Jeżeli numer NIP kontrahenta krajowego w pliku JPK_VAT jest niepoprawny, nie jest zakładana karta takiego kontrahenta i nie są importowane jego dokumenty do rejestru VAT.

Na oknie importu istnieje możliwość wyboru formy płatności na zaimportowanych dokumentach. Po wybraniu opcji domyślną Użytkownik może wskazać jedną z aktywnych form płatności występujących w bazie. Jeżeli istniejący w bazie kontrahent ma ustawiony na swojej karcie indywidualny termin płatności, taki termin zostanie wyliczony na zaimportowanym dokumencie. Jeżeli istniejący w bazie kontrahent nie ma określonego terminu płatności, wówczas termin płatności na zaimportowanym dokumencie wyliczony zostanie na podstawie terminu ustawionego na wybranej formie płatności.

W przypadku wybrania opcji z karty kontrahenta, na dokumencie podstawiana jest forma płatności wskazana na karcie istniejącego kontrahenta. Jeżeli w bazie nie istnieje kontrahent o podanym numerze NIP, na zaimportowanym dokumencie podstawiana jest forma płatności gotówka. Ta forma płatności zostanie również ustawiona jako domyślna forma płatności dla założonego kontrahenta. Jeżeli forma płatności gotówka jest zablokowana, podstawi się kolejna (według kolejności wprowadzania) forma płatności.

Jeżeli istniejący w bazie kontrahent ma zaznaczony parametr Nie rozliczaj płatności, płatność z zaimportowanego dokumentu zostanie dodana do preliminarza ze statusem Nie podlega.

Jeżeli Użytkownik wybierze dla opcji domyślną formę płatności gotówka (lub kontrahent ma wybraną tę formę płatności jako domyślną), po zaimportowaniu nie będą tworzone automatycznie zapisy K/B rozliczające płatności do importowanych dokumentów.

Zaznaczenie na oknie importu parametru Ustaw status płatności na Nie podlega powoduje, że wszystkie płatności z zaimportowanych dokumentów otrzymają status Nie podlega.

Jeżeli w Konfiguracji Firmy/ Ogólne/ Parametry zaznaczony jest parametr Kontrola duplikacji zapisów w rejestrze VAT, ewidencji dodatkowej i na fakturach zakupu, podczas importu następuje weryfikacja czy w bazie nie występuje już dokument o parametrach określonych dla kontroli duplikacji. Jeżeli taki dokument już istnieje, dokument z pliku JPK_VAT nie zostanie zaimportowany, a w logu z przebiegu importu pojawi się stosowna informacja.

Kliknięcie ikony  Uruchom import powoduje zaczytanie danych z pliku JPK_VAT do bazy. Ikona jest aktywna po wskazaniu poprawnego pliku JPK_VAT oraz zaznaczeniu rejestru sprzedaży i/lub rejestru zakupu do importu.

Wybranie opcji  Zamknij okno powoduje rezygnację z importu i zamknięcie okna.

Uwaga
Pliki JPK_VAT nie posiadają wszystkich potrzebnych informacji występujących na dokumentach w rejestrze VAT, dlatego też przy imporcie przyjmowane są pewne uproszczenia np. co do formy płatności, rodzaju transakcji, waluty, stawki VAT, opisu, kolumny KPiR, stanu dokumentu zwykły/wewnętrzny itp. W związku z tym po zaimportowaniu dokumentów należy zweryfikować ich poprawność.

W razie potrzeby należy skorzystać z operacji seryjnych dostępnych bezpośrednio w rejestrach VAT.

Na zaimportowanych dokumentach do rejestru zakupu VAT domyślnie ustawiane są odliczenia na TAK.

Uwaga
W pliku JPK_VAT znajdują się tylko wartości z odliczeniami na TAK lub Warunkowo (przeliczone przez szacunkowy współczynnik struktury sprzedaży). Jeżeli więc na dokumencie przed eksportem do pliku JPK_VAT znajdowały się pozycje z odliczeniami na NIE oraz na TAK, wówczas do pliku zostaną wyeksportowane (a tym samym zaimportowane z niego) tylko te pozycje mające odliczenia na TAK. W przypadku odliczeń WARUNKOWO, po eksporcie do pliku te pozycje są mnożone przez szacunkowy współczynnik struktury sprzedaży. W związku z tym wartość brutto na zaimportowanym dokumencie w rejestrze zakupu VAT nie zawsze będzie się zgadzać z wartością brutto dokumentu sprzed eksportu do pliku JPK_VAT. Należy więc po imporcie zweryfikować poprawność kwot brutto dokumentów.

W przypadku rejestrów sprzedaży VAT w kolumnie Uwzględniaj w proporcji ustawiane są domyślne wartości dla poszczególnych stawek VAT:

      • Uwzględniaj – dla stawek: 23%, 8%, 5%, 0%
      • Tylko w mianowniku – dla stawki ZW
      • Nie uwzględniaj – dla stawki NP

W przypadku ustawionego w Konfiguracji Firmy/ Księgowość/ Parametry rodzaju księgowości księga podatkowa, na pozycjach  zaimportowanych dokumentów w rejestrze sprzedaży VAT ustawiana jest kolumna KPiR 7.Sprzedaż, natomiast na dokumentach w rejestrze zakupu VAT kolumna 10.Towary.

Jeżeli ustawiony jest rodzaj księgowości ewidencja ryczałtowa, na pozycjach  zaimportowanych dokumentów w rejestrze sprzedaży VAT ustawiana jest stawka dla ryczałtu 3,00%.

Jeżeli w pliku JPK_VAT znajdowały się dokumenty z pozycjami wykazywanymi w deklaracji VAT-7 w polach:

      • 36 – Podatek należny od towarów objętych spisem z natury,
      • 37 – Zwrot odliczonej lub zwróconej kwoty wydatkowanej na zakup kas rejestrujących,
      • 38 – Podatek od wewnątrzwspólnotowego nabycia środków transportu,
      • 39 – Kwota podatku od wewnątrzwspólnotowego nabycia paliw silnikowych,
      • 47 – Kwota podatku naliczonego od nabycia środków trwałych,
      • 48 – Kwota podatku naliczonego od pozostałych nabyć,
      • 49 – Kwota podatku naliczonego, o której mowa w art.89b ust. 1 ustawy,
      • 50 – Kwota podatku naliczonego, o której mowa w art.89b ust. 4 ustawy,

a więc wynikające z zastosowania na dokumentach atrybutów JPK_VAT, pozycje te nie zostaną zaimportowane do rejestru VAT z pliku JPK_VAT.

Uwaga
Na zaimportowanych z pliku JPK_VAT do rejestru VAT dokumentach, w polu Rozliczać w deklaracji VAT ustawiany jest rok i miesiąc zgodny z okresem za jaki wygenerowany został plik JPK_VAT. Dotyczy to metody zwykłej rozliczenia podatku VAT.

Na zaimportowanych dokumentach zostanie prawidłowo ustawiona data rozliczenia w deklaracji VAT-7 jedynie w bazach, które za dany okres czasu rozliczają VAT metodą zwykłą. Jeśli w bazie docelowej wybrana jest metoda kasowa, wówczas należy ponownie zweryfikować datę uwzględnienia w deklaracji na poszczególnych dokumentach.