Data utworzenia: 22.11.2017 Numer referencyjny: SXK016 Publiczny

Zamykanie okresów operacji handlowych w ERP XL | Artykuł ERP XL

Wprowadzenie

Zamykanie okresów handlowych zabezpiecza firmę przed ingerencją w dane, na podstawie których zostały już wyliczone podatki. W przeciwieństwie jednak do okresów obrachunkowych dotyczących całego roku tutaj możliwe jest zamykanie miesięcy. Zamknięcie okresu operacji handlowych daje nam pewność, że w systemie nie pojawią się dokumenty po wygenerowaniu deklaracji VAT czy po wysłaniu deklaracji JPK. 

Zupełnie odrębne zagadnienie stanowi zamknięcie księgowego okresu obrachunkowego, które przedstawiam w oddzielnym artykule.

Może Cię też zainteresować czynność odwotna -  Otwarcie zamkniętych ksiąg, którą przedstawiłem w odrębnym artykule.

Zasada działania

Funkcja dostępna jest w module Administrator pod przyciskiem Okresy operacji handlowych (Menu Firma->Okresy operacji handlowych):  

ikona zamykania okresów handlowych

Kliknięcie przycisku spowoduje otwarcie listy okresów okresów handlowych:

lista okresów handlowych

Na liście możliwe jest dodanie nowych okresów (w dowolnym interwale czasowym), zamknięcie okresów oraz ich ponowne otwarcie.

Na liście widoczna jest informacja kiedy i  przez jakiego operatora został zamknięty dany okres handlowy.

W zamkniętym okresie operator, który nie ma specjalnych uprawnień, nie może wystawiać dokumentów zarówno przychodowych jak i rozchodowych z datą, która mieści się w ramach zamkniętego okresu.

Dla różnego rodzaju dokumentów data, która jest brana pod uwagę przy zamykaniu okresu, tzw. data kluczowa jest inna. Dla przykładu dla dokumentów typu FS, WZ, PA, RW,PW jest to data wystawienia oraz przyjęcia/wydania magazynowego, a dla dokumentów PZ, FZ datą kluczową jest data wpływu.

Jeżeli operator bez uprawnień próbuje zmienić datę na zawierającą się w zamkniętym okresie, wtedy zostanie wyświetlony komunikat o zamknięciu operacji handlowych i niemożności wykonania takiej czynności:

Zmiana daty nie jest możliwa. Nowa data zawiera się w okresie zamkniętym dla operacji handlowych.

Wymagane uprawnienia

Aby skorzystać z funkcji użytkownik musi mieć dostęp do modułu Administracja. Nie musi mieć uprawnień administracyjnych, wystarczy, że ma możliwość otwarcia tego modułu.

Dodatkowo konieczne jest zdefiniowanie odpowiednich uprawnień dla użytkownika, który ma mieć prawo do zamykania okresów handlowych. Uprawnienia te określa się na kacie operatora, zakładka: Parametry/Ogólne:

uprawnienia do zamykania operacji handlowych na karcie operatora

Operator z takim uprawnieniem może zamykać i otwierać okresy jak również może wystawiać i edytować dokumenty w zamkniętym okresie.

Zamknięcie wybranego okresu nie jest możliwe

Przy próbie zamknięcia okresu handlowego może wyświetlić się komunikat informujący o niepowodzeniu:

Zamknięcie wybranego okresu nie jest możliwe, gdyż istnieją wystawione w tym okresie dokumenty handlowe, których nie zatwierdzono

Świadczy to o tym, że w obrębie dat danego okresu handlowego istnieje co najmniej jeden dokument, który spełnia następujące kryteria:

  • dokument jest niezatwierdzony (pozostaje w buforze)
  • dokument przychodowy ma nieustaloną wartość dostawy
  • dokument rozchodowy ma nieustalony koszt

Jeśli nie możemy w łatwy sposób zlokalizować takiego dokumentu w programie to warto poprosić o pomoc osobę z dostępem do bazy danych, która może uruchomić na bazie następujące zapytanie SQL, które zwróci informację o nie zatwierdzonych dokumentach: 

--autor: Mariusz Midzio Prospeo, wersja 2018.07.19

DECLARE @DataOD int , @DataDo int

--tutaj można wskazać przeszukiwany okres. Domyślnie przyjęto ostatni rok
set @DataOD = DATEDIFF(d,'18001228',getdate()) - 365
SET @DataDo = DATEDIFF(d,'18001228',getdate())

