Wyrównanie wynagrodzenia zasadniczego według stawki zaszeregowania.

Szczególnym przypadkiem jest sytuacja, w której pracownik w 31-dniowym miesiącu przez 30 dni przebywał na zwolnieniu ZUS, a jeden dzień pracował. Wynagrodzenie zasadnicze zostanie pomniejszone o 1/30 za każdy dzień zwolnienia chorobowego i naliczy się w kwocie 0 zł. Za jeden dzień pracy pracownikowi należy się wynagrodzenie liczone zgodnie z jego stawką. W programie dostępna jest opcja naliczania wyrównania wynagrodzenia zasadniczego według stawki pracownika w przypadku, gdy wynagrodzenie zasadnicze zostało pomniejszone do zera, w związku z nieobecnościami, a pracownik ma przepracowane godziny w ramach obowiązującej go normy w danym miesiącu. Naliczanie wyrównania wynagrodzenia zasadniczego jest uzależnione od parametru „Licz wyrównanie wynagrodzenia zasadniczego za pracę według stawki zaszeregowania” dostępnego z poziomu [Konfiguracja / Firma / Płace / Parametry/Naliczanie wypłat]. Zaznaczenie parametru spowoduje naliczenie w wypłacie składnika „Wyrów. wynagr. zasad. wg stawki zaszer.” w oparciu o stawkę pracownika.




e-Teczka

– elektroniczna dokumentacja pracownicza dostępna w programie, służy przechowywaniu dokumentów kadrowych związanych z pracownikiem w formie elektronicznej, umożliwiając jednocześnie łatwy dostęp do danych pracownika. Funkcjonalność jest dostępna w module Płace i Kadry oraz Płace i Kadry Plus z poziomu listy pracowników oraz z formularza pracownika.

e-Teczka – konfiguracja

W konfiguracji firmy [Konfiguracja / Firma / Definicje dokumentów / Płace / e-Teczka] Użytkownik ma dostępne schematy numeracji dla dokumentów dodawanych do e-Teczki pracownika. Standardowo dostępny jest schemat EDOK. Można również zdefiniować własne schematy.

W konfiguracji programu [Konfiguracja / Program / Płace / e-Teczka] znajdują się ustawienia związane z prowadzeniem dokumentacji pracowniczej w ramach funkcjonalności e-Teczka. Są one dostępne do edycji tylko dla operatora posiadającego uprawnienia administratora.

Z tego poziomu Użytkownik może określić miejsce zapisywania dołączanych do dokumentów w e-Teczce plików. Do wyboru są trzy opcje:

  • firmowa baza danych (domyślne ustawienie) – pliki PDF są zapisywane jako dane binarne w firmowej bazie danych,
  • dysk lokalny – zapis plików PDF we wskazanej lokalizacji na lokalnym dysku,
  • dysk iBard – zapis plików PDF we wskazanej lokalizacji na dysku iBard.

W przypadku ustawienia opcji dysk lokalny lub iBard należy dodatkowo wskazać katalog przechowywania plików. W obrębie wskazanego katalogu, podczas dodawania dokumentów do e-Teczek pracowniczych, załączone pliki będą zapisywane w podkatalogu dla danej firmy i dodatkowo w podkatalogu dotyczącym danego pracownika. Nazwa katalogu dla pracownika zawiera numer PESEL, NIP, paszport, zagraniczny numer identyfikacyjny lub akronim, w zależności od danych pracownika.

W sekcji Parametry zapisu dokumentów w e-Teczce znajduje się lista ze strukturą e-Teczki. Standardowo dodane są w niej 4 pozycje:

  • Część A – część, w której powinny być przechowywane dokumenty zgromadzone w związku z ubieganiem się o zatrudnienie (np. CV, kopie dyplomów potwierdzających wykształcenie i świadectw pracy od poprzednich pracodawców, kopia zaświadczenia lekarskiego z badań wstępnych),
  • Część B – część, w której powinny być przechowywane dokumenty dotyczące nawiązania stosunku pracy oraz przebiegu zatrudnienia pracownika (np. umowa o pracę, kopie zaświadczeń o ukończonych szkoleniach w trakcie zatrudnienia, kopie zaświadczeń lekarskich z badań okresowych),
  • Część C – część, w której powinny być przechowywane dokumenty związane z ustaniem zatrudnienia (np. wypowiedzenie umowy, świadectwo pracy).
  • Część D – część przeznaczona do przechowywania dokumentów dotyczących kar porządkowych nakładanych na pracownika (np. kara nagany).
  • Część E – część przeznaczona na dokumenty związane z kontrolą trzeźwości pracownika lub kontrolą na obecność w jego organizmie środków działających podobnie do alkoholu.

Jako domyślna ustawiona jest Część B. Dokumenty tworzone podczas wykonywania wydruków będą automatycznie dodawane do tej części e-Teczki pracownika, która jest ustawiona jako domyślna, chyba, że w definicji wydruków określono inaczej. Użytkownik może dodawać kolejne części, a także zmienić ustawienie, która z części jest domyślna. Usunięcie utworzonej części z konfiguracji jest możliwe tylko w przypadku, gdy nie zostały przypisane do niej żadne dokumenty.

Uwaga
W przypadku zmiany bazy konfiguracyjnej, dokumenty znajdujące się w e-Teczkach pracowników są przyporządkowywane do nowych części według ID części. Jeśli dokument był dodany do części e-Teczki o ID=1, po podłączeniu nowej bazy konfiguracyjnej także będzie dostępny w części, której ID=1. Dodatkowo w tabeli CDN.PracTeczka zapisana jest informacja o nazwie części, w której dany dokument się znajdował.

Sekcja Certyfikaty podpisów dla dokumentów w e-Teczce zawiera ustawienia dotyczące podpisywania plików PDF dodawanych do e-Teczki. Z tego poziomu można przypisać operatorom domyślne ustawienia dotyczące kwalifikowanych podpisów elektronicznych. Zaznaczenie parametru Podpis przy dodanym operatorze spowoduje wyświetlenie listy certyfikatów zainstalowanych na danym stanowisku. Wybrany z listy certyfikat zostanie ustawiony jako domyślny dla operatora i wszystkie dodawane przez niego dokumenty do e-Teczki będą nim podpisywane. W przypadku zaznaczenia dla danego operatora parametru Podpis, ale bez przypisania konkretnego podpisu podczas dodawanie dokumentów doe-Teczki każdorazowo będzie wyświetlane okno z listą certyfikatów i użytkownik będzie mógł zdecydować, którym certyfikatem dany plik ma być podpisany.

Rys 46. E-Teczka – formularz

e-Teczka pracownika

Po wybraniu opcji e-Teczka widoczna jest lista dokumentów pracownika w kontekście, którego została wywołana w podziale na części. W standardzie dostępne są cztery predefiniowane części A, B,C,D,E. W części A powinny być gromadzone dokumenty związane z ubieganiem się o zatrudnienie; w części B – dokumenty dotyczące nawiązania stosunku pracy oraz przebiegu zatrudnienia pracownika, a w części C – dokumenty związane z ustaniem zatrudnienia. W części D – dokumenty związane z nałożonymi na pracownika karami porządkowymi, w części E – dokumenty związane z kontrolą trzeźwości pracownika lub kontrolą na obecność w jego organizmie środków działających podobnie do alkoholu.

Z poziomu e-Teczki pracownika można dodawać dokumenty, przeglądać oraz usuwać.

Z poziomu listy e-Teczek  pracowników Użytkownik może w łatwy sposób odszukać określony dokument po jego tytule, numerze lub dacie dodania.

Formularz dokumentu w e-Teczce

Dodawanie dokumentu do e-teczki pracownika jest możliwe z poziomu okna e-Teczka za pomocą przycisku .

Formularz dokumentu w e-Teczce zawiera następujące dane:

  • numer dokumentu, ze standardowo wskazanym w konfiguracji schematem numeracji,
  • tytuł dokumentu – w tym polu użytkownik ma możliwość wybrania tytułu dokumentu z listy słownikowej
  • opis – pole do wpisania dodatkowych informacji dotyczących wprowadzanego dokumentu,
  • część e-Teczki, w której jest dany dokument,
  • datę dokumentu,
  • informacje dotyczące dołączonego do dokumentu pliku w formacie PDF, jego lokalizacji wraz ze ścieżką, operatorze, który dodał plik PDF oraz czy został opatrzony podpisem cyfrowym i jeśli tak, to datą podpisu.

Rys 47. Formularz dokumentu e-Teczki

Za pomocą przycisku   można wykonać operacje związane z dodaniem pliku PDF do dokumentu oraz zmianą lokalizacji dołączonego wcześniej pliku. Pliki można dodawać z dysku lokalnego lub dysku iBard. Dodatkowo za pomocą opcji Skanuj i zapisz… jest możliwość jednoczesnego skanowania i dodawania plików do dokumentów. Dokumenty dodawane do e-Teczki mogą być zapisywane w bazie firmowej, na dysku lokalnym lub dysku iBard. Menu dostępne pod przyciskiem  jest automatycznie dostosowywane w zależności od ustawień w konfiguracji.

e-Teczka – dodawanie dokumentu

Funkcjonalność umożliwia także podpisywanie podpisem cyfrowym dodawanych plików. Jeśli dany operator ma przypisany certyfikat w konfiguracji, plik podczas dodawania do dokumentu zostanie automatycznie podpisany. Gdy operator dodaje dokument do e-Teczki po raz pierwszy i w konfiguracji nie ma ustawień odnośnie podpisu, wyświetli się lista podpisów zainstalowanych na danym stanowisku, z której będzie mógł wybrać odpowiedni podpis – wybrany w ten sposób podpis zostanie dołączony do pliku PDF w zapisywanym dokumencie. Z tego poziomu Użytkownik może również zdecydować, czy wybrany certyfikat ma zostać domyślnym dla danego operatora.

Istnieje także możliwość dodania podpisu cyfrowego do podświetlonego pliku PDF, który został wcześniej zapisany do e-Teczki bez dołączenia podpisu cyfrowego za pomocą przycisku Dodaj podpis cyfrowy .

Użytkownik z poziomu formularza dokumentu ma możliwość podglądu dodanego pliku za pomocą przycisku  oraz usuwać .

Na oknie e-Teczka (Płace i Kadry/ Kadry/e-Teczka) możliwe jest wyszukanie dokumentów na podstawie metadanych. Dane te znajdują się w kolumnach:

■             PESEL
■             Rodzaj dokumentu – zawiera numer kolejny dokumentu,
■             Data podpisu – data opatrzenia pieczęcią elektroniczną
■             Data eksportu – data utworzenia uporządkowanego zbioru dokumentów

Kolumny domyślnie są ukryte, ale można je dodać za pomocą opcji Wybór kolumn.

Zapis wydruków bezpośrednio do e-Teczki

Wydruki generowane dla pracowników mogą być dodawane do e-Teczki na dwa sposoby. W menu wydruków jest dostępna opcja Dodaj do e-Teczki. Wywołany w ten sposób wydruk zapisze się jako plik PDF w dodanym automatycznie dokumencie w e-Teczce pracownika będącego podmiotem danego wydruku, bez konieczności wykonania wydruku na drukarkę.

e-Teczka – zapis wydruku do e-Teczki

Wykonanie wydruku na drukarkę także może automatycznie dodawać dokument do e-Teczki. Jest to zależne od ustawienia parametrów Kopia elektroniczna i  Zapisuj wydruk w formacie PDF w e-Teczkach pracowników w części znajdujących się w definicji wydruku. Po zaznaczeniu parametrów dodatkowo należy ustawić, w której części e-teczki dokument ma być dodany. Domyślnie podpowiada się ta część e-Teczki, która jest w konfiguracji ustawiona jako domyślna, ale operator może ją zmienić.

Podczas dodawania dokumentów do e-Teczki podczas wykonywania wydruków ustawienia dotyczące części e‑Teczki, do której dokument zostanie dodany oraz podpisywania będą pobierane z definicji wydruku lub konfiguracji programu (gdy nie ma ustawień w definicji wydruku). W przypadku wydruków wywoływanych z listy, zapisywanie w e-Teczkach wykona się wyłącznie wtedy, gdy wybrany wydruk będzie wydrukiem kaskadowym tworzącym wiele plików PDF z oddzielnymi wydrukami dotyczącymi poszczególnych zaznaczonych pracowników.

 Eksport e-Teczki pracownika wraz z metadanymi

Z poziomu okna e-Teczka  można wyeksportować dokumentację pracownika wraz  z metadanymi.  Użytkownik może wyeksportować dokumentację wybranego pracownika lub wszystkich. Po rozwinięciu strzałki przy przycisku eksportu dostępne są do wyboru dwie opcje: eksport dokumentacji pracownika oraz eksport dokumentacji wszystkich pracowników. Na formularzu eksportu dokumentacji należy wskazać lokalizację, gdzie dokumentacja zostanie zapisana oraz określić, z których części e-Teczki mają zostać wyeksportowane dokumenty. Dodatkowo dostępny jest parametr Podpisz cyfrowo plik, którego zaznaczenie spowoduje opatrzenie skompresowanego pliku kwalifikowanym podpisem elektronicznym.

Eksport dokumentacji spowoduje:

  • utworzenie uporządkowanego zbioru dokumentów, wraz z kompletem metadanych dla każdego dokumentu,
  • zapisanie zbioru dokumentów w postaci skompresowanego pliku o następujących nazwach:
  • Teczka_pracownika_imie_nazwisko_pesel.zip (gdy wybrana opcja dla jednego pracownika)
  • Teczka_pracownikow_NIP.zip (gdy wybrana opcja dla wszystkich), a w nim foldery dla poszczególnych pracowników
  • opatrzenie skompresowanego pliku kwalifikowanym podpisem elektronicznym (jeżeli zaznaczono parametr ‘Podpisz cyfrowo plik’).

Każdy dokument znajdujący się w e-Teczce pracownika zostanie zapisany jako odrębny plik PDF. Do każdego dokumentu zostanie utworzony zestaw następujących metadanych, zapisanych w odrębnym pliku XML z metadanymi:

  • identyfikator dokumentu, który stanowi numer pełny dokumentu,
  • identyfikator dokumentacji – będący akronimem pracownika,
  • rodzaj dokumentu – numer dokumentu w danej części e-Teczki,
  • data powstania dokumentu;
  • data opatrzenia odwzorowania cyfrowego kwalifikowaną pieczęcią elektroniczną pracodawcy albo kwalifikowanym podpisem elektronicznym pracodawcy, albo osoby upoważnionej przez pracodawcę – w przypadku, gdy jest to odwzorowanie cyfrowe dokumentu w postaci papierowej;
  • numer PESEL pracownika, do którego dokumentacji pracowniczej został włączony dokument, a w przypadku jego braku – rodzaj i numer dokumentu potwierdzającego tożsamość;
  • imię i nazwisko pracownika;
  • nazwa pracodawcy;
  • data utworzenia uporządkowanego zbioru dokumentów przeznaczonych do przekazania, w którym znajduje się dokument.

Plik XML z metadanymi będzie miał taką samą nazwę, jaką ma pełna nazwa pliku, do którego się odnosi.

W danych dokumentu zapisywana jest data wykonania jego eksportu.

W przypadku, gdy dokumentacja pracownicza jest przechowywana przez pracodawcę w postaci elektronicznej, pracodawca wydaje kopię całości lub części dokumentacji pracowniczej:

  • w postaci elektronicznej albo
  • w postaci papierowej stanowiącej wydruk z dokumentacji pracowniczej prowadzonej w postaci elektronicznej, zawierający oprócz treści również metadane.

Na potrzeby konieczności wydania w postaci papierowej dokumentacji w programie z poziomu formularza dokumentu znajdującego się w e-Teczce możliwe jest wykonanie wydruku metadanych dla plików [Podgląd wydruku lub Wydruk danych/ Dokumentacja pracownicza/ Dokumentacja pracownicza – metadane].




OPT066 – Szybki import i eksport przelewów przez bankowość internetową ING

Data aktualizacji: 06-07-2022

Informacje ogólne

System Comarch ERP Optima obsługuje wymianę danych z bankiem (eksport i import przelewów) za pomocą usługi sieciowej opartej o standard Comarch Data Connect 2.0.

Ten sposób wymiany danych umożliwia pobieranie wyciągów bankowych oraz historii operacji, a także eksport przelewów bezpośrednio z/do systemu bankowego, bez konieczności ręcznego przenoszenia plików pomiędzy aplikacją bankową oraz Comarch ERP Optima. Możliwe jest również pobieranie dla każdego wysłanego przelewu jego aktualnego statusu w banku (przelew może oczekiwać na realizację, zostać zrealizowany, odrzucony, anulowany itp.).

Wymiana danych pomiędzy bankiem a klientem w usłudze sieciowej odbywa się przez wymianę komunikatów w formacie plików XML (standard ISO 20022) przy wykorzystaniu technologii web-services. Całość komunikacji jest zabezpieczona przez bezpieczny kanał HTTPS z wykorzystaniem dwustronnego SSL. Dzięki tym technologiom komunikacja pomiędzy Bankiem a klientem jest szyfrowana i nikt niepowołany nie ma dostępu do przesyłanych informacji. Dodatkowo dzięki dwustronnemu SSL Bank otrzymuje możliwość wstępnej weryfikacji klienta, a klient może zweryfikować, czy faktycznie podłączył się do serwera Banku.

Do zabezpieczenia wymiany informacji zastosowane zostały: certyfikat transportowy, który weryfikuje Klienta i pozwala zweryfikować jego prawo do danego rachunku (rachunków) oraz certyfikat autoryzacyjny (podpis elektroniczny), którym mogą być podpisywane wysyłane do banku przelewy. Gdy przelewy nie zostaną podpisane lub zostaną podpisane przez nieuprawnioną osobę – zlecenia będą oczekiwały w banku na akceptację uprawnionej osoby.

Na liście Ogólne/Inne/Formaty przelewów dostępny jest format ING WebService (standardowy) do wymiany danych z ING Bank Śląski. Na stronie http://www.ingbank.pl/ing-businessonline/webservice można dowiedzieć się więcej o tej usłudze oraz sposobie jej zamawiania.

