Raporty niestandardowe¶
Odoo jest wyposażone w wydajny i łatwy w użyciu framework raportowania. Silnik pozwala tworzyć nowe raporty, takie jak raporty podatkowe lub bilanse i rachunki zysków i strat ze specyficznymi grupowaniami i układami.
Ważne
Aktywuj tryb dewelopera, aby uzyskać dostęp do interfejsu tworzenia raportów księgowych.
Aby utworzyć nowy raport, otwórz aplikację Księgowość i przejdź do . Stąd możesz utworzyć raport główny lub wariant.
Raporty główne¶
Raporty główne można uznać za ogólne, neutralne raporty księgowe. Służą jako modele, na których budowane są lokalne wersje księgowe. Jeśli raport nie ma raportu głównego, jest sam uważany za raport główny.
Example
Raport podatkowy dla Belgii i USA będzie używał tej samej wersji ogólnej jako podstawy i dostosuje ją do krajowych przepisów.
Podczas tworzenia nowego raportu głównego musisz utworzyć dla niego pozycję menu. Aby to zrobić, otwórz raport i w tym samym raporcie kliknij ikonę (Działania), a następnie wybierz Utwórz pozycję menu. Odśwież stronę; raport jest teraz dostępny w .
Informacja
Przypadki wymagające utworzenia nowego raportu głównego są rzadkie, takie jak sytuacja, gdy organy podatkowe kraju wymagają nowego i specyficznego rodzaju raportu.
Warianty¶
Warianty są wersjami raportów głównych specyficznymi dla poszczególnych krajów i dlatego zawsze odnoszą się do raportu głównego. Aby utworzyć wariant, wybierz raport ogólny (główny) w polu Raport główny podczas tworzenia nowego raportu.
Gdy raport główny jest otwierany z jednego z głównych menu aplikacji księgowej, wszystkie jego warianty są wyświetlane w selektorze wariantów w prawym górnym rogu widoku.
Example
Na poniższym obrazku Raport VAT (BE) jest wariantem głównego Ogólnego raportu podatkowego.
Wiersze raportu¶
Po utworzeniu raportu (głównego lub wariantu) musisz wypełnić go wierszami raportu. Możesz utworzyć nowy, klikając Dodaj wiersz, lub zmodyfikować istniejący wiersz raportu, klikając na niego. Wszystkie wiersze raportu wymagają Nazwy i mogą mieć opcjonalny dodatkowy Kod (wybrany przez ciebie), jeśli chcesz użyć ich wartości w formułach.
Wyrażenia¶
Każdy wiersz raportu może zawierać jedno lub wiele wyrażeń. Wyrażenia można postrzegać jako podzmienne potrzebne przez wiersz raportu. Aby utworzyć wyrażenie, kliknij Dodaj wiersz wewnątrz wiersza raportu.
Tworząc wyrażenie, musisz przypisać Etykietę używaną do odwoływania się do tego wyrażenia. Dlatego musi być ona unikalna wśród wyrażeń każdego wiersza. Należy również wskazać Silnik obliczeń oraz Formułę. Silnik określa, jak interpretowane są twoje formuły i podformuły. W razie potrzeby możliwe jest mieszanie wyrażeń używających różnych silników obliczeń w tym samym wierszu.
Informacja
W zależności od silnika mogą być również wymagane podformuły.
Silnik «Odoo Domain»¶
W tym silniku formuła jest interpretowana jako domena Odoo skierowana na obiekty account.move.line.
Podformuła pozwala zdefiniować, w jaki sposób pozycje księgowe pasujące do domeny są używane do obliczenia wartości wyrażenia:
sumWynik jest sumą wszystkich sald pasujących pozycji księgowych.
sum_if_posWynik jest sumą wszystkich sald pasujących pozycji księgowych, jeśli ta kwota jest dodatnia. W przeciwnym razie wynosi
0.sum_if_negWynikiem jest suma wszystkich sald dopasowanych pozycji księgowych, jeśli kwota ta jest ujemna. W przeciwnym razie wynosi
0.count_rowsWynikiem jest liczba podwierszy tego wyrażenia. Jeśli wiersz raportu ma wartość grupowania, będzie to odpowiadać liczbie różnych kluczy grupowania w dopasowanych wierszach księgowych. W przeciwnym razie będzie to liczba dopasowanych wierszy księgowych.
Możesz również umieścić znak - na początku podformuły, aby odwrócić znak wyniku.
Silnik «Aggregate Other Formulas»¶
Użyj tego silnika, gdy musisz wykonać operacje arytmetyczne na kwotach uzyskanych dla innych wyrażeń. Formuły tutaj składają się z odniesień do wyrażeń oddzielonych jednym z czterech podstawowych operatorów arytmetycznych (dodawanie +, odejmowanie -, dzielenie / i mnożenie *). Aby odwołać się do wyrażenia, wpisz kod wiersza raportu, a następnie kropkę . i etykietę wyrażenia (np. kod.etykieta).
Podformuły mogą mieć jedną z następujących postaci:
if_above(CUR(amount))Wartość wyrażenia arytmetycznego zostanie zwrócona tylko wtedy, gdy jest większa od podanej granicy. W przeciwnym razie wynik będzie wynosić
0.if_below(CUR(amount))Wartość wyrażenia arytmetycznego zostanie zwrócona tylko wtedy, gdy jest niższa od podanej granicy. W przeciwnym razie wynik będzie wynosić
0.if_between(CUR1(amount1), CUR2(amount2))Wartość wyrażenia arytmetycznego zostanie zwrócona tylko wtedy, gdy jest ściśle między podanymi granicami. W przeciwnym razie zostanie przybliżona do najbliższej granicy.
if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))Wartość wyrażenia arytmetycznego zostanie zwrócona tylko wtedy, gdy wartość wyrażenia oznaczonego przez podany kod wiersza i etykietę wyrażenia jest większa od podanej granicy. W przeciwnym razie wynik będzie wynosić
0.if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))Wartość wyrażenia arytmetycznego zostanie zwrócona tylko wtedy, gdy wartość wyrażenia oznaczonego podanym kodem wiersza i etykietą wyrażenia jest niższa niż podana granica. W przeciwnym razie wynikiem będzie
0.
CUR to kod waluty wielkimi literami, a amount to kwota granicy wyrażona w tej walucie.
cross_report(xml_id | report_id)Służy do dopasowania wyrażenia z innego raportu wskazywanego przez xml_id lub sam identyfikator raportu.
Silnik «Prefix of Account Codes»¶
Ten silnik jest używany do dopasowania kwot dokonanych na kontach przy użyciu prefiksów kodów tych kont jako zmiennych w wyrażeniu arytmetycznym.
Example
21Example
21 + 10 - 521 i 10, a następnie odejmuje saldo pozycji na kontach z prefiksem 5.Można również zignorować wybrane pod-prefiksy.
Example
21 + 10\(101, 102) - 5\(57)101, 102 i 57.Można zastosować „pod-filtrowanie” na kredytach i debetach używając sufiksów C i D. W tym przypadku konto będzie uwzględnione tylko wtedy, gdy jego prefiks pasuje i jeśli całkowite saldo pozycji księgowych dokonanych na tym koncie jest kredytowe/debetowe.
Example
Konto 210001 ma saldo -42, a konto 210002 ma saldo 25. Formuła 21D pasuje tylko do konta 210002, a zatem zwraca 25. 210001 nie jest dopasowane, ponieważ jego saldo jest kredytowe.
Wykluczenia prefiksów można łączyć z sufiksami C i D.
Example
21D + 10\(101, 102)C - 5\(57)21, jeśli jest debetowe (D) i 10, jeśli jest kredytowe (C), ale ignoruje prefiksy 101, 102, a następnie odejmuje saldo pozycji na kontach z prefiksem 5, ignorując prefiks 57.Aby dopasować literę C lub D w prefiksie i nie używać jej jako sufiksu, użyj pustego wykluczenia ().
Example
21D\()21D, niezależnie od znaku ich salda.Oprócz używania prefiksów kodów do uwzględniania kont, można je również dopasowywać za pomocą tagów kont. Jest to szczególnie przydatne, na przykład, gdy w Twoim kraju brakuje ustandaryzowanego planu kont, gdzie ten sam prefiks może być używany do różnych celów w różnych firmach.
Example
tag(25)Jeśli tag, do którego się odwołujesz, jest zdefiniowany w pliku danych, można użyć xmlid zamiast id.
Example
tag(my_module.my_tag)Możesz również używać wyrażeń arytmetycznych z tagami, ewentualnie łącząc je z selekcją prefiksów.
Example
tag(my_module.my_tag) + tag(42) + 1010Sufiksy C i D mogą być używane w ten sam sposób z tagami.
Example
tag(my_module.my_tag)CWykluczenie prefiksu działa również z tagami.
Example
tag(my_module.my_tag)\(10)10.Silnik «External Value»¶
Silnik «external value» służy do odwoływania się do wartości ręcznych i wartości przeniesienia. Te wartości nie są przechowywane za pomocą account.move.line, ale za pomocą account.report.external.value. Każdy z tych obiektów bezpośrednio wskazuje na wyrażenie, na które wpływa, więc bardzo niewiele trzeba zrobić w kwestii ich wyboru tutaj.
Formuły mogą być jedną z następujących:
sumJeśli wynik ma być sumą wszystkich wartości zewnętrznych w okresie.
most_recentJeśli wynik ma być wartością najnowszej wartości zewnętrznej w okresie.
Ponadto podformuły mogą być użyte na dwa sposoby:
rounding=XZastąpienie
Xliczbą powoduje zaokrąglenie kwoty do X miejsc po przecinku.editableWskazuje, że to wyrażenie może być edytowane ręcznie, wywołując wyświetlenie ikony w raporcie, pozwalając użytkownikowi wykonać tę akcję.
Informacja
Wartości ręczne są tworzone w dacie date_to aktualnie wybranej w raporcie.
Obie podformuły mogą być mieszane poprzez oddzielenie ich średnikiem ;.
Example
editable;rounding=2Silnik «Custom Python Function»¶
Ten silnik jest sposobem dla deweloperów na wprowadzenie niestandardowego obliczania wyrażeń w poszczególnych przypadkach. Formuła to nazwa funkcji pythona do wywołania, a podformuła to klucz do pobrania ze słownika zwróconego przez tę funkcję. Używaj go tylko wtedy, gdy tworzysz własny moduł niestandardowy.
Kolumny¶
Raporty mogą mieć nieokreśloną liczbę kolumn do wyświetlenia. Każda kolumna pobiera swoje wartości z wyrażeń zadeklarowanych w wierszach. Pole expression_label kolumny podaje etykietę wyrażeń, których wartość jest wyświetlana. Jeśli wiersz nie ma wyrażenia w tym polu, to nic nie jest wyświetlane dla niego w tej kolumnie. Jeśli wymaganych jest wiele kolumn, należy użyć różnych etykiet wyrażeń.
Podczas korzystania z funkcji porównania okresów znajdującej się w zakładce Opcje raportu księgowego, wszystkie kolumny są powtarzane w każdym okresie i dla każdego okresu.
Grupowanie wierszy¶
Niestandardowe grupowanie jest możliwe poprzez dodanie lub użycie istniejących pól w modelu Pozycja dziennika, pod warunkiem że pola są powiązane i niezapisane.
Informacja
Grupowanie wierszy wymaga, aby raport posiadał jawne wiersze raportu, które można edytować. Raporty odroczone, na przykład, nie obsługują grupowania wierszy, ponieważ używają dynamicznych wierszy, które są generowane.
Utwórz nowe pole w pozycji dziennika¶
Aby utworzyć nieprzechowywane, powiązane pole w modelu Pozycja dziennika, najpierw przejdź do i kliknij ikonę (bug), następnie kliknij Pola. Kliknij Nowy, aby utworzyć nowe pole i wypełnij następujące pola:
Nazwa pola: nazwa techniczna pola
Etykieta pola: etykieta wyświetlana dla pola
Typ pola: typ pola, na który powinno wskazywać to powiązane pole
Przechowywane: Pozostaw to pole niezaznaczone, ponieważ tylko pola nieprzechowywane mogą być używane do grupowania wierszy.
Powiązany model: Jeśli typ pola to one2many, many2many lub many2one, wybierz model oryginalnego pola, według którego chcesz grupować.
Definicja powiązanego pola: ścieżka techniczna do pola, według którego chcesz grupować
Example
Aby grupować według zespołu sprzedaży partnera handlowego, ustaw definicję powiązanego pola na
move_id.team_id.
Grupuj wiersze¶
Aby zgrupować wiersze, przejdź do zakładki Wiersze żądanego raportu, kliknij wiersz, który chcesz zgrupować, i edytuj pole Grupuj według. Wprowadź nazwę techniczną (Nazwa pola) pola do użycia jako klucz grupowania.
Wskazówka
Aby znaleźć listę wszystkich pól modelu i ich nazw technicznych, przejdź do i kliknij ikonę (bug), następnie kliknij Pola. Nazwa techniczna każdego pola jest wymieniona w kolumnie Nazwa pola.
Konfiguracja niestandardowego raportu podatkowego¶
Konfiguracja raportu¶
Wskazówka
Wszystkie terminy techniczne i funkcje silnika raportów Odoo są wyjaśnione w poprzednich sekcjach tej strony. Zdecydowanie zalecamy przeczytanie tych sekcji przed skonfigurowaniem niestandardowego raportu podatkowego.
Aby utworzyć niestandardowy raport podatkowy, otwórz aplikację Księgowość, przejdź do , a następnie kliknij Nowy:
Wprowadź nazwę dla swojego raportu.
Wybierz Raport główny.
W polu Dostępność wybierz Kraj odpowiada, a następnie wybierz Kraj odpowiadający Twojej firmie.
Następnie utwórz linię raportu, klikając Dodaj linię. Po utworzeniu kliknij tę linię raportu, aby ją skonfigurować:
Kliknij ponownie Dodaj linię, aby utworzyć Wyrażenie i nadaj mu nazwę.
W zakładce Definicja wybierz Silnik obliczeń dla tego wyrażenia w zależności od następujących scenariuszy:
W tym scenariuszu Twoja firma używa siatek podatkowych:
Wybierz Tagi podatkowe jako silnik obliczeń. Odoo używa tego pola do powiązania linii raportu z Twoimi podatkami.
W polu Formuła wpisz swój krótki identyfikator siatki (np.
vat_sales_base). Odoo automatycznie generuje warianty+i-tego tagu, które możesz zmapować w .W polu Podformuła wpisz
base, aby raportować kwotę netto, lubtax, aby raportować faktyczną kwotę podatku pobraną/zapłaconą.
Powtórz ten proces według potrzeb. Następnie kliknij Zapisz i zamknij.
Alternatywnie możesz:
Wybierz Agreguj inne formuły jako silnik obliczeń. Odoo używa tego pola do wykonywania obliczeń matematycznych na wierszach już obecnych w raporcie, zamiast skanowania surowych transakcji.
W polu Formuła użyj podstawowej algebry odwołującej się do kodów wierszy (np.
LINE_10 - LINE_20).
Powtórz ten proces według potrzeb. Następnie kliknij Zapisz i zamknij.
W tym scenariuszu Twoja firma nie używa siatek podatkowych. Zamiast tego śledzi wszystko ściśle poprzez konta Księgi głównej:
Wybierz Prefiks kodów kont jako silnik obliczeń: Odoo używa tego dla wierszy, które muszą pobierać sumy finansowe. Zamiast szukać tagów transakcji, Odoo pobiera salda bezpośrednio z Twojego planu kont.
W polu Formuła wpisz początkowe cyfry kont, które chcesz śledzić (np.
40pobierze łączną sumę wszystkich kont przychodów rozpoczynających się od400000,401000itp.).
Powtórz ten proces według potrzeb. Następnie kliknij Zapisz i zamknij.
Alternatywnie możesz:
Wybierz Agreguj inne formuły jako silnik obliczeń. Odoo używa tego do obliczania sum częściowych, podatku netto lub sum całkowitych poprzez dodawanie lub odejmowanie innych wierszy raportu.
W polu Formuła użyj podstawowej algebry odwołującej się do kodów wierszy (np.
LINE_10 - LINE_20).
Powtórz ten proces według potrzeb. Następnie kliknij Zapisz i zamknij.
W tym scenariuszu Twoja firma wymaga zaawansowanego filtrowania, ręcznych nadpisań przez użytkownika lub złożonej logiki algorytmicznej, której standardowe tagi i prefiksy kont nie mogą obsłużyć:
Wybierz Domena Odoo jako silnik obliczeń: Odoo używa tego, aby całkowicie pominąć tagi podatkowe i filtrować surowe pozycje księgowe (
account.move.line) przy użyciu standardowej składni wyszukiwania Odoo.W polu Formuła wprowadź prawidłową domenę zaczynającą się od nawiasów kwadratowych, aby wyizolować transakcje zwolnione z podatku dla określonych kategorii partnerów.
Alternatywnie możesz:
Wybierz Wartość zewnętrzna jako silnik obliczeń. Odoo używa tego do rejestrowania ręcznych nadpisań lub historycznych wartości przenoszonych.
W polu Formuła wpisz
sum(aby zsumować wszystkie wartości ręczne w raportach wielookresowych) lubmost_recent(aby wyświetlić tylko najnowszą wartość).W polu Podformuła wpisz
editable, aby wyświetlić ikonę edycji w raporcie na żywo, umożliwiając użytkownikom ręczną modyfikację wartości. Dodatkowo możesz zaokrąglić liczby, wpisującrounding=x.
Alternatywnie możesz:
Wybierz Niestandardowa funkcja Python jako silnik obliczeń. Odoo używa tego jako silnika wykonawczego do przeprowadzania określonych obliczeń poprzez kodowanie backendowe, gdy reguły obejmują progresywne progi, pętle lub wielopoziomowe limity.
W polu Formuła wprowadź dokładną nazwę techniczną metody Python zdefiniowanej w Twoim niestandardowym module lokalizacyjnym.
Powtórz ten proces według potrzeb. Następnie kliknij Zapisz i zamknij.
Na karcie Opcje Wyrażenia wypełnij pole Przenieś do formułą, aby zawsze przenosić salda lub przenosić je tylko wtedy, gdy kwota jest ujemna. Pozostaw to pole puste, jeśli nie chcesz używać tej funkcji.
Example
if_below(EUR(0))Konfiguracja podatku¶
Następnie przejdź do i kliknij Nowy, aby utworzyć i skonfigurować nowe podatki dla niestandardowego raportu podatkowego. Utwórz podatki dla Sprzedaży i Zakupów oraz wypełnij Siatki podatkowe dla wszystkich podatków, używając odpowiadających siatek podatkowych utworzonych wcześniej. Na koniec upewnij się, że określisz zarówno rachunek zobowiązań podatkowych, jak i rachunek należności podatkowych dla każdego podatku.
Example
Zapis zamykający¶
Aby zamknąć podatki, grupa podatkowa musi być określona dla każdego podatku użytego w niestandardowym raporcie podatkowym. W tym celu otwórz aplikację Księgowość, przejdź do , otwórz podatek wymagający grupy podatkowej, kliknij zakładkę Opcje zaawansowane i wybierz grupę w polu Grupa podatkowa. Po przypisaniu kliknij ikonę (strzałka w prawo) i ustaw zarówno Rachunek zobowiązań podatkowych, jak i Rachunek należności podatkowych.
Wskazówka
Gdy wszystko zostanie skonfigurowane, przetestuj raport, tworząc faktury, rachunki i noty kredytowe z użyciem podatków specyficznych dla tego raportu. Na koniec przetestuj sam zapis zamykający.
Jeśli chcesz ukryć określone konto w zapisie zamykającym podatki, przejdź do , wybierz podatek i kliknij ikonę (ustawienia dostosowania). Następnie zaznacz pole Zapis zamykający podatki, aby dostosować jego widoczność.
Zobacz także