SELECT 
    CDN.NumerDokumentu(tn.TrN_GIDTyp,tn.TrN_SpiTyp,tn.TrN_TrNTyp, tn.TrN_TrNNumer, tn.TrN_TrNRok, tn.TrN_TrNSeria, tn.TrN_TrNMiesiac) Numer, 
    'Dokument w buforze (DATA MAG)' Opis, 
    DATEADD(d,TrN_data2,'18001228') [DataSpr\Zakupu],
    DATEADD(d,TrN_data3,'18001228') DataWyst, 
    DATEADD(d,Trn_dataMag,'18001228') DataMag 
FROM CDN.TraNag tn 
WHERE TrN_Stan < 3 AND TrN_GIDTyp <>2004 AND TrN_DataMag BETWEEN @DataOD AND @DataDo
UNION
SELECT  
    CDN.NumerDokumentu(tn.TrN_GIDTyp,tn.TrN_SpiTyp,tn.TrN_TrNTyp, tn.TrN_TrNNumer, tn.TrN_TrNRok, tn.TrN_TrNSeria, tn.TrN_TrNMiesiac) Numer, 
    'Nieustalony koszt' Opis, 
    DATEADD(d,TrN_data2,'18001228') DataSpr, 
    DATEADD(d,TrN_data3,'18001228') DataWyst, 
    DATEADD(d,Trn_dataMag,'18001228') DataMag 
FROM CDN.TraNag tn 
WHERE TrN_KosztUstalono = 0 AND TrN_TrNLp=127 AND TrN_DataMag BETWEEN @DataOD AND @DataDo
UNION
SELECT 
CDN.NumerDokumentu(tn.TrN_GIDTyp,tn.TrN_SpiTyp,tn.TrN_TrNTyp, tn.TrN_TrNNumer, tn.TrN_TrNRok, tn.TrN_TrNSeria, tn.TrN_TrNMiesiac) Numer, 
'Dokument w buforze (DATA 3)' Opis, 
DATEADD(d,TrN_data2,'18001228') DataSpr, 
DATEADD(d,TrN_data3,'18001228') DataWyst, 
DATEADD(d,Trn_dataMag,'18001228') DataMag 
FROM CDN.TraNag tn 
WHERE TrN_Stan < 3 AND TrN_GIDTyp IN (2004,1600) AND TrN_Data3 BETWEEN @DataOD AND @DataDo
UNION
SELECT 
    CDN.NumerDokumentu(tn.TrN_GIDTyp,tn.TrN_SpiTyp,tn.TrN_TrNTyp, tn.TrN_TrNNumer, tn.TrN_TrNRok, tn.TrN_TrNSeria, tn.TrN_TrNMiesiac) Numer, 
    'Dokument w buforze (DATA 2)' Opis, 
    DATEADD(d,TrN_data2,'18001228') DataSpr, 
    DATEADD(d,TrN_data3,'18001228') DataWyst, 
    DATEADD(d,Trn_dataMag,'18001228') DataMag  
FROM CDN.TraNag tn 
WHERE TrN_Stan < 3 AND TrN_GIDTyp IN(2033,2041,2037,2045,2036,2044,2034,2042,1600,1617,1625,1616,1624,2001,2009,2005,2013,2004) AND TrN_Data2 BETWEEN @DataOD AND @DataDo
UNION
SELECT 
CDN.NumerDokumentu(tn.TrN_GIDTyp,tn.TrN_SpiTyp,tn.TrN_TrNTyp, tn.TrN_TrNNumer, tn.TrN_TrNRok, tn.TrN_TrNSeria, tn.TrN_TrNMiesiac) Numer, 
'Dokument w buforze (DATA VAT)' Opis, 
DATEADD(d,TrN_data2,'18001228') DataSpr, 
DATEADD(d,TrN_data3,'18001228') DataWyst, 
DATEADD(d,Trn_dataMag,'18001228') DataMag  
FROM CDN.TraNag tn 
WHERE TrN_Stan < 3 AND TrN_GIDTyp IN(1521,1529,1489,1497,1490,1498) AND datediff(day,convert(datetime,'1800-12-28',120),cdn.ymd(trn_vatrok,trn_vatmiesiac,trn_vatdzien)) BETWEEN @DataOD AND @DataDo
UNION
SELECT 
    CDN.NumerDokumentu( ImN_GIDTyp ,0, ImN_ImNTyp , ImN_ImNNumer , ImN_ImNRok , ImN_ImNSeria , ImN_ImNMiesiac ) Numer, 
    'Dokument w buforze IMN' Opis,
    DATEADD(d, ImN_DataZakupu,'18001228'),
    DATEADD(d, ImN_DataWystawienia,'18001228'),
    DATEADD(d, ImN_DataWplywu,'18001228')