W przypadku innych banków należy zweryfikować możliwość wymiany danych poprzez usługę sieciową kontaktując się z danym bankiem. Jeżeli bank wdrożył standard Comarch Data Connect 2.0, Użytkownik może samodzielnie dodać format przelewu, za pomocą którego będzie możliwa wymiana. Na formularzu formatu przelewu na zakładce [Ogólne] trzeba zaznaczyć parametr Bezpośrednia wymiana danych za pomocą usługi sieciowej oraz wpisać adres usługi sieciowej.

Eksport za pomocą usługi sieciowej

Możliwy jest eksport przelewów krajowych (w tym do Urzędu Skarbowego i ZUS) oraz przelewów walutowych. Przelewy walutowe wysyłane są jako przelewy zagraniczne. Jest możliwość wysyłania przelewów euroregulowanych (SEPA). Jako przelewy euroregulowane wysyłane są zdarzenia rozchodowe w walucie EUR, na których zaznaczony został parametr Przelew SEPA

Na formularzu banku w polach Format eksportu dla przelewów zwykłych oraz Format importu wyciągów bankowych można wskazać format obsługujący wymianę za pomocą usługi sieciowej (ING WebService (standardowy)). Format ten będzie podpowiadał się jako domyślny podczas eksportu i importu przelewów.

Rys.1 – Formularz banku, zakładka „Import/ Eksport”

Po wybraniu takiego formatu na formularzu banku pojawia się zakładka [Ustawienia usługi sieciowej]. Na zakładce tej Użytkownik wprowadza ustawienia dotyczące przelewów walutowych oraz podpina certyfikat do komunikacji.

Został przygotowany już dla Państwa prosty kreator do generowanie certyfikatu komunikacyjnego, który umożliwi wymianę danych za pomocą usługi sieciowej. Kreator jest pod tym linkiem.

Rys. 2 – Formularz banku, zakładka Ustawienia usługi sieciowej

W przypadku przelewów walutowych istotne jest uzupełnienie pól: Opłatę ponosi, Osoba kontaktowa oraz Kontakt. W przypadku pola Opłatę ponosi jest możliwość wyboru trzech opcji: Zleceniodawca, Zleceniobiorca, Po równo. W przypadku niektórych rachunków opcja Zleceniobiorca może być zablokowana. Pokaże się wtedy odpowiedni komunikat przy próbie eksportu z wybraną tą opcją. W przypadku Osoba kontaktowa oraz Kontakt należy wprowadzić imię i nazwisko oraz np. numer telefonu przedstawiciela Klienta, z którym można się kontaktować. Jest to pole wymagane gdy wysyłane są przelewy walutowe.

Eksport przelewów za pomocą usługi sieciowej jest możliwy z poziomu preliminarza płatności dla wybranego konkretnego rejestru. Jeżeli wybrany rejestr ma na formularzu banku przypisany format obsługujący wymianę danych za pomocą usługi sieciowej, wtedy ikona Eksportuj polecenia przelewu ma rozwijalne menu z dwoma opcjami: Eksportuj przelewy  oraz Aktualizuj stany przelewów  .

Domyślnie kliknięcie w ikonę powoduje wywołanie okna Eksport przelewów do pliku.

Rys.3 – Okno eksportu przelewu poprzez usługę sieciową

W konfiguracji Stanowiska/ Kasa/Bank/ Parametry znajdują się parametry: Zapisuj dane wymieniane z bankiem do plików XML oraz Zapisuj szczegółowe logi z komunikacji z bankiem. Domyślnie te parametry są odznaczone. Zaznaczenie ich spowoduje zapisywanie plików w których znajdą się informacje związane z komunikacją z bankiem. Wygenerują się one w katalogu z logami programu, w ścieżce: %appdata%\Comarch\Optima\Logs\WebserwisyBankowe.

Po wybraniu opcji Eksportuj przelewy pokazuje się okno, na którym można ustawić wybrane opcje eksportu. Po ustawieniu parametrów, eksport uruchamiamy ikoną pioruna. Eksportowane są zarówno przelewy w PLN jak również w walucie obcej. Jest możliwy również eksport przelewów zbiorczych. Jest również możliwość podpisania przelewów za pomocą podpisu kwalifikowanego. Pojawia się okno z możliwością wyboru właściwego certyfikatu. Jeżeli okno z wyborem certyfikatu zostanie anulowane – przelewy zostaną wysłane i będą oczekiwały na akceptację po stronie banku.

W preliminarzu płatności jeżeli wybrany zostanie rejestr, który obsługuje wymianę danych poprzez usługę sieciową wśród kolumn na liście dostępne są kolumny: Data wysłania WebService, Komunikat WebService, Data komunikatu WebService.

W kolumnach tych zapisywane są informacje przy eksporcie do usługi sieciowej oraz każdorazowym sprawdzeniu stanu przelewów w banku.

Jest również możliwość sprawdzenia aktualnego statusu przelewów w banku. Opcja Aktualizuj stany przelewów sprawdza stan przelewów w banku oraz aktualizuje informacje na liście w preliminarzu płatności oraz na formularzu zdarzenia.

Import za pomocą usługi sieciowej

W systemie jest również dostępny import przelewów za pomocą usługi sieciowej. Jest możliwość importu wyciągów bankowych bądź historii operacji, jeżeli za dany okres nie jest jeszcze dostępny wyciąg bankowy.

Zalecamy aby okres raportów kasowych/bankowych w systemie Comarch ERP Optima był taki sam jak okres raportów w systemie bankowym.

Jeżeli okres raportu się nie pokrywa to przy imporcie pojawi się odpowiedni komunikat wraz z pytaniem czy wykonać import historii operacji.

Jeżeli wykonany został import historii operacji i następnie potem wykonywany jest ponowny import historii bądź import wyciągu wtedy importowane są tylko te przelewy, które nie zostały jeszcze zaimportowane. Duplikaty są odrzucane.

Duplikaty sprawdzane są wg następujących kryteriów:

  • Data księgowania,
  • Numer rachunku kontrahenta,
  • Kwota,
  • Opis przelewu.

Podczas importu sprawdzany jest stan początkowy raportu i porównywany ze stanem początkowym wyciągu bankowego. Jeżeli stany będą niezgodne w logu pokaże się odpowiednie ostrzeżenie. Po zakończeniu importu aktualizowany jest stan końcowy raportu i porównywany ze stanem końcowym w wyciągu. W przypadku braku zgodności również pokazywane jest odpowiednie ostrzeżenie.

Na liście raportów kasowych/bankowych dla rejestru, który obsługuje import przelewów poprzez usługę sieciową, wśród kolumn (ukrytych) na liście jest kolumna [Wyciąg z banku], w której zapisywana jest informacja, czy wyciąg bankowy został pobrany.

Eksport i import przelewów za pomocą usługi sieciowej – najczęściej zadawane pytania

  • Co należy ustawić w programie Comarch ERP Optima, aby móc skorzystać z Eksport i import przelewów za pomocą usługi sieciowej?

Odpowiedź: Na formularzu banku (Ogólne/Inne/Banki) w polach Format eksportu dla przelewów zwykłych oraz [Format importu wyciągów bankowych] (druga zakładka) należy wskazać format obsługujący wymianę za pomocą usługi sieciowej (ING WebService (standardowy)). Następnie na 3 zakładce [Ustawienia usługi sieciowej] Użytkownik wprowadza ustawienia dotyczące przelewów walutowych oraz podpina certyfikat do komunikacji otrzymany z banku.

  • Jakie warunki powinny spełniać certyfikaty wykorzystywane podczas wysyłki aby odbyła się ona prawidłowo?

Odpowiedź: Certyfikat komunikacyjny i autoryzacyjny powinny znajdować się w sekcji osobiste, mieć aktualną datę ważności oraz posiadać informację o obsługujących je kluczach prywatnych. Ponadto w przypadku certyfikatu autoryzacyjnego należy poprawnie zainstalować sterowniki urządzenia obsługującego certyfikat po stronie systemu operacyjnego.
Jeśli bank wymaga dodatkowych certyfikatów należy upewnić się czy znajdują się one we właściwych magazynach certyfikatów oraz czy posiadają aktualną datę ważności.

Pliki do pobrania




OPT073 – Szybki import i eksport przelewów przez bankowość internetową Pekao

Data aktualizacji: 06-07-2022

Informacje ogólne

System Comarch ERP Optima obsługuje wymianę danych z bankiem (eksport przelewów i import wyciągów) za pomocą usługi sieciowej opartej o standard Comarch Data Connect 2.0.

Ten sposób wymiany danych umożliwia pobieranie wyciągów bankowych oraz historii operacji, a także eksport przelewów bezpośrednio z/do systemu bankowego, bez konieczności ręcznego przenoszenia plików pomiędzy aplikacją bankową oraz Comarch ERP Optima. Możliwe jest również pobieranie dla każdego wysłanego przelewu jego aktualnego statusu w banku (przelew może oczekiwać na realizację, zostać zrealizowany, odrzucony, anulowany itp.).

Wymiana danych pomiędzy bankiem a klientem w usłudze sieciowej odbywa się przez wymianę komunikatów w formacie plików XML (standard ISO 20022) przy wykorzystaniu technologii web-services. Całość komunikacji jest zabezpieczona przez bezpieczny kanał HTTPS z wykorzystaniem dwustronnego SSL. Dzięki tym technologiom komunikacja pomiędzy Bankiem a klientem jest szyfrowana i nikt niepowołany nie ma dostępu do przesyłanych informacji. Dodatkowo dzięki dwustronnemu SSL Bank otrzymuje możliwość wstępnej weryfikacji klienta, a klient może zweryfikować, czy faktycznie podłączył się do serwera Banku.

Do zabezpieczenia wymiany informacji zastosowane zostały: certyfikat transportowy, który weryfikuje Klienta i pozwala zweryfikować jego prawo do danego rachunku (rachunków) oraz certyfikat autoryzacyjny (podpis elektroniczny), którym mogą być podpisywane przelewy wysyłane do banku. Gdy przelewy nie zostaną podpisane lub ilość złożonych podpisów będzie niewystarczająca do zrealizowania – zlecenia będą oczekiwały w banku na podpis/uzupełnienie podpisu.

Na liście Ogólne/Inne/Formaty przelewów dostępny jest format Pekao WebService (standardowy) do wymiany danych z bankiem Pekao.

W przypadku innych banków należy zweryfikować możliwość wymiany danych poprzez usługę sieciową kontaktując się z danym bankiem. Jeżeli bank wdrożył standard Comarch Data Connect 2.0, Użytkownik może samodzielnie dodać format przelewu, za pomocą którego będzie możliwa wymiana. Na formularzu formatu przelewu na zakładce Ogólne trzeba zaznaczyć parametr Bezpośrednia wymiana danych za pomocą usługi sieciowej oraz wpisać odpowiedni adres usługi sieciowej.

Eksport za pomocą usługi sieciowej

Możliwy jest eksport przelewów krajowych (w tym do Urzędu Skarbowego i ZUS) oraz przelewów walutowych. Przelewy walutowe wysyłane są jako przelewy zagraniczne. Jest możliwość wysyłania przelewów euroregulowanych (SEPA). Jako przelewy euroregulowane wysyłane są zdarzenia rozchodowe w walucie EUR, na których zaznaczony został parametr „Przelew SEPA”

Na formularzu banku w polach Format eksportu dla przelewów zwykłych oraz Format importu wyciągów bankowych można wskazać format obsługujący wymianę za pomocą usługi sieciowej. Format ten będzie podpowiadał się jako domyślny podczas eksportu i importu przelewów.

Rysunek 1. Formularz banku, zakładka „Import/ Eksport”

Po wybraniu takiego formatu na formularzu banku pojawia się zakładka Ustawienia usługi sieciowej. Na zakładce tej Użytkownik wprowadza ustawienia dotyczące przelewów walutowych oraz podpina certyfikat do komunikacji (transportowy).

Został przygotowany już dla Państwa prosty kreator do generowanie certyfikatu komunikacyjnego, który umożliwi wymianę danych za pomocą usługi sieciowej. Kreator jest dostępny pod tym linkiem.

Rysunek 2. Formularz banku, zakładka „Ustawienia usługi sieciowej”

W przypadku przelewów walutowych istotne jest uzupełnienie pól: Opłatę ponosi, Osoba kontaktowa oraz Kontakt. W przypadku pola Opłatę ponosi jest możliwość wyboru trzech opcji: Zleceniodawca, Zleceniobiorca, Po równo. W przypadku niektórych rachunków opcja Zleceniobiorca może być zablokowana. Przy próbie eksportu z wybraną tą opcją pokaże się wówczas odpowiedni komunikat. W przypadku Osoba kontaktowa oraz Kontakt należy wprowadzić imię i nazwisko oraz np. numer telefonu przedstawiciela Klienta, z którym Bank będzie mógł się kontaktować. Jest to pole wymagane, gdy wysyłane są przelewy walutowe.

Eksport przelewów za pomocą usługi sieciowej jest możliwy z poziomu preliminarza płatności dla wybranego konkretnego rejestru. Jeżeli wybrany rejestr ma na formularzu banku przypisany format obsługujący wymianę danych za pomocą usługi sieciowej, wtedy ikona Eksportuj polecenia przelewu ma rozwijalne menu z dwoma opcjami: Eksportuj przelewy  oraz Aktualizuj stany przelewów  .

Domyślnie kliknięcie w ikonę powoduje wywołanie okna Eksport przelewów do pliku.

Rysunek 3. Okno eksportu przelewów poprzez usługę sieciową.

W konfiguracji Stanowiska/ Kasa/Bank/ Parametry znajdują się parametry: Zapisuj dane wymieniane z bankiem do plików XML oraz Zapisuj szczegółowe logi z komunikacji z bankiem. Domyślnie te parametry są odznaczone. Zaznaczenie ich spowoduje zapisywanie plików w których znajdą się informacje związane z komunikacją z bankiem. Wygenerują się one w katalogu z logami programu, w ścieżce: %appdata%\Comarch\Optima\Logs\WebserwisyBankowe.

Po wybraniu opcji Eksportuj przelewy pokazuje się okno, na którym można ustawić wybrane opcje eksportu. Po ustawieniu parametrów, eksport uruchamiamy ikoną pioruna. Eksportowane są zarówno przelewy w PLN, jak również w walucie obcej. Jest możliwy również eksport przelewów zbiorczych. Istnieje także możliwość podpisania przelewów za pomocą podpisu kwalifikowanego. Pojawia się okno z możliwością wyboru właściwego certyfikatu. Jeżeli okno z wyborem certyfikatu zostanie anulowane – przelewy zostaną wysłane i będą oczekiwały na akceptację po stronie banku.

W preliminarzu płatności jeżeli wybrany zostanie rejestr, który obsługuje wymianę danych poprzez usługę sieciową, wśród kolumn na liście dostępne są kolumny: Data wysłania WebService, Komunikat WebService, Data komunikatu WebService.

W kolumnach tych zapisywane są informacje przy eksporcie do usługi sieciowej oraz każdorazowym sprawdzeniu stanu przelewów w banku.

Jest również możliwość sprawdzenia aktualnego statusu przelewów w banku. Opcja Aktualizuj stany przelewów sprawdza stan przelewów w banku oraz aktualizuje informacje na liście w preliminarzu płatności oraz na formularzu zdarzenia.

Import za pomocą usługi sieciowej

W systemie jest również dostępny import wyciągów za pomocą usługi sieciowej. Jest możliwość importu wyciągów bankowych bądź historii operacji, jeżeli za dany okres nie jest jeszcze dostępny wyciąg bankowy.

Zalecamy aby okres raportów kasowych/bankowych w systemie Comarch ERP Optima był taki sam jak okres raportów w systemie bankowym.

Jeżeli okres raportu się nie pokrywa, to przy imporcie pojawi się odpowiedni komunikat wraz z pytaniem czy wykonać import historii operacji.

Jeżeli wykonany został import historii operacji i następnie potem wykonywany jest ponowny import historii bądź import wyciągu, wtedy importowane są tylko te przelewy, które nie zostały jeszcze zaimportowane. Duplikaty są odrzucane.

Duplikaty sprawdzane są wg następujących kryteriów:

  • Data księgowania,
  • Numer rachunku kontrahenta,
  • Kwota,
  • Opis przelewu.

Podczas importu sprawdzany jest stan początkowy raportu i porównywany ze stanem początkowym wyciągu bankowego. Jeżeli stany będą niezgodne w logu pokaże się odpowiednie ostrzeżenie. Po zakończeniu importu aktualizowany jest stan końcowy raportu i porównywany ze stanem końcowym w wyciągu. W przypadku braku zgodności również pokazywane jest odpowiednie ostrzeżenie.

Na liście raportów kasowych/bankowych dla rejestru, który obsługuje import przelewów poprzez usługę sieciową, wśród kolumn (ukrytych) na liście jest kolumna [Wyciąg z banku], w której zapisywana jest informacja, czy wyciąg bankowy został pobrany.

Eksport i import przelewów za pomocą usługi sieciowej – najczęściej zadawane pytania

  • Co należy ustawić w programie Comarch ERP Optima, aby móc skorzystać z Eksportu i importu przelewów za pomocą usługi sieciowej?

Odpowiedź: Na formularzu banku (Ogólne/ Inne/ Banki) w polach Format eksportu dla przelewów zwykłych oraz Format importu wyciągów bankowych (druga zakładka) należy wskazać format obsługujący wymianę za pomocą usługi sieciowej. Następnie na 3 zakładce (Ustawienia usługi sieciowej) Użytkownik wprowadza ustawienia dotyczące przelewów walutowych oraz podpina certyfikat do komunikacji otrzymany z banku.

  • Jakie warunki powinny spełniać certyfikaty wykorzystywane podczas wysyłki aby odbyła się ona prawidłowo? 

