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):
Kliknięcie przycisku spowoduje otwarcie listy okresów 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:
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:
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:
Ś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