FROM CDN.ImpNag WHERE ImN_Stan < 3 AND ImN_DataWplywu BETWEEN @DataOD AND @DataDo
UNION
SELECT
    m.MAG_Kod,
    'Otwarta inwetaryzacja',
    DATEADD(d,InN_TStampOtw,'18001228'),
    DATEADD(d,InN_TStampOtw,'18001228'),
    DATEADD(d,InN_TStampOtw,'18001228')
FROM CDN.InwNag 
JOIN CDN.InwMag im ON im.InM_InNId = CDN.InwNag.InN_Id
JOIN CDN.Magazyny m ON m.MAG_GIDNumer = im.InM_MagNumer
WHERE InN_TStampZam = 0 AND InN_TStampOtw BETWEEN @DataOD AND @DataDo
UNION
SELECT 
    CDN.NumerDokumentu( San_GIDTyp ,0, SaN_SaNTyp , SaN_SaNNumer , SaN_SaNRok , SaN_SaNSeria , SaN_SaNMiesiac ),
    'Dokument w buforze (data wpływu) SAD',
    DATEADD(d,SaN_DataWplywu,'18001228'),
    DATEADD(d,SaN_DataZgloszenia,'18001228'),
    ''
FROM CDN.SadNag 
WHERE SaN_Stan < 3 AND SaN_DataWplywu BETWEEN @DataOD AND @DataDo
UNION
SELECT 
    CDN.NumerDokumentu( San_GIDTyp ,0, SaN_SaNTyp , SaN_SaNNumer , SaN_SaNRok , SaN_SaNSeria , SaN_SaNMiesiac ),
    'Dokument w buforze (data przyjęcia) SAD',
    DATEADD(d,SaN_DataWplywu,'18001228'),
    DATEADD(d,SaN_DataZgloszenia,'18001228'),
    ''
FROM CDN.SadNag 
WHERE SaN_Stan < 3 AND SaN_GIDTyp=3377 AND SaN_DataPrzyjecia BETWEEN @DataOD AND @DataDo
UNION
SELECT 
    CDN.NumerDokumentu( San_GIDTyp ,0, SaN_SaNTyp , SaN_SaNNumer , SaN_SaNRok , SaN_SaNSeria , SaN_SaNMiesiac ),
    'Dokument w buforze (data VAT) SAD',
    DATEADD(d,SaN_DataWplywu,'18001228'),
    DATEADD(d,SaN_DataZgloszenia,'18001228'),
    ''
FROM CDN.SadNag 
WHERE SaN_Stan < 3 AND SaN_GIDTyp=3379 AND datediff(day,convert(datetime,'1800-12-28',120),cdn.ymd(san_vatrok,san_vatmiesiac,san_vatdzien)) BETWEEN @DataOD AND @DataDo

Kontrowersje

Spotkaliśmy się wśród księgowych użytkowników programu z błędnym przekonaniem, że zamknięcie okresu operacji handlowych blokuje również czynności księgowe. Otóż zamknięcie okresu handlowego w żaden sposób nie uniemożliwia księgowania i odksięgowywania dokumentów oraz zakładania kont księgowych objętych datą zamkniętego okresu handlowego.

Kontrowersje wzbudza również fakt, że funkcja dostępna jest jedynie z modułu Administrator, a ze względów bezpieczeństwa nie zawsze słuszne jest udostępnianie pracownikom dostępu do tego modułu. Można sobie z tym poradzić poprzez zastosowanie dodatkowego narzędzia programistycznego uruchamiającego funkcjonalność okresów operacji handlowych z poziomu Księgowości bądź modułu Sprzedaż. Funkcję można dostarczyć poprzez narzędzie raportu typu wykres lub przez aplikację dużej hydry. 

Komentarze

Obrazek użytkownika redaktor
redaktor 16.07.2019 - 11:07
Zaktualizowaliśmy skrypt SQL do przeszukiwania dokumentów blokujących możliwość zamknięcia okresów handlowych.
Obrazek użytkownika Zbigniew Makarewicz
Zbigniew Makarewicz 16.12.2022 - 12:12
Bardzo przydatne zapytanie SQL. Okazało się że znalazłem bardzo wiele dokumentów kaucji. Czy istnieje hurtowa możliwość zaznaczenia wyboru nieustalony koszt na dokumentach ?
Obrazek użytkownika Renata Kolanowska
Renata Kolanowska 27.11.2023 - 15:11
Dodałam zapytanie do "Rysuj wykres" pobierając daty z parametrów dynamicznych. Działa świetnie i użytkownicy mogą sami wyszukiwać dokumenty z nieustalonym kosztem lub dokumenty niezatwierdzone.

Sample2ść h3 tag

Sample pararaph