Odpowiedź: Certyfikat komunikacyjny i autoryzacyjny powinny znajdować się w sekcji osobiste, mieć aktualną datę ważności oraz posiadać informację o obsługujących je kluczach prywatnych. Ponadto w przypadku certyfikatu autoryzacyjnego należy poprawnie zainstalować sterowniki urządzenia obsługującego certyfikat po stronie systemu operacyjnego.
Jeśli bank wymaga dodatkowych certyfikatów należy upewnić się czy znajdują się one we właściwych magazynach certyfikatów oraz czy posiadają aktualną datę ważności.


Pliki do pobrania




OPT057 – Strojenie wydajnościowe baz MS SQL dla Comarch ERP Optima

Data aktualizacji: 28-11-2018

Wprowadzenie

Serwer bazy danych jest centralnym miejscem dla całej instalacji Comarch ERP Optima i ma bardzo duże znaczenie dla wydajnej jej pracy. Dlatego bardzo ważne jest odpowiednie skonfigurowanie serwera zarówno pod względem sprzętowym, doboru właściwego oprogramowania oraz jego ustawień. Dodatkowo z biegiem czasu i działalnością klienta spływają nowe dane słownikowe oraz dokumenty, co powoduje przyrost bazy danych. Ważne jest więc monitorowanie stanu serwera SQL i odpowiednie reagowanie w celu zapewnienia jak najlepszej wydajności.

Niniejszy biuletyn zawiera wytyczne dla konfiguracji serwera bazy danych dedykowanego do pracy z Comarch ERP Optima. Przedstawiono w nim również podstawowe metody diagnozy problemów wydajnościowych oraz sposoby optymalizacji. W ostatnim rozdziale znajduje się obszerny opis cyklicznych czynności administracyjnych, których celem jest utrzymanie serwera SQL w dobrej kondycji. Do biuletynu dołączone są skrypty, które pozwalają zautomatyzować cykliczne czynności administracyjne dla wersji Express serwera SQL.

Planowanie instalacji

Dobór konfiguracji sprzętowej dla serwera bazy danych

Serwer bazy danych jest wrażliwym elementem, którego awaria może spowodować przestój całej firmy oraz duże straty finansowe, dlatego warto zainwestować w markowy, sprawdzony sprzęt. Taki serwer w atrakcyjnych cenach można np. nabyć w ramach Zintegrowanej Oferty Comarch.

Konfiguracja sprzętowa

Przy doborze serwera bazy danych należy zwrócić szczególną uwagę to, aby zapewniał on niezawodną pracę i bezpieczeństwo przechowywanych danych. Dlatego warto, aby jak najwięcej komponentów było nadmiarowych usuwając pojedyncze ogniwa awarii. Czyli dobrze jest zastosować podwójne zasilacze oraz zasilanie awaryjne (UPS) pozwalające na prawidłowe zamknięcie systemu w momencie braku prądu.
Jeżeli chodzi o wydajność to przede wszystkim należy zwrócić na ilość pamięci RAM oraz szybkość podsystemu dyskowego. Procesor zwykle odgrywa mniejsze znaczenie. Jednakże powinien zawierać rdzenie nowej generacji (Intel Nehalem lub lepszy) i taktowaniu przynajmniej 2 GHz.
Im więcej dostępnej pamięci tym lepiej, oczywiście ze względu na koszty, jej ilość musi być dobrana do zapotrzebowania, bazując na wielkości instalacji, czyli ilości użytkowników, wielkości baz danych oraz ich ilości. Orientacyjne ilości pamięci RAM dla różnych konfiguracji zostały podane w Podręczniku konfiguracji dla bieżącej wersji Comarch ERP Optima. Później oczywiście należy obserwować liczniki serwera i sprawdzać, czy nie ma potrzeby jej zwiększenia. Informacje na temat przykładowych liczników, na które warto zwrócić uwagę podano w punkcie 4. Diagnoza problemów wydajnościowych.
Podsystem dyskowy powinien być zabezpieczony przed awariami poprzez odpowiednią konfigurację. Zalecana konfiguracja to przynajmniej Raid 1 (mirror) dla wolumenu obsługującego system oraz w miarę możliwości Raid 10 dla wolumenu przechowującego dane. Dodatkowo należy zwrócić uwagę, aby kontroler dyskowy posiadał podtrzymywanie bateryjne, które umożliwia zastosowanie opcji write-back przyspieszającej działanie podsystemu dyskowego.
Najczęściej przyjmowaną jednostką wydajności podsystemu dyskowego jest IOPS[1] (ang. Input/Output Operations Per Second, IOPS), czyli ilość operacji wejścia wyjścia na sekundę. Jako operację wejścia/ wyjścia rozumie się odczyt lub zapis fragmentu danych, najczęściej o rozmiarze 4 kB.

Poniżej znajdują się orientacyjne dane dotyczące wydajności różnych podsystemów dyskowych:

DyskOrientacyjna wartość IOPS[2]
Dysk Sata 5400~50-80
Dysk Sata 7200 ~75-100
Dysk SAS 10k~140
Dysk SAS 15k~175-210
Dysk SSD~400-1000000[3]

Wymagania co do podsystemu dyskowego zależą od wielkości instalacji to znaczy wielkości bazy oraz ilości równoczesnych użytkowników.

Jako zgrubną zasadę można przyjąć, że dla mniejszych baz danych (<2 GB) należy zarezerwować około 15-25 IOPS dla użytkownika. Natomiast dla większych baz (> 2 GB) dla jednego użytkownika należy przeznaczyć 25-40 IOPS lub więcej.

Jak widać Rozwiązaniem godnym polecenia jest zastosowanie dysków SSD. Przy czym należy pamiętać o zabezpieczeniu ich przed awarią np. poprzez konfigurację RAID 1. Bardziej szczegółowe informacje dotyczące określenia wymagań aplikacji do podsystemu dyskowego można znaleźć w poniższym odnośniku: http://msdn.microsoft.com/en-us/library/ee410782(v=sql.100).aspx

