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 Konfiguracja ‣ Raporty księgowe. 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 Księgowość ‣ Raportowanie.

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.

Report lines

After having created a report (either root or variant), you need to fill it with report lines. You can either create a new one by clicking on Add a line, or modify an existing report line by clicking on it. All report lines require a Name, and can have an optional additional Code (of your choice) if you wish to use their value in formulas.

Opcje wierszy silnika.

Wyrażenia

Each report line can contain one or multiple expressions. Expressions can be seen as sub-variables needed by a report line. To create an expression, click on Add a line within a report line.

When creating an expression, you must attribute a Label used to refer to that expression. Therefore, it has to be unique among the expressions of each line. Both a Computation Engine and a Formula must also be indicated. The engine defines how your formula(s) and subformula(s) are interpreted. It is possible to mix expressions using different computation engines under the same line if you need to.

Informacja

W zależności od silnika mogą być również wymagane podformuły.

«Odoo Domain» engine

With this engine, a formula is interpreted as an Odoo domain targeting account.move.line objects.

Podformuła pozwala zdefiniować, w jaki sposób pozycje księgowe pasujące do domeny są używane do obliczenia wartości wyrażenia:

sum

Wynik jest sumą wszystkich sald pasujących pozycji księgowych.

sum_if_pos

Wynik jest sumą wszystkich sald pasujących pozycji księgowych, jeśli ta kwota jest dodatnia. W przeciwnym razie wynosi 0.

sum_if_neg

Wynikiem jest suma wszystkich sald dopasowanych pozycji księgowych, jeśli kwota ta jest ujemna. W przeciwnym razie wynosi 0.

count_rows

The result is the number of sub-lines of this expression. If the report line has a group-by value, this will correspond to the number of distinct grouping keys in the matched move lines. Otherwise, it will be the number of matched move lines.

You can also put a - sign at the beginning of the subformula to reverse the sign of the result.

Wiersz wyrażenia w raporcie wierszowym

«Tax Tags» engine

A formula made for this engine consists of a name used to match tax tags. If such tags do not exist when creating the expression, they will be created.

Podczas ewaluacji wyrażenia obliczanie wyrażenia można w przybliżeniu wyrazić jako: (kwota pozycji księgowych z tagiem +`**)** `- (kwota pozycji księgowych z tagiem `-`).

Example

If the formula is tag_name, the engine matches tax tags +tag_name and -tag_name, creating them if necessary. To exemplify further: two tags are matched by the formula. If the formula is A, it will require (and create, if needed) tags +A and -A.

«Aggregate Other Formulas» engine

Use this engine when you need to perform arithmetic operations on the amounts obtained for other expressions. Formulas here are composed of references to expressions separated by one of the four basic arithmetic operators (addition +, subtraction -, division /, and multiplication *). To refer to an expression, type in its report line’s code followed by a period . and the expression’s label (ex. code.label).

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.

«Prefix of Account Codes» engine

This engine is used to match amounts made on accounts using the prefixes of these accounts» codes as variables in an arithmetic expression.

Example

21
Wyrażenia arytmetyczne mogą być również pojedynczym prefiksem, tak jak tutaj.

Example

21 + 10 - 5
Ta formuła dodaje salda pozycji księgowych dokonanych na kontach, których kody zaczynają się od 21 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)
Ta formuła działa w ten sam sposób co poprzedni przykład, ale ignoruje prefiksy 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)
Ta formuła dodaje salda pozycji księgowych dokonanych na kontach, których kod zaczyna się od 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\()
Ta formuła dopasowuje konta, których kod zaczyna się od 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)
This formula matches accounts whose associated tags contain the one with id 25.

If the tag you reference is defined in a data file, an xmlid can be used instead of the id.

Example

tag(my_module.my_tag)
Ta formuła dopasowuje konta, których powiązane tagi zawierają tag oznaczony jako 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) + 10
Salda kont otagowanych jako my_module.my_tag zostaną zsumowane z saldami kont powiązanych z tagiem o ID 42 oraz kontami z prefiksem kodu 10

Sufiksy C i D mogą być używane w ten sam sposób z tagami.

Example

tag(my_module.my_tag)C
Ta formuła dopasowuje konta z tagiem my_module.my_tag i saldem kredytowym.

Wykluczenie prefiksu działa również z tagami.

Example

tag(my_module.my_tag)\(10)
Ta formuła dopasowuje konta z tagiem my_module.my_tag i kodem niezaczynającym się od 10.

«External Value» engine

The «external value» engine is used to refer to manual and carryover values. Those values are not stored using account.move.line, but with account.report.external.value. Each of these objects directly points to the expression it impacts, so very little needs to be done about their selection here.

Formuły mogą być jedną z następujących:

sum

Jeśli wynik ma być sumą wszystkich wartości zewnętrznych w okresie.

most_recent

Jeśli wynik ma być wartością najnowszej wartości zewnętrznej w okresie.

Ponadto podformuły mogą być użyte na dwa sposoby:

rounding=X

Zastąpienie X liczbą powoduje zaokrąglenie kwoty do X miejsc po przecinku.

editable

Wskazuje, ż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=2
is a correct subformula mixing both behaviors.

«Custom Python Function» engine

This engine is a means for developers to introduce custom computation of expressions on a case-by-case basis. The formula is the name of a python function to call, and the subformula is a key to fetch in the dictionary returned by this function. Use it only if you are making a custom module of your own.

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

Kolumny raportu.

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 Księgowość ‣ Pozycje dziennika 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

To group lines, go to the Lines tab of the desired report, click on the line you want to group, and edit the Group by field. Enter the technical name (Field Name) of the field to use as the grouping key.

Wskazówka

Aby znaleźć listę wszystkich pól modelu i ich nazw technicznych, przejdź do Księgowość ‣ Pozycje dziennika i kliknij ikonę (bug), następnie kliknij Pola. Nazwa techniczna każdego pola jest wymieniona w kolumnie Nazwa pola.

Custom tax report setup

Report configuration

Wskazówka

All technical terms and functions of Odoo’s reports engine are explained in the previous sections of this page. We strongly recommend reading these sections before setting up a custom tax report.

To create a custom tax report, open the Accounting app, navigate to Configuration ‣ Accounting Reports, then click New:

  • Enter a name for your report.

  • Select a Root Report.

  • Under the Availability field, select Country Matches, then select the Country matching your company.

Next, create a report line by clicking the Add a line. Once created, click that report line to configure it:

  • Click Add a line again to create an Expression and name it.

  • In the Definition tab, select a Computation Engine for that expression depending on the following scenarios:

In this scenario, your company uses tax grids:

  • Select Tax Tags as the computation engine. Odoo uses this field to link the report line to your taxes.

  • In the Formula field, type your short grid identifier (e.g., vat_sales_base). Odoo automatically generates the + and - variants of this tag for you to map inside Configuration ‣ Taxes.

  • In the Subformula field, enter either base to report the untaxed amount, or tax to report the actual tax amount collected/paid.

Repeat this process as necessary. Then, Save & Close.

Alternatively, you can:

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

Repeat this process as necessary. Then, Save & Close.

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))
Ta formuła przeniesie tylko kwoty poniżej 0,00 EUR.

Konfiguracja podatku

Następnie przejdź do Konfiguracja ‣ Podatki 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

Konfiguracja siatek podatkowych.

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 Konfiguracja ‣ Podatki, 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 Konfiguracja ‣ Podatki, wybierz podatek i kliknij ikonę (ustawienia dostosowania). Następnie zaznacz pole Zapis zamykający podatki, aby dostosować jego widoczność.

Zobacz także

Zamykanie podatków