Porównanie wydajności pracy Comarch ERP Optima z dyskami SSD i SATA znajduje się w biuletynie technicznym: OPT076 – Porównanie wydajności HDD vs SSD w Comarch ERP Optima.pdf, który jest dostępny na Indywidualnych Stronach Partnerów (https://www.erp.comarch.pl//partnerzy/default.aspx).

Biura rachunkowe:

Kilka mniejszych baz danych słabiej obciąża serwer niż jedna duża. Dlatego przy skalowaniu serwera SQL dla biura rachunkowego należy przede wszystkim sprawdzić jaka będzie wielkość największej bazy danych i pod nią dobierać konfigurację plus zabezpieczyć dodatkową ilość pamięci RAM współmiernie do ilości baz danych. Raczej nie należy przekraczać ilości 50 baz danych o wielkości do 200 MB na rdzeń procesora.

Edycje serwera SQL

Bardzo duże znaczenie dla wydajnej pracy serwera SQL jest właściwe dobranie edycji serwera SQL. Comarch ERP Optima jest dystrybuowana z darmową serwera SQL o nazwie Express. Edycja ta posiada określone ograniczenia co do możliwości wykorzystania zasobów komputera, na którym jest zainstalowana. Szczegóły znajdują się w poniższej tabeli.

EdycjaMaksymalna ilość pamięci RAM (dla puli buforów)Maksymalna wielkość bazy danychIlość obsługiwanych procesorów
SQL 2008 Express1 GB*4 GB1
SQL 2008 R2 Express1 GB*10 GB1
SQL 2012 / 2014 Express1 GB*10 GB1 (maksymalnie 4 rdzenie)
SQL 2008 R2 Workgroup3 GBBez ograniczeń (524 PB)2
SQL 2008 R2 Standard64 GBBez ograniczeń (524 PB)4
SQL 2012 Standard / BI64 GBBez ograniczeń (524 PB)4 procesory (do 16 rdzeni)
SQL 2014 Standard / BI128 GBBez ograniczeń (524 PB)4 procesory (do 16 rdzeni)

Źródło: http://www.microsoft.com/sqlserver/en/us/product-info/compare.aspx
*Badania niezależne od Producenta pokazują, że wersja Express może wykorzystać maksymalnie 1,4 GB RAM (http://sqlgeek.pl/2010/08/23/pl-sql-server-limity-w-sql-server-2008-r2-express-edition/)

Architektura 32 bit, a 64 bit.

Obecnie obowiązującą architekturą jest architektura 64 bitowa i w miarę możliwości zalecana jest aktualizacja do niej środowisk 32 bitowych, które posiadają ograniczenia związane z ilością adresowanej pamięci, a także różnymi komplikacjami w jej alokacji. W podstawowej konfiguracji proces 32 bitowy może maksymalnie zaadresować 2 GB pamięci, przy zastosowaniu specjalnego przełącznika można tą wartość zwiększyć do 3 GB, ale dzieje się to kosztem ilości dostępnej przestrzeni adresowej dla systemu operacyjnego dlatego należy robić to ostrożnie. Serwer SQL może dodatkowo wykorzystać mechanizm AWE, który pozwala na systemach 32 bitowych wyjść poza zakres 4 GB pamięci. Szczegóły można znaleźć w archiwalnym biuletynie technicznym OPT041-Wydajność Comarch OPT!MA a procesory wielordzeniowe i 64 bitowe, który jest dostępny na stronach walidowanych.
Na systemach 64 bitowych warto zwrócić uwagę, aby instalować również serwer SQL w wersji 64 bitowej ponieważ jego 32 bitowy odpowiednik będzie w stanie wykorzystać jedynie 4 GB z dostępnej pamięci nawet w edycji Standard.
Więcej informacji na temat możliwości wykorzystania pamięci operacyjnej przez poszczególne wersje systemów operacyjnych Windows można znaleźć tutaj:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

Konfiguracja serwera SQL

Większość parametrów serwera SQL należy pozostawić bez zmian, ponieważ domyślne wartości są optymalne dla większości warunków pracy. Sugerujemy jednakże zwrócić uwagę na
Maksymalną / Minimalna ilość wykorzystywanej pamięci RAM.

Minimalna i Maksymalna ilość wykorzystywanej pamięci RAM>

Parametr minimalnej i maksymalnej ilości wykorzystanej pamięci RAM odnosi się wyłącznie do jednego z komponentów serwera SQL, czyli puli buforów. Jest to kluczowy element jednakże, przy rezerwowaniu pamięci dla puli buforów należy wziąć pod uwagę również inne składniki samego serwera SQL jak i samego systemu operacyjnego.

Minimum Server Memory

Domyślną wartością parametru Minimum Server Memory jest zero, co oznacza, że serwer będzie dynamicznie zarządzał dostępną pamięcią RAM dla puli buforów. Ustawienie tego parametru powyżej zera oznacza, że serwer SQL nie będzie mógł zwolnić tej pamięci w razie potrzeby. Z drugiej strony w środowisku, gdzie pracuje więcej aplikacji prócz samego serwera SQL może być konieczne zarezerwowanie niezbędnego minimum pamięci, ponieważ niemożność zaalokowania niezbędnego minimum spowoduje konieczność korzystania z pliku wymiany na dysku twardym i znaczną degradację wydajności Serwera SQL. Na komputerach dedykowanych do pracy tylko z serwerem SQL zaleca się pozostawienie domyślnej wartości tego parametru.

Maximum Server Memory

Domyślna wartością tego parametru to: 2147483647 MB, co oznacza że Server SQL będzie chciał zająć całą dostępną pamięć na komputerze. Może to niestety prowadzić do spadku wydajności całego środowiska poprzez to, że pula buforów zajmie pamięć potrzebną do działania systemu operacyjnego lub innych komponentów serwera SQL. Dlatego zaleca się ograniczenie tej pamięci rezerwując niezbędną przestrzeń do działania systemu operacyjnego i pozostałych elementów serwera SQL (oraz ewentualnie dla dodatkowych aplikacji pracujących na tym systemie).

Ustawienia pamięci dla instancji Microsoft SQL Server

Poniżej znajdują się sugestie ustawień parametru Maximum Server Memory (przy założeniu, że na serwerze nie pracują dodatkowe aplikacje oraz inne moduły serwera SQL takie jak wyszukiwanie pełnotekstowe, analizy czy raporty). Dane te oczywiście dotyczą wersji, które nie posiadają wbudowanych ograniczeń tak jak wersja Express. Dla wersji Express biorąc pod uwagę wcześniej podane informacje można ustawić Maximum Server Memory na 1400 MB.

Pamięć fizycznaMaximum Server Memory
2 GB1500 MB
4 GB3200 MB
6 GB4800 MB
8 GB6400 MB
12 GB10000 MB
16 GB13500 MB
24 GB21500 MB

Źródło: http://www.sqlservercentral.com/blogs/glennberry/2009/10/29/suggested-max-memory-settings-for-sql-server-2005_2F00_2008/

Inne parametry

Optimize for Ad hoc Workloads

Włączenie parametru „Optimize for Ad hoc Workloads” pozwala na lepsze wykorzystanie dostępnej pamięci RAM w sytuacji, gdy na serwerze generowane jest wiele zapytań, które nigdy więcej lub bardzo rzadko są uruchamiane ponownie. Parametr ten powoduje, że plany dla zapytań „ad hoc” nie są zapisywane w pamięci podręcznej do późniejszego wykorzystania. Zapisywany jest tylko ich mały fragment, cały plan jest zapisywany dopiero przy powtórnym wykonaniu tego samego zapytania. W ten sposób oszczędzana jest pamięć RAM, przez co może być ona wykorzystana przez serwer SQL do innych celów, a co za tym idzie zwiększa się jego wydajność.

Zaawansowane właściwości serwera SQL – włączony parametr Optimize for Ad hoc Workloads

Zaleca się włączenie tego parametru przy pracy z Comarch ERP Optima. Opcja ta jest dostępna od wersji SQL 2008.

Zajętość pamięci planów dla zapytań można sprawdzić poniższym zapytaniem:

select objtype,
count(*) as number_of_plans,
sum(cast(size_in_bytes as bigint))/1024/1024 as size_in_MBs,
avg(usecounts) as avg_use_count
from sys.dm_exec_cached_plans
group by objtype

Poniższy wynik wskazuje, że plany typu „Adhoc” zajmują 1439 MB pamięci, co jest stosunkowo dużą wartością więc warto włączyć opcję „Optimize for ad hoc workloads”.

Za pomocą komendy:

DBCC FREESYSTEMCACHE('SQL Plans')

można wyczyścić pamięć podręczną planów dla planów typu Adhoc.

Diagnoza problemów wydajnościowych

Temat diagnozy wydajności serwera SQL jest bardzo obszerny, jednakże poniżej wybrano kilka podstawowych wskaźników, które warto sprawdzić, gdy występują problemy wydajnościowe.
Wszystkie poniższe wskaźniki dostępne są z poziomu systemu operacyjnego.
Narzędzia administracyjne \ Monitor wydajności

Nazwa parametruZalecane wartościZalecane działania
Procesor: Czas procesora [%]< 80%Jeżeli wartość tego parametru przynajmniej kilka razy dziennie na dłuższy czas przekracza zalecaną wartość należy zaplanować dołożenie drugiego procesora lub jego wymianę na wydajniejszy
System: Processor Queue Lenght< 2 (dla rdzenia)Jeżeli wartość tego parametru przynajmniej kilka razy dziennie na dłuższy czas przekracza zalecaną wartość należy zaplanować dołożenie drugiego procesora lub jego wymianę na wydajniejszy
Pamięć: Strony/s< 20Zbyt mała ilość dostępnej pamięci RAM
Pamięć: Dostępne bajty> 300Zbyt mała ilość dostępnej pamięci RAM
Dysk fizyczny: Czas dysku [%] (poddzielone przez ilość dysków)< 55%Wysoka wartość tego parametru może wskazywać na nie wystarczająco szybki podsystem dyskowy lub zbyt małą ilość dostępnej pamięci RAM.
Dysk fizyczny: Średnia długość kolejki dysku (podzielone przez ilość dysków)< 2Wysoka wartość tego parametru może wskazywać na nie wystarczająco szybki podsystem dyskowy lub zbyt małą ilość dostępnej pamięci RAM.
(najlepiej w okolicach zera)
SQL Server Buffer: Buffer Cache Hit Ratio> 90%Zbyt mała ilość dostępnej pamięci RAM dla serwera SQL
(najlepiej w granicach 99%)
Page life expectancy> 300Zbyt mała ilość dostępnej pamięci RAM dla serwera SQL

Zbyt mała ilość dostępnej pamięci dla serwera SQL może wynikać z poniższych czynników:

  • Za mało pamięci w serwerze
  • Ograniczenia wersji Express
  • Nieprawidłowo skonfigurowany parametr Max Server Memory
  • Ograniczenia architektury 32 bitowej

Importy dużych dokumentów poprzez pracę rozproszoną lub inne mechanizmy mogą na dłuższy czas blokować dostęp do tabel, a przez co powodować wydłużenie czasu operacji dla pozostałych użytkowników. Dlatego zaleca się, aby szczególnie duże importy były wykonywane poza godzinami pracy innych użytkowników.
Jeżeli jakiś scenariusz działania okazuje się szczególnie wolny prosimy o opisanie go krok po kroku i zgłoszenie go przez System Obsługi Zgłoszeń (SOZ).

Optymalizacja dużych baz danych

Program jest dostosowany do pracy w większości warunków, jednakże niektóre szczególnie duże bazy ze względu na specyficzny rozkład danych w tabelach mogą wymagać dodatkowej optymalizacji. Za duże bazy danych uważamy te, które mają rozmiar rzędu kilku gigabajtów lub więcej. Przed przystąpieniem do poniższych czynności dobrze upewnić się, czy serwer jest prawidłowo skonfigurowany i posiada odpowiednią ilość zasobów.

Wyszukiwanie brakujących indeksów

Microsoft SQL Server posiada wbudowane mechanizmy, które pozwalają określić orientacyjnie jakich indeksów może brakować. W tym celu można uruchomić na serwerze następujące zapytanie:

select d.*
, s.avg_total_user_cost
, s.avg_user_impact
, s.last_user_seek
,s.unique_compiles
from sys.dm_db_missing_index_group_stats s
,sys.dm_db_missing_index_groups g
,sys.dm_db_missing_index_details d
where s.group_handle = g.index_group_handle
and d.index_handle = g.index_handle
order by s.avg_user_impact desc
go

Źrodło: http://www.google.pl/url?sa=t&rct=j&q=performance_tuning_waits_queues.doc&source=web&cd=1&ved=0CFkQFjAA&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F4%2F7%2Fa%2F47a548b9-249e-484c-abd7-29f31282b04d%2FPerformance_Tuning_Waits_Queues.doc&ei=IrjYT__PAcXk4QSOxJzRAw&usg=AFQjCNFRIebSlMLnry8gH99CQklhdmokJw

Zapytanie to najlepiej uruchomić po dłuższej pracy użytkowników wykonujących swoje zadania z Comarch ERP Optima w szczególności w obszarach, gdzie zauważają problemy wydajnościowe. Należy pamiętać, że dane o brakujących indeksach są usuwane po restarcie serwera SQL.
Przykładowy wynik powyższego zapytania (pominięto kilka kolumn, aby zachować czytelność).

Po pierwsze patrzymy na kolumny avg_user_impact oraz avg_total_user_cost, podają one zysk jaki można uzyskać przy zastosowaniu danego indeksu. Pierwszy z nich avg_user_impact wskazuje na procentową poprawę w zmniejszeniu kosztu wykonania zapytań użytkownika . Drugi natomiast avg_total_user_cost podaje całkowity zysk w koszcie wykonywanych przez użytkownika zapytań.
Należy mieć również świadomość, że podejście to ma również swoje ograniczenia. Najbardziej istotne z nich jest takie, że podane dane należy traktować jako sugestię, a nie jako konieczność. Pozostałe ograniczenia podane są tutaj: http://msdn.microsoft.com/en-us/library/ms345485(v=sql.105).aspx

Poniżej znajduje się skrypt używany przez Dział Wsparcia Microsoft:
(http://msdn.microsoft.com/en-us/library/ms345421.aspx)

PRINT 'Missing Indexes: '
PRINT 'The "improvement_measure" column is an indicator of the (estimated) improvement that might '
PRINT 'be seen if the index was created. This is a unitless number, and has meaning only relative '
PRINT 'the same number for other indexes. The measure is a combination of the avg_total_user_cost, '
PRINT 'avg_user_impact, user_seeks, and user_scans columns in sys.dm_db_missing_index_group_stats.'
PRINT ''
PRINT '-- Missing Indexes --'
SELECT CONVERT (varchar, getdate(), 126) AS runtime,
mig.index_group_handle, mid.index_handle,
CONVERT (decimal (28,1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) AS improvement_measure,
'CREATE INDEX missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)
+ ' ON ' + mid.statement
+ ' (' + ISNULL (mid.equality_columns,'')
+ CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END + ISNULL (mid.inequality_columns, '')
+ ')'
+ ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE CONVERT (decimal (28,1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC
PRINT ''
GO

Przygotowuje on od razu definicję indeksu wraz z przykładową nazwą sortując indeksy po polu „miara poprawy”, które jest wyliczane biorąc pod uwagę wspomniane wcześniej kolumny: avg_total_user_cost, avg_user_impact, oraz dodatkowo user_seeks i user_scans z sys.dm_db_missing_index_group_stats.

Uwaga

Należy przygotować skrypt dodający oraz usuwający dodawane indeksy, ponieważ dodatkowe indeksy uniemożliwią wykonanie konwersji do nowej wersji programu. Po skonwertowaniu bazy można na nowo dodać przygotowane indeksy

Uwaga

Dodane indeksy mogą mieć negatywny wpływ na operacje dodawania, aktualizowania i usuwania rekordów w bazie, dlatego należy przetestować ich wpływ na całościowe funkcjonowanie programu.

Database Engine Tuning Advisor

Pełne wersje Microsoft SQL Server posiadają dodatkowe narzędzie o nazwie Database Engine Tuning Advisor. Pozwala ono również na dodanie brakujących indeksów na podstawie zapisanego wcześniej ruchu SQL. Ruch ten można zapisać za pomocą innego narzędzia Microsoft SQL Server Profiler, które również jest dostępne w pełnej wersji serwera SQL.
W skrócie proces optymalizacji można przedstawić w poniższych krokach:

  • Zapis ruchu za pomocą Microsoft SQL Server Profiler
  • Przygotowanie optymalizacji w Database Engine Tuning Advisor
  • Zapis rekomendacji
  • Przygotować plik usuwający dodatkowe indeksy i statystyki
  • Utworzenie dodatkowych indeksów i statystyk

Zapis ruchu za pomocą Microsoft SQL Server Profiler

Po wyborze nowego trace’a należy wskazać szablon Tuning, zaleca się zapisać plik od razu na dysk i ograniczyć jego rozmiar np. do 100 MB. Zaznaczony domyślnie parametr Enable file rollover powoduje utworzenie nowego pliku po osiągnięciu zadanego limitu. Zbyt duże pliki znacząco zwiększają czas analizy przez Database Engine Tuning Advisor.

Przygotowanie optymalizacji w Database Engine Tuning Advisor

Po zakończeniu zapisu ruchu przechodzimy do Database Engine Tuning Advisor.
Na pierwszej zakładce „General” nowej sesji wskazujemy plik (File) jako źródło ruchu do optymalizacji oraz podajemy bazę do analizy. Na drugiej zakładce „Tuning Options” pozostawiamy domyślne parametry.

W celu uruchomienia analizy klikamy ikonę Start Analysis (menu Actions \ Start Analysis)

Zapis rekomendacji

Po zakończonej analizie otrzymujemy szacowany wzrost wydajności oraz rekomendacje co do założenia dodatkowych indeksów i statystyk. Przygotowane rekomendacje należy zapisać w pliku poprzez przejście do menu Action \ Save Rekommendations.
Z tak przygotowanych rekomendacji można wybrać kilka lub wszystkie indeksy i statystyki, jednakże należy pamiętać, że każdy dodatkowy indeks będzie spowalniał operacje dodawania, aktualizowania i usuwania rekordów w tabeli, której on dotyczy. Następnie wybrane indeksy i statystyki należy zapisać w skrypcie nadając im nazwy, które będą łatwe do identyfikacji. Na koniec należy również przygotować skrypt, który będzie usuwał niestandardowe indeksy i statystyki, ponieważ trzeba je usuwać przed przystąpieniem do konwersji bazy danych. Po zakończeniu konwersji można je ponownie dodać.

Uwaga

Należy przygotować skrypt dodający oraz usuwający dodawane indeksy, ponieważ dodatkowe indeksy uniemożliwią wykonanie konwersji do nowej wersji programu. Po skonwertowaniu bazy można na nowo dodać przygotowane indeksy.

Uwaga

Dodane indeksy mogą mieć negatywny wpływ na operacje dodawania, aktualizowania i usuwania rekordów w bazie, dlatego należy przetestować ich wpływ na całościowe funkcjonowanie programu.

Cykliczne czynności administracyjne

Cykliczne czynności administracyjne są bardzo istotne z punktu widzenia bezpieczeństwa jak i wydajności serwera SQL i należy traktować je jako obowiązkowe, a nie opcjonalne.
Do najważniejszych czynności administracyjnych można zaliczyć:

  • Kopia bezpieczeństwa
  • Cykliczne odtwarzanie kopii bezpieczeństwa w celu weryfikacji poprawności backupu.
  • Optymalizacja indeksów
  • Kontrola poprawności baz danych DBCC CHECKDB

Dla wydajności szczególnie dla większych baz duże znaczenie ma cykliczna optymalizacja indeksów w bazie, które ze względu na swoją defragmentację będą spowalniać pracę Comarch ERP Optima.
W kolejnych podrozdziałach opisano w jaki sposób można zautomatyzować niektóre z wymienionych czynności administracyjnych.

Maintenance Plan – zautomatyzowane strojenie dla pełnych wersji MS SQL

Każda pełna wersja MS SQL posiada mechanizm automatyzacji procesów, których zadaniem jest optymalizowanie bazy danych oraz kreowanie kopii bezpieczeństwa. Raz skonfigurowany zestaw operacji nazywany Maintenance Plan’em, czyli planem serwisowym, może być wielokrotnie uruchamiany w zadanym czasie. Tworzony jest zatem pewien „automat”, który o konkretnej porze wykona za nas operacje, które można wykonać z interfejsu programu Comarch ERP Optima.
W niniejszym podrozdziale przedstawiony został przykład planu serwisowego obejmującego:

  • Sprawdzenie spójności i ciągłości bazy danych (element testów integralności)
  • Odbudowę indeksów (ikona pioruna na oknie listy baz danych w konfiguracji)
  • Aktualizację statystyk
  • Wykonanie kopii bezpieczeństwa bazy konfiguracyjnej oraz firmowej
  • Usunięcie plików powstałych na potrzeby wykonywania planu

Materiał został sporządzony przy pomocy MS SQL 2008 za pomocą kreatora. Dla wcześniejszych wersji silnika bazy danych postępuje się podobnie.

Krok 1 – Uruchomienie kreatora Maintenance Plan’u

Kreator uruchamiany jest z poziomu programu Management Studio (pełna wersja).
SQL Server /Management/Maintenance Plan Wizard

Krok 2 – Wskazanie nazwy planu oraz terminu jego wykonywania

Kolejnym oknem kreatora, na które natrafiamy, jest krótki opis możliwości samego kreatora. Możemy zaznaczyć opcję, aby nie pokazywało się ono następnym razem. Interesuje nas następne okno.

Wypełniamy w nim pola odpowiadające za nazwę oraz opis planu. Deklarujemy następnie jego ramy czasowe. Mamy dwie możliwości:
„Seperate schedule for each task” – opcja pozwala na ustalenie terminu wykonania dla każdej operacji planu osobno.
„Single schedule for entire plan or no schedule” – opcja pozwala na ustalenie terminu wykonania całego planu lub wykonania go na życzenie (on demand).
Naciskając przycisk „Change” przechodzimy do okna konfiguracji ram czasowych.

Poniższy obraz przedstawia wybór ram czasowych dla opisywanego przykładu.

Istnieją cztery kombinacje ram czasowych dla planu. Mamy zatem:

  • „Start automatically (…)” – plan uruchomi się tuż po uruchomieniu serwera oraz usługi SQL Agent
  • „Start whenever when CPU (…)” – plan uruchomi się, kiedy procesor nie będzie obciążony
  • „Recurring” – plan ustala się według interwałów rok / miesiąc / dzień
  • „On time” – plan wykona się tylko raz w zadanym dniu i godzinie

W przykładzie użyjemy opcji terminarza według interwału co tydzień. Na obrazku widać, iż ma wykonywać się w każdy piątek o godzinie 18:30. Plan ma rozpocząć się od 15 grudnia 2009 roku i ma nie mieć końca.

Plan ma symulować koniec tygodnia roboczego, kiedy po godzinie 18:00 wszyscy pracownicy skończyli pracę, a serwer SQL nie jest już niczym obciążony.

Poprawne wskazanie ram czasowych dla planu jest bardzo istotne. Uruchomienie go podczas szczytu aktywności pracowników może nawet uniemożliwić im pracę. Podczas optymalizacji serwer pobiera dużo zasobów sprzętowych oraz blokuje elementy struktury bazy danych.

Krok 3 – wskazanie składników planu serwisowego

Kolejne okno kreatora planu przedstawia zakres czynności, jakie można wykonać. Są to:

  • „Check Database Inegrity” – kontrola poprawności struktury bazy danych. Nie można mylić jej z testami integralności, które walidują poprawność samych danych.
  • „Shrink Database” – pomniejszenie wielkości bazy danych poprzez usunięcie już niepotrzebnej rezerwy. Serwer SQL podczas pracy alokuje nowe zasoby na potrzeby przyszłych danych oraz operacji. Nie usuwa natomiast powstałem w tej sposób nadwyżki, kiedy dane zostaną usunięte a operacja się zakończy. Shrink pozwala na uwolnienie tych danych. Należy jednak pamiętać o tym, iż usunięcie nadmiarowych danych skutkuje fragmentacją dysku i może negatywnie wpływać na wydajność SQL. Nie zaleca się shrinkowania bazy danych tuż po wykonaniu odbudowy indeksów. Może to przynieść efekt odwrotny od zamierzonego.
  • „Reorganize Index” – defragmentacja indeksów.
  • „Rebuild Index” – odbudowa indeksów na nowo. Operacja ta jest bardziej długotrwała aniżeli defragmentacja, lecz daje lepsze efekty.
  • „Update Statistics” – aktualizacja “query optimizer’a” dzięki której serwer będzie potrafił wydajniej wykonywać polecenia.
  • „Clean Up History” – usuwanie historii wykonywania i odtwarzania kopii baz danych.
  • „Execute SQL Server Agent Job” – wykonanie “Job’a”.
  • „Back Up Database” – wykonanie kopi bezpieczeństwa bazy danych.
  • „Maintenance Cleanup Task” – usunięcie plików powstałych podczas wykonywania planu.

Poniższy obraz przedstawia wybór opcji, które realizowane są w opisywanym przykładzie.

Krok 4 – wskazanie kolejności wykonywania składników planu serwisowego

Kolejne okno kreatora planu pozwala na zadecydowanie, w jakiej kolejności powinny wykonać się poszczególne składniki planu serwisowego.

Krok 5 – wskazanie baz danych dla każdego elementu planu serwisowego

Każdy element planu serwisowego można wykonać dla dowolnego zestawu baz danych. Naszym celem będzie baza konfiguracyjna i baza firmowa.
Krok ten pozwala na elastyczność podczas tworzenia planu dla serwera przechowującego dużą ilość baz danych. Każdej z nich można przypisać oddzielne punkty planu.
Ogólna zasada wyboru baz danych jest wspólna dla wszystkich elementów planu serwisowego. Możemy wybrać:

  • „All databases” – operacja zostanie wykonana na wszystkich bazach danych znajdujących się na serwerze.
  • „System databases” – operacja zostanie wykonana tylko dla systemowych baz danych (przykład nie zakłada żadnych optymalizacji na tym typie baz danych).
  • „All user databases” – operacja zostanie wykonana tylko dla baz danych użytkownika, czyli niesystemowych. Dzięki tej opcji mamy pewność, iż zoptymalizujemy wszystkie bazy danych i nie narazimy na niebezpieczeństwo bazy systemowe.
  • „These databases” – operacja zostanie wykonana tylko dla zaznaczonych baz danych. Opisywany przykład wykorzystuję tę opcję.
  • „Ignore databases (…)” – wszystkie te bazy danych, których stan nie jest „Online” nie będą podlegać optymalizacji.

Poniższy obraz przedstawia wybór baz danych poddawanych sprawdzaniu poprawności. Każde kolejne okno opiera się na podobnym wyborze.

Krok 6 – charakterystyczne opcje dla każdego elementu planu serwisowego

Podczas wskazywania, które bazy danych mają zostać zoptymalizowane, możemy ustalić pewne opcje charakterystyczne dla elementu planu serwisowego.
Dla elementów wykorzystanych w przykładzie mamy:

  • Check Database Inegrity
    -Include indexes – po odznaczeniu proces kontroli nie obejmie indeksów, zajmie więc mniej czasu.
  • Rebuild Index
    -Reorganize pages with the default amount of free space – odbudowa indeksów z domyślnym
    “fill factor”. Oznacza to, iż indeksy zostaną odbudowane zgodnie z ustawieniami zadanymi podczas kreowana bazy danych, czyli przewidziane przez Comarch.
    -Change free space per page percentage to … – wskazanie wartości “fill factor” samodzielnie.
    -Sort results in tempdb – zastosowanie SORT_IN_TEMPDBoption.
    -Keep index online while reindexing – podczas odbudowy indeksy będą możliwe do odczytu (ta opcja dostępna jest dla edycji Enterprise)
  • Update Statistics
    -Update: – wybór elementów poddanych aktualizacji.
    -Scan type: – zakres elementów poddanych aktualizacji.
  • Back Up Database
    -Sekcja „Create a backup file for every database” – opcje związane z katalogiem, w którym zostaną umieszczone pliki kopii zapasowych.
  • Maintenance Cleanup Task
    -Dostępne opcje pozwalają na zadecydowanie jaki typ danych historycznych ma podlegać kasowaniu. Wskazuje się albo pewien plik, albo folder. Określa się również wymagany wiek pliku.

Krok 7 – wskazanie sposobu raportowania wyników wykonania planu serwisowego oraz zakończenie pracy z kreatorem.

Ostatnim etapem tworzenia planu serwisowego jest wskazanie ścieżki dostępu dla pliku raportu. Zawiera on zestawienie podjętych czynności oraz wyniki ich działania.
Po zakończeniu kreatora, nowy plan znajduje się na liście Maintenance Plans w programie Management Studio.

Na tym etapie kończy się konfiguracja planu serwisowego. Wykona się w następny piątek o godzinie 18:30.
Szerszy opis wszystkich elementów Maintenance Plan’u w języku angielskim można uzyskać na stronie: http://msdn.microsoft.com/en-us/library/ms188981.aspx

Plan serwisowy dla bezpłatnych wersji MS SQL

Opisany wcześniej plan serwisowy zbudować można tylko dla płatnych wersji silnika bazy danych. Nic nie stoi jednak na przeszkodzie, aby samemu sporządzić podobną funkcjonalność i zaproponować ją klientowi. Podobny efekt uzyskamy poprzez sporządzenie:

  • Skryptu SQL, który zawierał będzie wszystkie potrzebne dla optymalizacji zapytania.
  • Skryptu JS/VBS lub pliku .bat, który będzie zdalnie uruchamiał skrypt SQL z poziomy konsoli.
  • Harmonogramu systemu Windows, w którym zawrze się ramy czasowe planu.


W niniejszym biuletynie technicznym załączone zostały dwa pliki:

Plik StrojenieBazy.sql to skrypt zawierający wszystkie niezbędne zapytania, aby przeprowadzić plan tożsamy
z wcześniej opracowanym Maintenance Plan’em. Przed użyciem należy zmodyfikować w nim dwa parametry:

SET @Nazwa_bazy = 'CDN_DEMO’ — Tu wpisz nazwę bazy danych do optymalizacji
SET @Sciezka = N’C:\BACKUP\’ — Tu wpisz ścieżkę dostępu do katalogu dla kopii baz

Skrypt optymalizuje tylko jedną, wybraną bazę danych. Został tak sporządzony dla łatwiejszego zrozumienia jego działania. Warto prześledzić jego strukturę.

Drugi skrypt o nazwie StrojenieBazCDN.sql wymaga wskazania ścieżki dostępu do katalogu dla kopii baz. Zastosowano w nim kursor wyszukujący wszystkie bazy danych, których nazwa zaczyna się od ‘CDN’. Dla każdej z nich przeprowadzona zostanie optymalizacja.

Przed uruchomieniem skryptu należy zmodyfikować w nim następujące elementy:

sqlcmd.exe -S SERWER -E -i D:\StrojenieBazCDN.sql -o C:\Backup

  • SERWER – nazwa serwera, na którym znajdują się bazy danych.
  • D:\StrojenieBazCDN.sql – ścieżka dostępu oraz nazwa skryptu SQL.
  • C:\Backup – ścieżka docelowego miejsca składowania kopii baz danych (katalog musi istnieć).

Aby uruchomić automatyczne wykonywanie planu serwisowego należy w harmonogramie systemu Windows utworzyć nową regułę, która będzie w zadanym czasie uruchamiać odpowiedni skrypt VBS. Tym sposobem uzyskamy ten sam efekt, jaki przynieść może Maintenance Plan.

Pliki do pobrania




OPT032 – Handlowy dokument identyfikacyjny

Data aktualizacji: 20-11-2019

Wstęp

29 czerwca 2003 weszło w życie Rozporządzenie Ministra Rolnictwa i Rozwoju Wsi (Dz. U. nr 106, poz. 1000), w którym podany został wzór handlowego dokumentu identyfikacyjnego (HDI) obowiązujący w obrocie niektórymi artykułami spożywczymi pochodzenia zwierzęcego. Na podstawie tego rozporządzenia mięso rozebrane oraz jego przetwory, podobnie jak inne produkty wymienione w rozporządzeniu, zaopatrywane będą w handlowy dokument identyfikacyjny wystawiany przez firmę wprowadzającą na rynek środki spożywcze pochodzenia zwierzęcego.

W Comarch ERP Optima dokument HDI można wydrukować z poziomu formularza faktury. W tym celu należy do wydruków użytkownika podłączyć wydruk załączony do tego biuletynu.

Uwaga
Wydruk dokumentu HDI odbywa się przy pomocy Generatora Raportów.

Handlowy dokument identyfikacyjny – dane o towarze

Aby na dokumencie HDI wydrukowane zostały informacje dotyczące towarów pobranych na Fakturę Sprzedaży, należy najpierw uzupełnić dane na karcie towaru.

Niezbędne parametry to:

  • nazwa towaru
  • opis towaru (obligatoryjny)
  • jednostka miary (powinna być to jednostka wagowa np. kg)
  • jednostka pomocnicza (jednostka opakowania zbiorczego)
  • ilość jednostek podstawowych w opakowaniu zbiorczym

Dane pobierane bezpośrednio z Faktury Sprzedaży:

  • nazwa i adres wysyłającego (dane adresowe z Pieczątki Firmy)
  • numer faktury, do której drukowany jest dokument HDI
  • data wysyłki (data wystawienia faktury)
  • ilość towaru

Uwaga
Na dokument HDI nie są przenoszone pozycje, które na karcie towaru mają zdefiniowany typ usługa.

Handlowy dokument identyfikacyjny – wydruk

Po wybraniu opcji wydruku HDI pojawia się dodatkowe okno, w którym należy wprowadzić dane, które wymagane są na dokumencie HDI, a nie ma ich na Fakturze Sprzedaży:

  • numer dokumentu HDI
  • weterynaryjny numer identyfikacyjny zakładu
  • rynek, na który zakład został zakwalifikowany do prowadzenia sprzedaży. Po wyborze opcji inne państwa pojawia się dodatkowe pole, gdzie należy wprowadzić rynki sprzedaży innych państw
  • pochodzenie surowca
  • miejsce pozyskania, przetworzenia lub składowania
  • miejsce przeznaczenia
  • rodzaj transportu i jego numer identyfikacyjny
  • komentarz – dane dotyczące procesu technologicznego, norm jakościowych i produkcyjnych oraz stosowanych przez producenta systemów kontroli jakości

Wprowadzone dane są zapamiętywane i podpowiadają się podczas wykonywania kolejnego wydruku HDI.

Handlowy dokument identyfikacyjny – podłączenie wydruku do Comarch ERP Optima

W załączniku znajduje się przykładowy wydruk dokumentu HDI. Wydruk należy podpiąć na formularzu Faktury Sprzedaży (patrz Rysunek 1, poniżej).

W konfiguracji wydruków Formularz Faktury Sprzedaży, zakładka [Ogólne] importujemy definicję z pliku HDI.xml.

Rysunek 1. Import wydruku HDI.

Pliki do pobrania




OPT009 – Import danych z arkusza Microsoft Excel

Data aktualizacji: 09-07-2021

Eksport /Import – przygotowanie danych

Od wersji 2012 Comarch ERP Optima można zaimportować towary i kontrahentów w takim formacie jak zostały wyeksportowane z programu. Oznacza to, że jeśli wykonamy eksport do MS Excel, zmodyfikujemy dane np. ceny dla towarów to możemy zaimportować taki plik bez konieczności zmian nazw kolumn.

Dane można wyeksportować za pomocą ikony , która dostępna jest pod listą odpowiednio kontrahentów (Ogólne/ Kontrahenci) oraz towarów/usług (Ogólne/ Cennik).

Dane można zaimportować za pomocą ikony , która dostępna jest obok ikony do eksportu.

Import można wykonać również z poziomu menu Narzędzia/ Importy/ Słowników z pliku/ Kontrahenci lub Cennik. Przy imporcie cennika, w oknie Parametry importu cennika należy wybrać: Plik w formacie MS Excel i wskazać plik, w którym znajduje się arkusz z danymi.

Pierwszy niepusty wiersz w arkuszu musi zawierać nazwy kolumn. Kolumny mogą występować w dowolnej kolejności. Każdy arkusz musi zawierać dwie lub trzy kolumny obowiązkowe oraz różną ilość kolumn opcjonalnych. Format komórek danej kolumny musi być taki sam. Błędem jest umieszczenie w jednej kolumnie raz wartości 11, a potem w innym wierszu 21,99. Powinno być 11,00 i 21,99.

Od wersji 2021.4 opcja importu i eksportu cennika poprzez plik MS Excel umożliwia również dodawanie/aktualizację informacji dla towarów przesyłanych do sklepów internetowych takich jak nazwy i opisy w językach, statusy dostępności, koszty dostaw, a także atrybuty czasowe i jednostki miary.

Importowane dane

Kontrahenci

Arkusz MS Excel – należy zapisać jako skoroszyt programu MS Excel 97-2003.

Wymagane są trzy kolumny: Kod, Nazwa, NIP

Nazwa arkusza w pliku może być dowolna. Jeśli w pliku jest więcej wypełnionych arkuszy szukany jest pierwszy, który ma kolumnę NIP.

Lista form płatności budowana jest w oparciu o pola: FormaPlatnosciTerminPlatnosci

Wszystkie płatności przypinane są do kasy gotówkowej. Dla każdego kontrahenta importowane są następujące pola:

Arkusz Kontrahenci
Lp.Nazwa pola w tabeli CDN.KontrahenciNazwa pola w arkuszu KontrahenciWartości wymagane w polu arkusza
1.Knt_KodKodKod kontrahenta – pole obowiązkowe
2.Knt_Nazwa1NazwaNazwa kontrahenta cz.1 – pole obowiązkowe
3.Knt_Nazwa2Nazwa2Nazwa kontrahenta cz. 2
4.Knt_Nazwa3Nazwa3Nazwa kontrahenta cz. 3
5.Knt_TelefonTelefonNumer telefonu
6.Knt_Telefon2Telefon2Drugi numer telefonu
7.Knt_TelefonSmsTelefonSmsTelefon dla SMS
8.Knt_FaxFaxNumer faxu
9.Knt_UlicaUlicaAdres kontrahenta – ulica
10.Knt_NrDomuNrDomuAdres kontrahenta – numer budynku
11.Knt_NrLokaluNrLokaluAdres kontrahenta – numer lokalu
12.Knt_KodPocztowyKodPocztowyKod pocztowy miasta kontrahenta
13.Knt_Poczta PocztaPoczta
14.Knt_Miasto MiastoMiasto
15.Knt_KrajKrajKraj
16.Knt_WojewodztwoWojewodztwoWojewództwo
17.Knt_PowiatPowiatPowiat – pole niedostępne na formularzu kontrahenta, możliwe uzupełnienie z poziomu bazy danych
18.Knt_GminaGminaGmina – pole niedostępne na formularzu kontrahenta, możliwe uzupełnienie z poziomu bazy danych
19.Knt_URLURLAdres strony WWW kontrahenta
20.Knt_GrupaGrupaGrupa kontrahentów
21.Knt_FinalnyOsobaFizyczna0 – podmiot gospodarczy
1 – osoba fizyczna
22.Knt_NIPENIPNumer NIP – pole obowiązkowe
23.Knt_NIPKrajNIPKrajPrzedrostek NIP dla krajów UE
24.Knt_ZezwolenieZezwolenieNumer zezwolenia na działalność gospodarczą
25.Knt_RegonRegonNumer REGON
26.Knt_PeselPeselNumer PESEL
27.Knt_EmailEmailAdres e-mail
28.Knt_RachunekNrBankRachunekNrNumer rachunku kontrahenta
29.Knt_BnkNazwaBankNazwaNazwa banku
30.Knt_OsNazwiskoOsobaNazwisko przedstawiciela
31.Knt_OpisOpisDodatkowy opis kontrahenta
32.Knt_RodzajRodzajO – odbiorca, D – dostawca, K – konkurencja, P – partner, T – klient potencjalny
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowane jest O (odbiorca)
33.Knt_PodatekVATPlatnikVAT0 – (zero) kontrahent nie jest płatnikiem VAT
1 – kontrahent jest płatnikiem VAT
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowane jest 1 (płatnik VAT)
34.Knt_PodatekVatPodatnikVatCzynnyPodatnik VAT czynny
0 – parametr niezaznaczony
1 – parametr zaznaczony
35.Knt_ExportEksport0 – (zero) kontrahent krajowy
1 – kontrahent pozaunijny
2 – pozaunijny (zwrot VAT)
3 – kontrahent UE
4 – wewnątrzunijny trójstronny
5 – podatnikiem jest nabywca
6 – poza terytorium kraju
7 – poza terytorium kraju (stawka np.)
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowane jest 0 – (zero) kontrahent krajowy.
W przypadku kontrahentów wewnątrzunijnych oraz wewnątrzunijnych trójstronnych z kolumny NIPKraj pobierany jest wymagany kod kraju UE.
36.Knt_LimitKredytuLimitKredytuJeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowane jest 0 (zero)
37.Knt_TerminTerminTermin płatności – określany w dniach od daty wystawienia dokumentu.
38.Knt_FplID z CDN.FormyPlatnosciFormaPlatnosciSłownie wyrażona forma płatności. Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowane jest gotówka.
39.Knt_CenyCenyCena dla klienta
0 – cena domyślna
1 – cena zakupu
2 – pierwsza cena sprzedaży
3 – druga cena sprzedaży
4 – trzecia cena sprzedaży
5 – czwarta cena sprzedaży
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowane jest 2 (pierwsza cena sprzedaży). Jeśli w bazie, do której importujemy nie ma ceny z arkusza to jako cena domyślna ustawiana jest cena „domyślna”.
40.Knt_CenyCenyNazwaNazwa ceny domyślnej np. hurtowa 2
Cena domyślna jest ustalana na podstawie nazwy, a jeśli nazwa nie zostanie znaleziona w bazie danych to cena domyślna ustalana jest na podstawie numeru z kolumny: Ceny
41.CDN.Rabaty, dla Rab_typ=2 (jeden kontrahent / wszystkie towary)UpustWartość upustu. Jeżeli kontrahent na 10% upustu należy wpisać 10 (bez znaczka procentu).
42.Knt_NieNaliczajOdsetekNieNaliczajOdsetekNie naliczać odsetek dla płatności kontrahenta.
43.Knt_MetodaKasowaMetodaKasowaMetoda kasowa
0 – niezaznaczony żaden parametr
1 – Zakup (parametr zależny od Podatnik VAT czynny)
2 – Sprzedaż
44.Knt_WindykacjaEMailWindykacjaEMailAdres poczty e-mail osoby reprezentującej firmę w sprawach windykacji należności.
45.Knt_WindykacjaTelefonSmsWindykacjaTelefonSmsTelefon dla SMS
46.Knt_AlgorytmAlgorytmNettoBruttoDomyślny algorytm naliczania podatku VAT na dokumentach handlowo – magazynowych
0 – netto
1 – brutto
47.Knt_WalutaWalutaDomyślna waluta kontrahenta
Jeżeli waluty nie ma w programie, wówczas przy imporcie jest ona dodawana w Konfiguracji Programu /Ogólne/Waluty .

Towary

Wymagane są trzy kolumny: Kod, Nazwa, JM

Nazwa arkusza w pliku może być dowolna. Jeśli w pliku jest więcej wypełnionych arkuszy szukany jest pierwszy, który ma kolumnę J.M. lub JM

W przypadku, gdy towar posiada więcej jednostek miary lub kodów EAN należy dodać odpowiednio arkusz: JednostkiMiary lub KodyKreskowe

Dla arkusza JednostkiMiary wymagane pola to: KodTowaru, JMZ

Dla arkusza KodyKreskowe wymagane pola to: KodTowaru, Ean, Domyslny

W przypadku, gdy mają być importowani producenci lub marki należy dodać odpowiednio arkusz:

Producenci lub Marki.

Dla arkusza Producenci wymagane pole to: Kod

Dla arkusza Marki wymagane pole to: Marka

Aby zaimportować kody CN należy dodać arkusz KodyCN, dla którego wymagane jest pole Kod.

Aby zaimportować dane towarowe dla sklepów internetowych (od wersji 2021.4) należy dodać odpowiednio arkusze eHandel, eHandelJezyki, eHandelJednostki.

Arkusz eHandel zawiera dane dot. udostepnienia towaru w e-Sklep takie jak grupa domyślna do sklepu, statusy dostępności, koszty dostaw oraz atrybuty czasowe
Dla arkusza eHandel wymagane pola to: KodTowaru, Grupa

Arkusz eHandelJezyki zawiera dane dot. nazw i opisów towarów dla Comarch e-Sklep w językach obcych
Dla arkusza eHandelJezyki wymagane pola to: KodTowaru, JęzykID, Nazwa

Arkusz eHandelJednostki zawiera dane dot. Jednostek miar wysyłanych do Comarch e-Sklep
Dla arkusza eHandelJednostki wymagane pola to: KodTowaru, JednostkaPomocnicza

Jeżeli pozycja cennika jest towarem złożonym nie jest przenoszona receptura produktu. Nie są importowane waluty.

Jako nazwy kolumn w arkuszu dla tabeli CDN.Towary mogą być stosowane również nazwy kolumn tej tabeli zgodne ze strukturą bazy danych, czyli poprawny zapis nazwy kolumny odpowiedzialnej za kod towaru to: Kod lub Twr_Kod

Dla każdej pozycji cennika importowane są następujące pola:

Arkusz Cennik
Lp.Nazwa pola w tabeli CDN.TowaryNazwa pola w arkuszu CennikWartości wymagane w polu arkusza
1.Twr_KodKodKod towaru - pole obowiązkowe
2.Twr_NazwaNazwaNazwa towaru - pole obowiązkowe
3.Twr_JmJMNazwa jednostki miary - pole obowiązkowe
4. Twr_JMWysCmWysokoscCmWysokość dla jednostki podstawowej (zakładka [Jednostki, EAN, VAT] na formularzu towaru
5. Twr_JMSzerCmSzerokoscCmSzerokość dla jednostki podstawowej (zakładka [Jednostki, EAN, VAT] na formularzu towaru
6. Twr_JMDlugCmDlugoscCmDługość dla jednostki podstawowej (zakładka [Jednostki, EAN, VAT] na formularzu towaru
7.Twr_JmZJmZDodatkowa jednostka miary. Jeżeli towar posiada więcej jednostek miary należy dodać arkusz JednostkiMiary.
8.Twr.JMPrzelicznikLPrzelicznik_JmJmZPrzelicznik podstawowej jednostki miary na jednostkę złożoną.
Twr.JMPrzelicznikM
9.Twr_TypTypTP – towar prosty
Twr_ProduktTZ – towar złożony
UP – usługa prosta
UZ – usługa złożona
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona, przyjmowana jest wartość TP (towar prosty), jeśli została pobrana licencja na Comarch ERP Optima Handel/ Handel Plus lub UP (usługa prosta), jeśli pobrano licencję tylko na Comarch ERP Optima Faktury.
10.Twr_NumerKatNumerKatalogowyNumer katalogowy
11.Twr_SWWSWWNumer PKWiU
12.Twr_TwGGIDNumerGrupaGrupa towarowa
CDN.TwrGrupy
13.Twr_IloscMinStanMinStan minimalny towaru na magazynie
14.Twr_IloscMaxStanMaxStan maksymalny towaru na magazynie
15.Twr_StawkaVATLiczba całkowita określająca stawkę VAT. Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowana jest wartość 23.
16.Twr_StawkaZakVATZakLiczba całkowita określająca stawkę VAT zakupu. Jeżeli kolumny te nie występują to stawka VAT zakupu jest ustawiana na taką samą jak stawka VAT sprzedaży.
17.Twr_FlagaVATFlaga1 - zwolniona
2 - opodatkowana
3 - zaniżona
4 - nie podlega
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowana jest wartość 2.
18.Twr_FlagaZakVatZakFlaga1 - zwolniona
2 - opodatkowana
3 - zaniżona
4 - nie podlega
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona to wartość pola jest ustawiana na taką samą jak wartość pola Twr_Flaga.
19.Twr_EANEANKod kreskowy
20.Twr_OpisOpisOpis towaru
21.Twr_KaucjaOpakowanieKaucjaKolumna powinna zawierać 1 jeśli towar jest opakowaniem kaucjonowanym i 0 w pozostałych przypadkach.
22.Twr_OdwrotneObciazenieOdwrotneObciazenieParametr Odwrotne obciążenie (widoczny w oknie Pozycji cennika na zakładce [Ogólne] po zaznaczeniu w menu Start/Konfiguracja/ Firma/ Handel/ Parametry – Odwrotne obciążenie wg karty towaru ):
0 – Nie
1 – Tak
2 – Powyżej limitu
23.Twr_CenaZCzteremaMiejscamiCenaZCzteremaMiejscamiParametr Ceny z czterema miejscami po przecinku (widoczny w oknie Pozycji cennika na zakładce [Ogólne] po zaznaczeniu w menu Start/Konfiguracja/ Firma/ Handel/ Parametry – Ceny z czterema miejscami po przecinku ):
0 – niezaznaczony
1 – zaznaczony
24.Twr_TypMinimumGranica ceny0 – brak granicy ceny,
1 – minimalna marża,
2 – maksymalny rabat.
25.Twr_MinCenaMarzaMinimalna cena/marżaWartość ustalonej granicy ceny (min. marży/ max. rabatu).
26.Twr_Kntid (Id z tabeli CDN.Kontrahenci)DostawcaDostawca (kod dostawcy z zakładki Dodatkowe na karcie towaru), Dostawca musi być wcześniej wprowadzony na listę kontrahentów oraz na swojej karcie musi mieć zaznaczony parametr Dostawca.
27.Twr_KoddostawcyKod u dostawcyKod u dostawcy (kod towaru u dostawcy z zakładki Dodatkowe na karcie towaru).
28.Twr_ProducentKodKod producentaKod producenta (kod towaru producenta z zakładki Dodatkowe na karcie towaru).
29.Twr_KosztUslugiTypKosztUslugiTyp1 - typ kwotowy
2 – typ procentowy
30.Twr_KosztUslugiKosztUslugiKoszt usługi w przeliczeniu na PLN lub procent dla typu procentowego
31. Twr_KosztUslugiWalKosztUslugiWalKoszt usługi w walucie lub procent dla typu procentowego
32. Twr_WalutaWalutaWaluta ostatniej ceny zakupu
33.Twr_KCNId (Id z tabeli CDN.KodyCN)Intrastat - kod CNOśmiocyfrowy kod CN.
W sytuacji kiedy w arkuszu Cennik dla towaru uzupełniono kod CN, ale nie ma go bazie, do której wykonywany jest import i nie uzupełniono go w arkuszu KodyCN , kod ten nie zostanie uzupełniony na importowanej/ aktualizowanej kartotece towarowej.
34.Twr_KrajPochodzeniaIntrastat - kraj pochodzeniaDwuznakowy symbol kraju pochodzenia towaru.
35.Twr_MasaIntrastat - masaMasa netto dla jednostki podstawowej towaru podana w kg.
36.Twr_JmPomPrzelicznikLIntrastat - JmPomPrzelicznikLLicznik przelicznika jednostki miary uzupełniającej przypisanej do kodu CN określającego jej stosunek do podstawowej jednostki miary towaru.
37.Twr_JmPomPrzelicznikMIntrastat - JmPomPrzelicznikMMianownik przelicznika jednostki miary uzupełniającej przypisanej do kodu CN określającego jej stosunek do podstawowej jednostki miary towaru.
38.Twr_SplitPayPodzielona płatnośćParametr MPP - podzielona płatność (widoczny w oknie Pozycji cennika na zakładce [Ogólne]):
0 - niezaznaczony
1 - zaznaczony
39.Prd_KodProducentProducent towaru (zakładka [Dodatkowe] na formularzu towaru)
40.Mrk_NazwaMarkaMarka towaru (zakładka [Dodatkowe] na formularzu towaru)
41.Twc_wartosc dla Twc_TwcNumer=1 dla odpowiedniego towaru Twc_twridCena zakupuCena zakupu
42.TwC_Waluta dla TwcNumer=1 dla odpowiedniego towaru Twc_twridWaluta Cena zakupuWaluta ceny zakupu
43.Twc_wartosc dla Twc_TwcNumer= 2Cena hurtowa 1Cena hurtowa (1)
44.TwC_Waluta dla TwcNumer=2Waluta Cena hurtowa 1Waluta ceny hurtowej (1)
45.Twc_wartosc dla Twc_TwcNumer=3Cena hurtowa 2Cena hurtowa (2)
46.TwC_Waluta dla TwcNumer=3Waluta Cena hurtowa 2Waluta ceny hurtowej (2)
47.Twc_wartosc dla Twc_TwcNumer=4Cena hurtowa 3Cena hurtowa (3)
48.TwC_Waluta dla TwcNumer=4Waluta Cena hurtowa 3Waluta ceny hurtowej (3)
49.Twc_wartosc dla Twc_TwcNumer=5Cena detalicznaCena detaliczna
50.TwC_Waluta dla TwcNumer=5Waluta Cena detalicznaWaluta ceny detalicznej
51.Twc_wartosc dla Twc_TwcNumer=6Cena iSklep24Ewentualna cena dodana przez Użytkownika
52.TwC_Waluta dla TwcNumer=6Waluta Cena iSklep24Waluta ceny iSklep24

Arkusz JednostkiMiary

1.Twr_KodKodTowaruKod towaru - pole obowiązkowe
2.TwJZ_JM (Twr_TwrID = TwJZ_TwrID)JMZNazwa jednostki miary - pole obowiązkowe
3.TwJZ_JMPrzelicznikL ((Twr_TwrID = TwJZ_TwrID)PrzelicznikLJeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowana jest wartość równa 1.
4.TwJZ_JMPrzelicznikM (Twr_TwrID = TwJZ_TwrID)PrzelicznikMJeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowana jest wartość równa 1.
5.TwJZ_WysCmWysokoscCmWysokość dla jednostki pomocniczej (zakładka [Jednostki, EAN, VAT] na formularzu towaru
6.TwJZ_SzerCmSzerokoscCmSzerokość dla jednostki pomocniczej (zakładka [Jednostki, EAN, VAT] na formularzu towaru
7.TwJZ_DlugCmDlugoscCmDługość dla jednostki pomocniczej (zakładka [Jednostki, EAN, VAT] na formularzu towaru

Arkusz KodyKreskowe

1.Twr_KodKodTowaruKod towaru – pole obowiązkowe
2.TwE_EAN (Twr_TwrID = TwE_TwrID)EanKod kreskowy – pole obowiązkowe
3.TwE_JM (Twr_TwrID = TwE_TwrID)JmDlaEanJeżeli kolumna nie występuje w arkuszu lub jest nieokreślona przyjmowana jest wartość z JM.
4.TwE_Domyslny (Twr_TwrID = TwE_TwrID)DomyslnyStatus kodu kreskowego – pole obowiązkowe

Arkusz Producenci

1.Prd_KodKodKod producenta – pole obowiązkowe
2.Prd_NazwaNazwaNazwa producenta
3.Prd_URLURLOdsyłacz do adresu internetowego

Arkusz Marki

1.Mrk_NazwaMarkaNazwa marki – pole obowiązkowe
2.Prd_KodProducentKod producenta

Arkusz Kody CN

1.KCN_KodKodOśmiocyfrowy kod CN – pole obowiązkowe
2.KCN_OpisOpisOpis kodu CN
3.KCN_UzupJMJmDla kodów CN związanych z jednostką miary uzupełniającą należy podać nazwę tej jednostki
4.KCN_MasaMasaPrzyjmuje wartość 1 jeśli dla kodu CN należy określić masę towaru. W przeciwnym wypadku pole należy pozostawić puste bądź uzupełnić wartością 0 .
5.KCN_StawkaVATLiczba całkowita określająca stawkę VAT kodu CN.
6.KCN_FlagaVATFlaga1 - zwolniona
2 - opodatkowana
3 - zaniżona
4 - nie podlega
Jeżeli kolumna nie występuje w arkuszu lub jest nieokreślona, przyjmowana jest wartość 2.

Arkusz eHandel

1.Twr_KodKodTowaruKod towaru – pole obowiązkowe
2.Twes_Udostepnij
(Twr_TwrID = Twes_TwrID)
UdostepnijParametr Udostępnij (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
3.Twes_TwGGIDNumer
(Twr_TwrID = Twes_TwrID
CDN.TwrGrupy)
GrupaGrupa Towarowa dla e-Sklep/e-Sale
(wskazana grupa musi być podgrupą dla grupy udostępnianej do sklepu)
4.Twes_ESklepStatus
(Twr_TwrID = Twes_TwrID)
StatusDostepnosciParametr Status dostępności (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – Zapowiedź
1 – Dostępny
2 – Dostępny na zamówienie
3 – Niedostępny
5.Twes_ESklepDostepnosc
(Twr_TwrID = Twes_TwrID)
DostepnoscWartość parametru Dostępność (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – Dostępny od ręki
1 – Dostępny do 24h
2 – Dostępny do 48h
3 – od 3 do 5 dni
4 – do 7 dni
5 – do 14 dni
6 – powyżej 14 dni
Parametr ustawiany jedynie w przypadku gdy w kolumnie StatusDostepnosci ustawiono wartość 1
6.Twes_ESklepNieKontrolujStanow
(Twr_TwrID = Twes_TwrID)
KontrolaStanowParametr Nie kontroluj stanów magazynowych (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 – zaznaczony
Parametr nie zostanie zaznaczony jeśli w kolumnie StatusDostepnosci ustawiono różną od 0 i 1 lub jeżeli karta cennikowa jest usługą
7.Twes_ESklepDostepnyOd
(Twr_TwrID = Twes_TwrID)
DostepnyOdParametr Dostępny od (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 – zaznaczony
Parametr nie zostanie zaznaczony jeśli w kolumnie StatusDostepnosci ustawiono wartość inną niż 0
8.Twes_ESklepDataDostepnosci
(Twr_TwrID = Twes_TwrID)
DataDostepnyOdData od której towar będzie dostępny w przypadku ustawienia statusu Zapowiedź.
Parametr nie zostanie wypełniony jeśli w kolumnie StatusDostepnosci ustawiono wartość inną niż 0
9.Twes_ESklepZapytajOCene
(Twr_TwrID = Twes_TwrID)
ZapytajOCeneParametr Zapytaj o cenę towaru (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 – zaznaczony
10.Twes_ESklepBezRabatu
(Twr_TwrID = Twes_TwrID)
RabatParametr Towar nie podlega rabatowaniu (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 – zaznaczony
11.Twes_ESklepKalkulacjaDostaw
(Twr_TwrID = Twes_TwrID)
KosztDostawyWartość parametru Negocjowalny koszt dostawy (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – ustawienia e-Sklep
1 – negocjowalny koszt dostawy
2 –stały koszt dostawy
12.Twes_ESklepKalkulacjaDostawWartosc
(Twr_TwrID = Twes_TwrID)
KosztDostawyWartoscWartość kosztu dostawy w przypadku ustawienia stałego kosztu dostawy.
Parametr nie zostanie wypełniony jeśli w kolumnie KosztDostawy ustawiono wartość inną niż 2
13.Twes_ESklepFlaga_Nowosc
(Twr_TwrID = Twes_TwrID)
NowoscFlaga dla atrybutu czasowego Nowość (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
14.Twes_ESklepFlaga_Promocja
(Twr_TwrID = Twes_TwrID)
PromocjaFlaga dla atrybutu czasowego Promocja (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
15.Twes_ESklepFlaga_ProduktzGazetki
(Twr_TwrID = Twes_TwrID)
GazetkaFlaga dla atrybutu czasowego Produkt z gazetki (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
16.Twes_ESklepFlaga_ProduktPolecany
(Twr_TwrID = Twes_TwrID)
PolecanyFlaga dla atrybutu czasowego Produkt polecany (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
17.Twes_ESklepFlaga_Wyprzedaz
(Twr_TwrID = Twes_TwrID)
WyprzedazFlaga dla atrybutu czasowego Wyprzedaż (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
18.Twes_ESklepFlaga_Nagroda
(Twr_TwrID = Twes_TwrID)
NagrodaFlaga dla atrybutu czasowego Nagroda (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 – zaznaczony
Parametr nie zostanie zaznaczony jeśli w kolumnie ZapytajOCene ustawiono wartość 1
19.Twes_ESklepFlaga_SuperJakosc
(Twr_TwrID = Twes_TwrID)
SuperJakoscFlaga dla atrybutu czasowego Super Jakość (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
20.Twes_ESklepFlaga_SuperCena
(Twr_TwrID = Twes_TwrID)
SuperCenaFlaga dla atrybutu czasowego Super Cena (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
21.Twes_ESklepFlaga_NajlepiejOceniany
(Twr_TwrID = Twes_TwrID)
NajlepiejOcenianyFlaga dla atrybutu czasowego Najlepiej Oceniany (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony
22.Twes_ESklepFlaga_RekomendacjaSprzedawcy
(Twr_TwrID = Twes_TwrID)
RekomendacjaFlaga dla atrybutu czasowego Rekomendacja Sprzedawcy (widoczny w oknie Pozycji cennika na zakładce [eHandel]):
0 – niezaznaczony
1 - zaznaczony

Arkusz eHandelJezyki (Tylko dla modułu Handel Plus)

1.Twr_KodKodTowaruKod towaru – pole obowiązkowe
2.TwrJ_JezykID
(Twr_TwrID = TwrJ_TwrID)
JezykIDId języka, wg. kolejności na liście wyboru parametru Język
(formularz języka towaru zakładka e-Sklep/e-Sale)
np.:
1 – polski,
2 – angielski,
3 – niemiecki
3.TwrJ_NazwaNazwaNazwa towaru w języku obcym (Formularz języka towaru zakładka [e-Sklep/e-Sale])
4.TwrJ_OpisOpisOpis towaru w języku obcym (Formularz języka towaru zakładka [e-Sklep/e-Sale])
5.TwrJ_MetaTytulTytulTytuł towaru w języku obcym (Formularz języka towaru zakładka [Pozycjonowanie])
6.TwrJ_LinkLinkLink dla pozycjonowania towaru w języku obcym (Formularz języka towaru zakładka [Pozycjonowanie])
7.TwrJ_MetaSlowaKluczoweSlowaKluczoweSłowa kluczowe dla pozycjonowania towaru w języku obcym (Formularz języka towaru zakładka [Pozycjonowanie])
8.TwrJ_MetaOpisMetaOpisMeta Opis dla pozycjonowania towaru w języku obcym (Formularz języka towaru zakładka [Pozycjonowanie])
9.TwrJ_OpisKrotkiOpisSkroconyOpis skrócony dla pozycjonowania towaru w języku obcym (Formularz języka towaru zakładka [Pozycjonowanie])
10.TwrJ_SzukajSzukajSłowa kluczowe wykorzystywane do wyszukiwania przy pozycjonowaniu towaru w języku obcym (Formularz języka towaru zakładka [Pozycjonowanie])

Arkusz eHandelJednostki

1.Twr_Kod
(Twr_TwrID = TwJZ_TwrID)
KodTowaruKod towaru – pole obowiązkowe
2.TwJZ_JM
(Twr_TwrID = TwJZ_TwrID)
JednostkaPomocniczaNazwa jednostki miary dla eSklep
3.TwJZ_eSklepDomyslna
(Twr_TwrID = TwJZ_TwrID)
DomyslnaParametr określający czy wybrana Jednostka miary jest domyślna dla e-Sklep
0 – niezaznaczony
1 – zaznaczony
W przypadku gdy więcej niż jedna jednostka pomocnicza ma w kolumnie Domyslna ustawioną wartość 1 – jako domyślna zostanie ustawiona jedynie oststnia występująca w arkuszu dla danego towaru.

Uwaga
Wszystkie ceny z arkusza będą traktowane wg ustawień w konfiguracji programu Comarch ERP Optima (Start/Konfiguracja Firmy/ Handel/ Ceny towarów i usług). Jeśli przed importem cena np. Cena hurtowa 2 została usunięta z konfiguracji, wówczas podczas importu pomijana jest Cena hurtowa 2 (rozpoznawane są nazwy).

Jeżeli cena w arkuszu jest ceną netto, dla odpowiedniej ceny w Comarch ERP Optima należy ustawić typ: netto. Jeżeli cena w arkuszu jest ceną brutto, dla odpowiedniej ceny w Comarch ERP Optima należy ustawić typ: brutto. Ustawienie to musi być zrobione przed rozpoczęciem importu.

Aby zostały zaimportowane ceny z czterema miejscami po przecinku, w menu Start/Konfiguracja/ Firma/ Handel/ Parametry musi by zaznaczony parametr Ceny z czterema miejscami po przecinku i w arkuszu w kolumnie CenaZCzteremaMiejscami musi być wartość 1.

Przy aktualizacji cen (kolejne importy) nie jest podmieniany typ karty cennikowej – towar/ usługa, prosty/ złożony.

Przy aktualizacji pól tekstowych np. numeru katalogowego, jeśli pola w arkuszu nie są wypełnione, to wartości w Comarch ERP Optima nie są czyszczone (pozostają takie jak przed aktualizacją).

Pliki do pobrania




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

Data aktualizacji: 20-11-2019

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 Start/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.

Jak wyszukać kontrahenta na podstawie numeru rachunku bankowego?

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

@PAR ?@S30|Numer|&Numer rachunku:''@? PAR@
exists (select * from CDN.SchematPlatnosci where SPL_PodmiotTyp=1 and SPL_PodmiotID=Knt_KntID and SPL_RachunekNr0=replace(replace(??Numer,' ',''),'-',''))

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 wyfiltrować 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 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 celu dodania filtra należy w Konstruktorze filtra wywołanym z poziomu listy kontrahentów, na zakładce [Zaawansowane], w polu Filtr SQL 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 określoną wartością atrybutu.

W celu dodania filtra należy w Konstruktorze filtra wywołanym z poziomu listy kontrahentów, na zakładce [Zaawansowane], w polu Filtr SQL wpisać:

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

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

Filtr SQL dla listy faktur pokazujący dokumenty wystawione na kontrahentów mających na swoich kartach przypisany określony atrybut. Filtr przed odfiltrowaniem listy będzie wyświetlał listę atrybutów kontrahentów.

W celu dodania filtra należy w Konstruktorze filtra wywołanym z poziomu listy faktur, na zakładce [Zaawansowane], w polu Filtr SQL 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=TrN_PodId AND KnA_PodmiotTyp=TrN_PodmiotTyp AND KnA_DeAId =??KodAtr)

Filtr SQL dla listy faktur pokazujący dokumenty wystawione na kontrahentów mających na swoich kartach przypisany atrybut z określoną wartością.

W celu dodania filtra należy w Konstruktorze filtra wywołanym z poziomu listy faktur, na zakładce [Zaawansowane], w polu Filtr SQL wpisać:

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: Start/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: Start/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: Start/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)




OPT039 Internetowa Wymiana Danych z Klientem Comarch ERP XT / Comarch Moje BR

Data aktualizacji: 19-09-2023

Jak uruchomić Internetową Wymianę Dokumentów?



Krok 1 – Zarejestruj biuro na portalu iksiegowosc24.pl i skonfiguruj program Comarch ERP Optima do internetowej wymiany dokumentów

Biuro Rachunkowe, które chce wymieniać dokumenty ze swoimi Klientami rejestruje się na stronie: https://www.iksiegowosc24.pl/rejestracja wybierając dowolny pakiet iKsięgowość24.

Po rejestracji w Comarch ERP Optima w menu Start/Konfiguracja/ Program/ Ogólne/ Internetowa Wymiana Dokumentów należy zaznaczyć parametr Aktywuj wymianę danych przez serwer Comarch i uzupełnić wymagane pola:

  • Numer Klienta (ID) – numer identyfikacyjny Comarch Biura Rachunkowego (widoczny na certyfikacie rejestracji oprogramowania),
  • PIN – numer PIN Biura Rachunkowego (widoczny na certyfikacie rejestracji oprogramowania),
  • Ustaw hasło – pole uzupełniamy dowolnym własnym hasłem. Hasło należy zapamiętać, ponieważ będzie wymagane przy jakiejkolwiek zmianie ustawień konta na serwerze Comarch,
  • Potwierdź hasło.

Zapisując wprowadzone dane, biuro aktywuje konto Internetowej Wymiany Danych.

Uwaga
Przed opuszczeniem formularza zwróć uwagę, czy ustawiony jest oddział. Oddział o symbolu Centrala ustawiany jest automatycznie. Zmiana oddziału możliwa jest po kliknięciu w Zarządzanie Oddziałami.

Wskazówka
W sytuacji gdy hasło zostanie utracone, jego reset możliwy jest po zalogowaniu do www.iksiegowosc24.pl w zakładce Konto.

Krok 2 – Poproś Klienta aby utworzył konto w aplikacji Comarch ERP XT lub Comarch Moje BR

Klient, jeśli chce wymieniać dokumenty z biurem to powinien utworzyć konto do prowadzenia swojej firmy w aplikacji Comarch ERP XT lub Comarch Moje BR.

Do wykonania kolejnych kroków Biuro Rachunkowe będzie potrzebować adresu e-mail, na który utworzono konto oraz NIP Klienta.

Krok 3 – Dodaj Klienta w programie i rozpocznijcie elektroniczną wymianę dokumentów

W sekcji iKsięgowość24 po kliknięciu w ikonkę Klienci biura wypełnij formularz dodawania nowego Klienta, z którym będziesz prowadził wymianę dokumentów.

Uwaga
Dodawanie klientów biura jest możliwe przez operatora, który na karcie będzie miał zaznaczony parametr: Prawo do przeglądania i dodawania klientów.

Sekcja iksiegowość24 widoczna jest w menu: Rejestry VAT, w Kasa/Bank, jak również w Preliminarzu płatności i na liście dokumentów w rejestrze VAT. Zalogowany operator otrzyma listę Klientów biura rachunkowego – tą samą, która widoczna jest również na portalu iKsiegowosc24.pl na zakładce Moi Klienci.

Na formularzu uzupełnij NIP i e-mail Klienta, na które założył konto w Comarch ERP XT lub Comarch Moje BR. Po zapisaniu formularza na adres mailowy osoby kontaktowej Biura Rachunkowego oraz Klienta wysyłana jest wiadomość informująca o zgłoszeniu do Internetowej Wymiany Dokumentów dla Klienta.

Uwaga
Po otrzymaniu potwierdzenia o realizacji zamówienia na konto Internetowej wymiany Danych z klientem odczekaj chwilę (do 15 minut) i rozpocznij wymianę.

Wymiana danych z klientem możliwa jest z poziomu programu Comarch ERP Optima po wejściu do firmy, do której będą importowane dokumenty Klienta. W menu: Rejestry VAT oraz Kasa/Bank, jak również w Preliminarzu płatności i na liście dokumentów w rejestrze VAT dostępna jest sekcja Wymiana danych. Sekcja zawiera trzy opcje: Wyślij dane, Odbierz dane i Historia wymiany. Wybór jednej z wymienionych opcji spowoduje automatyczną konfigurację Internetowej Wymiany Danych z Klientem oraz uruchomi procedurę wymiany

Wysyłanie i odbieranie możliwe jest również z poziomu Narzędzia/ Praca rozproszona/ Eksport/Import.

Biuro rachunkowe może zweryfikować konfigurację z Klientem w menu Start/Konfiguracja/ Program/ Ogólne/ Internetowa Wymiana Dokumentów na zakładce Klienci.

Wskazówka
Gdy operator posiada nadane uprawnienia, a nie korzystał wcześniej z tej możliwości to po kliknięciu w ikonę Klienci biura pojawi się okno logowania do panelu biura na www.iksiegowosc24.pl. Po wprowadzeniu poprawnych danych logowania (tych samych, które używane są na stronie iksiegowość24.pl) wpisany e-mail zostanie zapamiętywany na karcie operatora na zakładce [Ogólne] w sekcji Comarch Cloud w polu e-mail.

Uwaga
W menu Start/Konfiguracja/ Stanowisko/ Praca rozproszona/ Parametry Biuro Rachunkowe wskazuje dowolny folder na dysku, w którym będą przechowywane pliki z wymienianymi dokumentami.

Jak wysyłać i odbierać dokumenty?

Wymiana dokumentów w Comarch ERP XT

Klient pracujący na Comarch ERP XT w dowolnym momencie (np. po zakończeniu miesiąca) przesyła dokumenty do Biura Rachunkowego przyciskiem Wyślij dane do księgowego, który znajduje się na pulpicie aplikacji. W oknie wysyłki Klient wskazuje okres, z którego zostaną przekazane dokumenty. Może również skorzystać z dodatkowej opcji ponownego wysłania wszystkich dokumentów, gdyby pojawiła się taka potrzeba. Szczegółowy opis dostępny Tutaj.

Szczegółowy opis informacji o podatkach i opłatach, jakie Klient może odbierać z Biura Rachunkowego, znajduje się Tutaj .

Wymiana dokumentów w Comarch Moje BR

Klient pracujący na Comarch Moje BR na pulpicie swojej aplikacji przed wysyłką pierwszego dokumentu otrzyma komunikat o konieczności potwierdzenia współpracy z Biurem Rachunkowym. Więcej informacji o tym jak rozpocząć współpracę z biurem rachunkowym znajduje się Tutaj.

 

Po zaakceptowaniu zostaje uruchomiona automatyczna wymiana danych. Do Biura Rachunkowego od tego momentu przesyłane są:

  • faktury sprzedaży, które zostały zatwierdzone przez Klienta,
  • dokumenty kosztowe, które zostały wprowadzone do aplikacji i wysłane przez Klienta.

Szczegółowy opis informacji o podatkach i opłatach, jakie Klient może odbierać z Biura Rachunkowego, znajduje się tutaj .

Wymiana dokumentów w Comarch ERP Optima

Wysyłanie i odbieranie dokumentów przez Klienta możliwe jest po aktywowaniu przez niego konta Internetowej Wymiany Dokumentów. Klient loguje się u siebie w programie Comarch ERP Optima i w menu Start/Konfiguracja/ Program/ Ogólne/ Internetowa Wymiana Dokumentów na zakładce Konfiguracja zaznacza Aktywuj wymianę danych przez serwer Comarch. Następnie na oknie Podaj dane uzupełnia pola:

  • Numer Klienta (ID) – numer ewidencyjny Comarch (widoczny na certyfikacie rejestracji oprogramowania),
  • PIN – numer PIN klienta (widoczny na certyfikacie rejestracji oprogramowania),
  • Ustaw hasło – pole uzupełnia dowolnym własnym hasłem. Hasło należy zapamiętać, ponieważ będzie wymagane przy jakiejkolwiek zmianie ustawień konta do Internetowej Wymiany Dokumentów.
  • Potwierdź hasło.

 

Oddział o symbolu Centrala ustawiany jest automatycznie. Zmiana oddziału możliwa jest po kliknięciu w Zarządzanie Oddziałami.

Zapisując wprowadzone dane Klient aktywuje swoje konto do Internetowej Wymiany Dokumentów.

Wymiana dokumentów będzie możliwa z poziomu bazy w menu: Rejestry VAT oraz Kasa/Bank, jak również w Preliminarzu płatności i na liście dokumentów w rejestrze VAT dostępna jest sekcja Wymiana danych. Sekcja zawiera trzy batony: Wyślij dane, Odbierz dane i Historia wymiany. Wybór jednej z wymienionych opcji spowoduje automatyczną konfigurację Internetowej Wymiany Dokumentów z Klientem oraz uruchomi procedurę wymiany.

Wysyłanie i odbieranie możliwe jest również z poziomu Narzędzia/ Praca rozproszona/ Eksport/Import.

Wysyłka/ Odbiór dokumentów w Biurze rachunkowym

Wskazówka

Aby przesyłać informacje o podatkach i fakturach za usługi Biura, zaznacz na oknie eksportu pozycje: Faktury za usługi księgowe i Płatności do deklaracji.

  • Płatności do deklaracji będą zawierały informacje o podatku VAT, PIT i składkach ZUS.
  • Faktury za usługi księgowe będą eksportowały dokumenty z rejestru zakupu VAT, które mają przypisany atrybut FAKTURA ZA USŁUGI BR z wartością „Tak”.

Szczegółowy opis funkcjonalności znajduje się tutaj .

Biura Rachunkowe w module Comarch ERP Optima Biuro Rachunkowe mogą seryjnie odbierać dokumenty wysłane przez Klientów.

W programie Comarch ERP Optima jest możliwość ustawienia automatycznego eksportu i importu danych. Zobacz tę funkcję na filmie


 

FAQ – najczęściej zadawane pytania

Co to jest Internetowa Wymiana Dokumentów?

Internetowa Wymiana Dokumentów to model współpracy pomiędzy Biurem rachunkowym a jego Klientem.

Klient Biura może pracować na programie Comarch ERP XT, Comarch Moje BR lub Comarch ERP Optima. Biuro Rachunkowe pracuje natomiast na rozwiązaniu Comarch ERP Optima w wersji dla Biur Rachunkowych. Współpraca polega na tym, że Klient wysyła zaszyfrowane i podpisane dokumenty. Wymiana odbywa się elektronicznie poprzez Internet. Dokumenty w postaci zaszyfrowanej paczki trafiają na serwery Comarch skąd Biuro rachunkowe również przez Internet odbiera je i wczytuje do bazy. Biuro może również przesyłać dane do bazy Klienta.

W jaki sposób zabezpieczone są przesyłane dane?

Główne cechy zastosowanego rozwiązania:

  • bezpieczeństwo danych – system został tak zaprojektowany, aby zapewnić jak największe bezpieczeństwo przesyłanych danych,
  • poufność danych – uzyskiwana jest dzięki podwójnemu systemowi szyfrowania (paczki danych są szyfrowane/deszyfrowane asymetrycznie parą kluczy RSA oraz przesyłane szyfrowanym kluczem symetrycznym protokołem opartym o TLS 1.2 / SSL 3.0),
  • integralność danych – jest zapewniona dzięki zastosowaniu podpisu elektronicznego (paczki są podpisywane kluczem prywatnym strony wysyłającej) i strona odbierająca ma pewność, że dane nie zostały zmodyfikowane,
  • zabezpieczenia serwera – (takie jak wymuszanie haseł, czy szyfrowanie całej transmisji uniemożliwiające przechwycenie hasła) uniemożliwiają nieautoryzowane usuwanie danych z serwera oraz wysyłanie na serwer.

Nie można dokonać autoryzacji na serwerze Comarch.

Nie można dokonać autoryzacji na serwerze Comarch

Komunikat pojawia się w sytuacji, gdy dane podane przy aktywacji konta Internetowej Wymiany Dokumentów w Start/Konfiguracja/ Program/ Ogólne/  Internetowa Wymiana Dokumentów są nieprawidłowe lub brak połączenia z serwerem.

Biuro powinno sprawdzić wprowadzone dane: Numer Klienta (ID), PIN oraz połączenie z Internetem.

Komunikat pojawia się także w przypadku, gdy przy zapisywaniu zmian w ustawieniach Internetowej Wymiany Dokumentów zostanie wprowadzone inne hasło, niż ustawione przy aktywacji konta. Biura Rachunkowe mogą dokonać resetu hasła po zalogowaniu na www.iksiegowosc24.pl w zakładce Konto.

 

Konto o ID [ID Klienta] nie istnieje.

Konto o ID [ID Klienta] nie istnieje.
Ostrzeżenie pojawia się w sytuacji gdy Biuro Rachunkowe w Start/Konfiguracja/ Program/ Ogólne/Internetowa Wymiana Dokumentów w kolumnie Numer Klienta (ID), z którym wymieniam dane wpisuje numer Klienta, który:

  • nie ma konta lub nie został zgłoszony do Internetowej Wymiany Dokumentów
  • nie aktywował konta IWD na swojej instalacji programu (dotyczy klientów pracujących w programie Comarch ERP Optima)

Błąd przy imporcie paczki. Wiadomość została zaszyfrowana innym kluczem niż aktualnie posiadany. Usuń oczekujące paczki i wyślij je ponownie.

Błąd przy imporcie paczki. Wiadomość została zaszyfrowana innym kluczem niż aktualnie posiadany. Usuń oczekujące paczki i wyślij je ponownie.

Komunikat pojawia się w Narzędzia/ Praca rozproszona/ Import w sytuacji, gdy obecnie posiadany przez Biuro certyfikat jest inny od tego, obowiązującego w momencie wysyłki dokumentów przez Klienta.

Wysłanej na inny certyfikat paczki z dokumentami nie będzie można już odebrać i należy ją usunąć z Narzędzia/ Skrzynka IWD. Klient powinien wysłać paczkę ponownie. Jeśli podczas importu nowej paczki z dokumentami pojawi się ten sam komunikat, należy odświeżyć certyfikat w Start/Konfiguracja/ Program/ Ogólne/ Internetowa Wymiana Dokumentów za pomocą przycisku Odnowienie certyfikatu.

 

Konto Klienta Comarch ERP XT pracuje w trybie testowym

Sprawdź, co może być powodem na stronie https://pomoc.erpxt.pl/dokumentacja/komunikat-o-koncie-testowym-dla-uzytkownika-iwd/

Konfiguracja wymiany z Klientem jest niekompletna. Wymagane jest uzupełnienie zgłoszenia Klienta do Internetowej Wymiany Dokumentów. Czy chcesz to zrobić teraz?

Pytanie pojawi się, gdy Klient biura nie będzie miał konta Internetowej Wymiany Dokumentów. Wybierając Tak operator zostanie przekierowany do listy Klientów biura w celu złożenia zamówienia na konto dla Klienta. Wybierając Nie – okno zostanie zamknięte.




OPT079- Jednolity Plik Kontrolny

Data aktualizacji: 26-11-2023



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. Firmy małe, średnie oraz mikro udostępniają pliki JPK na każde żądanie organu podatkowego od 1 lipca 2018. Proces udostępnienia pliku rozpoczyna się dopiero po otrzymaniu postanowienia o wszczęciu postępowania od organu podatkowego. Jednolite Pliki Kontrolne są wykorzystywane przez Urzędy Skarbowe celem weryfikacji Ksiąg oraz zapisów na podstawie, których powstały.

Obowiązkowe comiesięczne pliki JPK_VAT – w przypadku rejestrów VAT dane przesyłane są 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. Od 1 października 2020 w miejsce plików JPK_VAT zaczęły obowiązywać pliki JPK_V7 opisane w osobnym biuletynie.

Na moment publikacji tego biuletynu zostało przygotowanych i opublikowanych 8 struktur plików dotyczących dokumentów handlowych, kasowo/bankowych oraz księgowych, uwzględniając pliki JPK_V7. Struktury plików JPK znajdują się na poniższej stronie: https://www.gov.pl/web/kas/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

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/kodów JPK na zatw. 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_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:

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  dostępnej na wstążce programu.

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 Dodaj plik JPK z dysku na listę dostępna na wstążce programu. 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.

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

3.1    Przygotowanie plików JPK

 

Aby dodać pliki JPK na żądanie należy kliknąć ikonę bądź po rozwinięciu ikony plusa wybrać opcję Pozostałe pliki JPK. Otwierane jest wówczas okno:

Okno dodania pozostałych plików JPK może zostać wywołane za pomocą skrótu <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 powyżej zakresu dat),
      • Dokumenty magazynowe (z możliwością wskazania czy dokumenty maja być wykazane wg kosztu zakupu czy ceny jednostkowej netto).

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 i pełnomocnictwa 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 pozostałych plików JPK, jak i plików JPK_VAT) 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 sprawdzić poprawności wygenerowanego dokumentu(XML), ponieważ występują problemy z dostępem do serwerów Ministerstwa Finansów. Plik JPK można wysłać, a jego poprawność zostanie sprawdzona przy odbiorze UPO lub wysłać w innym terminie, gdy dostęp do serwerów zostanie przywrócony.
  • 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 są pliki JPK_EWP i JPK_VAT, które są tworzone nawet jeśli za dany okres nie ma zapisów w ewidencji ryczałtowej / rejestrze VAT.

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 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); dane pobierane są z najnowszej pieczątki firmy.

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 trzech sposobów podpisania wysyłanych plików JPK:

      • Wyślij podpisem kwalifikowanym,
      • Wyślij podpisem niekwalifikowanym,
      • Wyślij podpisem zaufanym.

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 otwierane jest okno z danymi podatnika pobranymi z Konfiguracji Firmy/ Dane firmy/ VAT, AKC-WW: numerem NIP, imieniem i nazwiskiem oraz datą urodzenia. Na oknie należy uzupełnić kwotę przychodu podatnika za dwa lata wstecz. Domyślnie w tym polu wykazywana jest kwota 0,00.

Uwaga
Podpisywanie plików JPK podpisem niekwalifikowanym możliwe jest jedynie dla plików JPK_VAT dla osób fizycznych. Wysłanie tym sposobem innych typów plików JPK bądź plików JPK_VAT podatników nie będących osobami fizycznymi nie jest możliwe.

Jeżeli podczas wysyłki pliku JPK_VAT podano niewłaściwą kwotę przychodu (podczas odbioru UPO pojawił się błąd o kodzie 403), wówczas plik JPK_VAT uzyskuje z powrotem status Nie wysłano, umożliwiając ponowną jego wysyłkę. W przypadku podpisu niekwalifikowanego nieprawidłowe dane autoryzacyjne nie blokują możliwości kolejnej próby wysyłki pliku JPK_VAT. Możliwe jest ponowne wprowadzenie prawidłowych danych i wysyłka pliku.

Korzystając z wysyłki plików JPK_VAT za pomocą podpisu niekwalifikowanego należy upewnić się, że są podane wszystkie wymagane dane. Brak jednej z nich (np. numeru NIP, imienia bądź nazwiska) powoduje wyświetlenie komunikatu: Nieprawidłowy format danych autoryzujących.

Po wybraniu trzeciej opcji dla plików o statusie Nie wysłano otwierane jest okno z kreatorem procesu podpisywania pliku JPK podpisem zaufanym:

Plik JPK przeznaczony do podpisu za pomocą podpisu 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 podpisem zaufanym 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 Podpisem 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 podpisem 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 podpis zaufany zakładany był za pomocą aplikacji bankowej, proces podpisywania pliku wygląda nieco inaczej. Użytkownik po wyborze opcji Podpisz podpisem 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 podpisem zaufanym 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 podpisem zaufanym/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 podpisem zaufanym na pliku o statusie Podpisany podpisem zaufanym /Nie wysłano, następuje automatyczna wysyłka pliku bez konieczności ponownego przechodzenia kreatora podpisywania pliku JPK.

Pliku JPK o statusie Podpisany podpisem zaufanym/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 podpisem zaufanym 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 podpisem zaufanym możliwa jest dla pojedynczego pliku. Jeżeli zaznaczono kilka plików JPK o statusie Podpisany podpisem zaufanym/Nie wysłano możliwa jest ich zbiorcza wysyłka za pomocą opcji podpisu podpisem zaufanym.

Wysyłka pliku JPK za pomocą podpisu zaufanego 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 znajdującej się na wstążce programu 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.

4 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)
        W danych dotyczących kont księgowych w polu OpisZespolu umieszczane jest oznaczenie na podstawie pierwszej cyfry z numeru konta:
        ■ 0 – Aktywa trwałe,
        ■ 1 – Środki pieniężne, rachunki bankowe oraz krótkoterminowe aktywa finansowe,
        ■ 2 – Rozrachunki i roszczenia,
        ■ 3 – Materiały i towary,
        ■ 4 – Koszty według rodzajów i ich rozliczenie,
        ■ 5 – Koszty według typów działalności i ich rozliczenie,
        ■ 6 – Produkty i rozliczenia międzyokresowe,
        ■ 7 – Przychody i koszty związane z ich osiąganiem,
        ■ 8 – Kapitały (fundusz) własne, fundusze specjalne, rezerwy i wynik finansowy,
        ■ 9 – Konta zespołu 9.
        Jeżeli numer konta nie zaczyna się od cyfry, zarówno do pola KodZespolu jak i OpisZespolu przenoszony jest pierwszy znak z numeru 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, w przypadku nieuzupełnienia opisu na dekrecie do pliku przenoszona jest wartość BRAK)
      • 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. Podczas generowania plików JPK_KR w przypadku nieuzupełnionego opisu operacji na zapisie księgowym bądź nieuzupełnionej nazwy konta księgowego, w tworzonym pliku JPK w odpowiednich polach wstawione zostanie słowo BRAK, a stosowna informacja pojawi się w logu z tworzenia pliku z informacją dla Użytkownika o konieczności weryfikacji przyczyny braku tych danych.

W przypadku braku zapisów mających daty księgowania za podany podczas eksportu okres, pliki JPK nie są tworzone.

5 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.

W przypadku nieuzupełnienia wymaganych pól (Nazwa kontrahenta, Adres kontrahenta, Opis operacji) w pliku umieszczana jest wartość BRAK.

Podczas generowania plików JPK_PKPIR w przypadku nieuzupełnionych pól na zapisie księgowym: Nazwa podmiotu, Dane adresowe podmiotu oraz Opis, w tworzonym pliku JPK w odpowiednich polach wstawione zostanie słowo BRAK, a stosowna informacja pojawi się w logu z tworzenia pliku z informacją dla Użytkownika o konieczności weryfikacji przyczyny braku tych danych.

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.

6 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.

W przypadku składania pliku za okresy od 1 stycznia 2022 roku obowiązuje struktura pliku JPK_EWP(3). Za okresy wcześniejsze obowiązują pliki JPK_EWP(2) (rok 2021) i JPK_EWP(1) (lata wcześniejsze). W przypadku pliku JPK_EWP(3) obok uwzględnienia stawek ryczałtu 14% i 12% plik ten obejmuje wykaz środków trwałych i wartości niematerialnych i prawnych. Do pliku przenoszone są zapisy kart środków trwałych i wartości niematerialnych i prawnych z podstawowymi informacjami, m.in. o dacie przyjęcia do używania, numerze KŚT czy wartości początkowej i zaktualizowanej, bez informacji o dokonanych odpisach amortyzacyjnych. Do pliku nie są przenoszone informacje o środkach trwałych w budowie, jak również środkach zbytych bądź zlikwidowanych przed okresem, za który sporządzany jest plik. Nie są również wykazywane środki trwałe z datą przyjęcia do użytkowania późniejszą niż okres, za jaki plik jest sporządzany. Środki trwałe całkowicie zamortyzowane oraz z zerową wartością są przenoszone do pliku JPK_EWP(3).
Jedną z wymaganych informacji dla środków trwałych wykazywanych w pliku JPK_EWP(3) jest numer dokumentu zakupu. W programie na karcie środka trwałego na zakładce [Dokumenty] można wskazać więcej niż jeden dokument zakupu. W takim przypadku do pliku przenoszony jest ostatni (najmłodszy) dokument.
Jeżeli dokument zakupu na karcie środka trwałego nie jest wskazany, wówczas podczas generowania pliku pojawia się komunikat:
„Element tns:KW_5.Element element 'Wykaz’ w przestrzeni nazw 'http://jpk.mf.gov.pl/wzor/2022/02/01/02011/’ ma nieprawidłowy element podrzędny element 'KW_5′ w przestrzeni nazw 'http://jpk.mf.gov.pl/wzor/2022/02/01/02011/’. Lista oczekiwanych możliwych elementów: element 'KW_4′ w przestrzeni nazw 'http://jpk.mf.gov.pl/wzor/2022/02/01/02011/’.’
Należy wówczas dodać na zakładce [Dokumenty] na karcie środka trwałego odpowiedni numer dokumentu zakupu. Numer może zostać uzupełniony ręcznie, bez wskazania dokumentu w Rejestrze zakupów VAT lub Ewidencji dodatkowej kosztów (opcja: Bez wskazania dokumentu). Taka operacja jest możliwa pod warunkiem, że środek trwały nie posiada wygenerowanych odpisów amortyzacyjnych. Jeżeli takie odpisy już są, wówczas możliwe jest wskazanie na karcie środka trwałego na zakładce [Atrybuty] atrybutu o kodzie DOWÓD_ZAKUPU_EWP i wpisanie jako wartości tego atrybutu numeru dokumentu zakupu.
Inną informacją przenoszoną do pliku JPK_EWP(3) jest numer Klasyfikacji Środków Trwałych. W przypadku kiedy nie jest on uzupełniony, podczas generowania pliku pojawia się informacja:
„Na środku trwałym/wnip [NAZWA] w polu KW_6 (KŚT) zapisano BRAK. Zweryfikuj poprawność.”
Wówczas Użytkownik powinien zweryfikować czy faktycznie w tym przypadku brak uzupełnionego numeru KŚT jest poprawną sytuacją (np. w przypadku wartości niematerialnych i prawnych dla których ten numer nie jest uzupełniany) czy jednak należy uzupełnić dane na karcie środka trwałego i ponowić generowanie pliku JPK_EWP(3).

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
      • Wykaz środków trwałych i wartości niematerialnych i prawnych (pliki JPK_EWP za okresy od 1 stycznia 2022)

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%).

7 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.

8 Faktury – JPK_FA

Do pliku JPK wysyłane są Faktury Sprzedaży, Faktury Zakupu, Faktury Zaliczkowe a także wystawione do nich dokumenty korygujące. Aby dokumenty były uwzględnione w pliku JPK, muszą zostać wcześniej zatwierdzone.

Faktury Zaliczkowe, Faktury Sprzedaży oraz korekty do Faktur wystawione w procedurze OSS są uwzględniane w pliku JPK_FA.

Do pliku JPK_FA przenoszone są transakcje w różnych walutach. Na dokumentach walutowych wartość netto, kwota VAT oraz wartość brutto wykazywane są w walucie dokumentu. W przypadku wartości VAT, dla dokumentów walutowych przeliczana jest ona na złotówki. 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.

      • 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:
        • Waluta dokumentu
        • 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
        • 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 w walucie dokumentu
        • Kwota podatku VAT w danej stawce w walucie dokumentu
        • W przypadku dokumentów walutowych Kwota podatku VAT przeliczona na złotówki
        • Wartość brutto (kwota netto + wartość podatku VAT) w walucie dokumentu
        • Informacja czy na transakcji wystąpił Mechanizm podzielonej płatności
        • Rodzaj dokumentu (dla Faktur – VAT, dla Faktur Zaliczkowych oraz Końcowych rozliczających zaliczkę – VAT, dla dokumentów korygujących – KOREKTA)
      • 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)           W przypadku Korekty Zbiorczej/Rabat jeśli korekta dotyczy większej ilości dokumentów to w pole: Numer faktury korygowanej przenoszony jest opis „Korekta zbiorcza”.
        • 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
        • W przypadku kilku Faktur zaliczkowych – Numer Faktury Zaliczkowej
      • Dane podsumowujące listę faktur – sumy kontrolne, gdzie uwzględnione są dane:
        • Liczba faktur w pliku
        • Łączna wartość kwot brutto faktur w pliku
      • 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ść netto wszystkich wierszy – elementów z faktur w pliku bez względu na walutę
      • Dane dotyczące Zamówienia
        • Numer Faktury Zaliczkowej
        • Wartość zamówienia – wartość brutto Faktury Pro Forma
      • Szczegółowe pozycje dotyczące zamówienia (Faktury Pro Forma)
        • Nazwa towaru/ usługi
        • Jednostka miary
        • Ilość towaru/ usługi
        • Cena jednostkowa netto
        • Wartość pozycji netto
        • Kwota podatku pozycji
        • Stawka podatku pozycji
      • Dane podsumowujące listę zamówień – sumy kontrolne:
        • Liczba zamówień
        • Łączna wartość kolumny: Wartość zamówienia w okresie, którego dotyczy JPK_FA

W przypadku, gdy w Konfiguracji Firmy/ Dane firmy/ Pieczątka firmy – jednostka samorządowa dodana została pieczątka firmy z zakresem dat obejmującym datę wystawienia dokumentu, wówczas do pliku JPK_FA dla faktur sprzedaży jako dane sprzedawcy, a dla zakupu jako dane nabywcy przenoszone są dane z tej pieczątki firmy dla jednostki samorządowej. Dotyczy zarówno dokumentów wystawianych w module Handel/Faktury jak i w Rejestrze VAT.

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, do pliku JPK przenoszone są dane zgodnie z wartościami na Fakturze Zaliczkowej. Wartości w poszczególnych stawkach VAT oraz wartość brutto zaliczki. Do pliku nie są przenoszone  informacje o pozycjach z dokumentu gdyż mają one swoje odzwierciedlenie w sekcji Zamówienie.

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ą wię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ą dowody 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 [JPK] 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 [JPK] 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 kiedy dane do pliku JPK_FA pobierane są z rejestru VAT i na dokumencie w walucie obcej zaznaczony jest parametr Inny kurs do księgowania, wówczas do pliku JPK_FA pobierane są kwoty wg kursu do VAT.

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.

9 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. Wydania Zewnętrzne oraz korekty do WZ wystawione w procedurze OSS są uwzględniane w pliku JPK_MAG.

Pliki JPK_MAG generowane są osobno dla każdego magazynu w bazie i każdej waluty, jeżeli dokument generowany jest z cenami z dokumentu. Wartości w tych plikach wykazywane są w walucie, w jakiej zostały wystawione dokumenty.

Wybór waluty możliwy jest gdy zostanie wybrana cena jednostkowa netto, w przypadku kosztu zakupu wszystkie wartości w pliku są wykazywane w walucie PLN. 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

10 Rejestry VAT – JPK_VAT

Uwaga
Uwaga: Pliki JPK_VAT obowiązywały do rozliczenia podatku VAT za okresy do września 2020 roku. Od rozliczenia za okresy od października 2020 roku obowiązują pliki JPK_V7 dostępne w programie w menu JPK/ Pliki JPK_V7 i opisane w biuletynie OPT088 – Pliki JPK_V7 – przygotowanie dokumentów i generacja pliku. Obecnie możliwe jest składanie korekt do plików JPK_VAT za okresy, w których tego typu pliki obowiązywały.

Aby dodać w programie plik JPK_VAT należy z rozwijalnej listy przy ikonie plusa wybrać opcję Pliki_JPK_VAT   – 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 <Shift> + <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
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.

Uwaga
Uwaga: Podczas dodawania pliku JPK_VAT program sprawdza okres, za który jest on sporządzany. Jeżeli za ten okres powinien być już sporządzony plik JPK_V7 program informuje o tym Użytkownika stosownym komunikatem:
Za okres od października 2020 należy składać pliki JPK_V7. Czy chcesz mimo wszystko wyliczyć plik JPK_VAT?
Wybór opcji Tak powoduje utworzenie pliki JPK_VAT za wybrany miesiąc. W przypadku wybrania opcji Nie plik JPK_VAT nie jest tworzony.
Plik taki, nawet jeśli zostanie utworzony, nie będzie wysyłany do Ministerstwa Finansów.

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
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
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.

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 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)

W przypadku plików JPK_VAT(3) przenoszone są następujące informacje dotyczące dokumentów:

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 faktur VAT RR, numer NIP bądź PESEL dostawcy powinien znajdować się w polu NIP na dokumencie w rejestrze VAT zakupu.

W przypadku dowodó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 dowodów wewnętrznych z dokumentem źródłowym. W związku z tym kiedy takiego powiązania nie ma (dowody wewnętrzne dodane ręcznie do rejestru VAT bądź zaimportowane mechanizmem pracy rozproszonej), dowody wewnętrzne do pliku JPK_VAT zostaną przeniesione z własnym numerem dokumentu.
Dowody wewnętrzne będące korektą paragonów przekształconych do faktur przenoszone są do pliku JPK_VAT z numerem dowodu 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),
■ WEWN.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),
■ WEWN.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
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 20) 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 [JPK] 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 w VAT (parametr Rozliczać w 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 VAT/JPK_V7]. 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 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.

Uwaga
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.

11 Scalanie plików JPK_VAT

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 znajdującą się na wstążce programu. 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.
Parametr określa cel złożenia łączonego pliku JPK_VAT.

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.

12 Import plików JPK_VAT do rejestrów VAT

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), JPK_VAT(3) lub JPK_V7. 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 lub wg autonumeracji ustawionej w konfiguracji)) 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 lub wg autonumeracji ustawionej w konfiguracji) 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.. Jeżeli w Konfiguracji Firmy/ Ogólne/ Parametry zaznaczony jest parametr Autonumeracja kodów kontrahentów przy dodawaniu, wówczas kod zakładanego kontrahenta nadawany jest według wskazanego w Konfiguracji schematu numeracji. W przypadku, gdy podczas automatycznego dodawania kontrahenta, numer w schemacie numeracji kodów przekroczy maksymalną wartość, kontrahent dodawany jest z kodem uzupełnionym zgodnie z jego numerem NIP.
Jeżeli parametr Autonumeracja kodów kontrahentów przy dodawaniu nie jest zaznaczony w Konfiguracji, wówczas jako kod nowego kontrahenta wstawiany jest jego numer NIP.
Dodatkowo jeżeli w Konfiguracji Firmy/ Ogólne/ Parametry zaznaczony jest parametr Automatyczne pobieranie rachunków bankowych z Wykazu podatników VAT, dla dodawanego automatycznie kontrahenta następuje weryfikacja w Wykazie podatników VAT na podstawie jego numeru NIP i pobierane są numery rachunków bankowych kontrahenta. Jeżeli parametr w konfiguracji nie jest zaznaczony, kontrahent dodawany jest bez importu listy rachunków bankowych.

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 – Podatek od wewn. nabycia towarów art. 103 ust. 5aa,
      • 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 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 VAT 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 VAT na poszczególnych dokumentach.