Raporty PDF¶
Dzięki Studio możesz edytować istniejące raporty PDF (np. faktury, oferty itp.) lub tworzyć nowe.
Schemat domyślny¶
Domyślny układ raportów jest zarządzany poza Studio. Przejdź do , a następnie w sekcji Firmy na stronie głównej kliknij Skonfiguruj układ dokumentu. Ustawienia układu są specyficzne dla firmy, ale mają zastosowanie do wszystkich raportów.
Wskazówka
Możesz zobaczyć, jak różne ustawienia wpływają na układ raportu w podglądzie raportu po prawej stronie okna Skonfiguruj układ dokumentu. Podczas tworzenia lub edycji raportu możesz zobaczyć podgląd raportu, klikając Podgląd wydruku po lewej stronie ekranu.
Użyj następujących ustawień:
Układ: Dostępnych jest siedem układów:
Tło: Dostępne są następujące tła:
Puste: Nic nie jest wyświetlane.
Logo demonstracyjne: Logo demonstracyjne jest wyświetlane w tle.
Niestandardowe: Prześlij niestandardowy obraz tła.
Tekst: Dostępnych jest osiem czcionek: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (która obsługuje pisma arabskie i łacińskie) oraz Fira Mono. Przejdź do strony internetowej Google Fonts, aby zobaczyć ich podgląd.
Logo firmy: Kliknij przycisk Edytuj, aby przesłać lub zmienić logo. Spowoduje to dodanie logo do rekordu firmy w modelu Firma, do którego możesz uzyskać dostęp, przechodząc do , a następnie klikając Aktualizuj informacje w sekcji Firmy.
Kolory: Zmień podstawowe i drugorzędne kolory używane do strukturyzacji raportów. Domyślne kolory są automatycznie generowane na podstawie kolorów logo.
Adres: Nazwa firmy i adres są wyświetlane w nagłówku raportów zewnętrznych. Możesz dodać wiele wierszy tekstu.
Slogan: Jest wyświetlany w nagłówku raportów zewnętrznych przy użyciu układów Light, Striped, Bubble, Wave i Folder oraz w stopce raportów zewnętrznych przy użyciu układów Boxed i Bold. Możesz dodać wiele wierszy tekstu.
Format papieru: Określa domyślny rozmiar papieru raportów. Możesz wybrać A4 (21 cm x 29,7 cm) i US Letter (21,59 cm x 27,54 cm). Można to również określić dla poszczególnych raportów w polu Format papieru w Studio.
Informacja
Inne formaty papieru mogą być dostępne w zależności od tego, które aplikacje lub moduły masz zainstalowane, na przykład arkusze etykiet dla aplikacji Magazynowanie lub identyfikatory wydarzeń dla aplikacji Wydarzenia.
Tworzenie nowych raportów PDF¶
Aby utworzyć nowy raport dla modelu (np. zamówień sprzedaży), przejdź do modelu, kliknij przycisk (Przełącz Studio), a następnie kliknij Raporty. Kliknij Nowy, a w otwartym oknie wyskakującym wybierz typ raportu. Służy to wyłącznie do określenia, co jest wyświetlane w nagłówku i stopce:
Po utworzeniu raportu możesz rozpocząć jego edycję.
Edycja raportów PDF¶
Aby uzyskać dostęp do raportów dostępnych dla modelu, przejdź do modelu, kliknij przycisk (Przełącz Studio), a następnie kliknij Raporty. Wybierz istniejący raport, aby go otworzyć.
Możesz również otworzyć Studio, kliknąć Raporty i wyszukać konkretny raport lub model.
Ważne
Zdecydowanie zaleca się duplikowanie standardowego raportu i wprowadzanie zmian w zduplikowanej wersji. Aby zduplikować raport, najedź wskaźnikiem myszy na prawy górny róg raportu, kliknij ikonę (pionowa elipsa), a następnie wybierz Duplikuj.
Opcje¶
Po wybraniu lub utworzeniu raportu możesz użyć opcji w lewej części ekranu, aby:
Zmień Nazwę raportu: Nowa nazwa jest stosowana wszędzie (w Studio, w menu Drukuj pod ikoną (tryb) w widoku formularza oraz w nazwie pliku PDF).
Zmodyfikuj Format papieru: Jeśli nie wybrano żadnej wartości, używany jest format zdefiniowany w domyślnym układzie.
Pokaż w menu drukowania: aby dodać raport do menu Drukuj w widoku formularza.
Przeładuj z załącznika: aby zapisać raport jako załącznik do rekordu przy pierwszym wygenerowaniu i przeładowywać oryginalną wersję raportu przy każdym następnym uruchomieniu. Jest to wymagane prawnie dla faktur i jest głównie stosowane w tym przypadku.
Ogranicz widoczność do grup: aby ograniczyć dostępność raportu PDF do określonych grup użytkowników.
Edytuj źródła: aby zmodyfikować raport bezpośrednio w pliku XML.
Resetuj raport: aby odrzucić wszystkie zmiany wprowadzone w raporcie i przywrócić go do wersji standardowej.
Podgląd wydruku: aby wygenerować i pobrać podgląd raportu.
Edytor raportów¶
Edytor raportów pozwala modyfikować treść i formatowanie raportu.
Wskazówka
Możesz Cofnąć lub Powtórzyć zmiany za pomocą odpowiednich przycisków lub skrótów
CTRL+ZiCTRL+Y.Zmiany są zapisywane automatycznie po opuszczeniu raportu lub ręcznie za pomocą przycisku Zapisz.
Możesz zresetować raport do wersji standardowej, klikając przycisk Resetuj raport w lewej części ekranu.
Ważne
Edycja nagłówka i stopki raportu wpływa na wszystkie raporty standardowe i niestandardowe.
Bloki warunkowe¶
Prostokąty przerywane reprezentują bloki warunkowe (instrukcje if/else). Są używane do pokazywania/ukrywania treści na podstawie określonych warunków. Kliknij na blok, aby wyświetlić warunki.
Wybierz wartość, aby zobaczyć podgląd odpowiadającego jej wyjścia i w razie potrzeby go edytować.
Informacja
Warunki mogą być edytowane tylko w XML.
Inne treści¶
W raportach występują dwa rodzaje treści tekstowych:
Tekst statyczny, czyli tekst, który nie jest podświetlony na niebiesko i może być modyfikowany bezpośrednio w edytorze.
Tekst dynamiczny, czyli tekst podświetlony na niebiesko, który jest zastępowany wartościami pól podczas generowania raportu, np. numer zamówienia sprzedaży lub data oferty.
Możesz dodać treść (np. pola, listy, tabele, obrazy, banery itp.) do raportu za pomocą poleceń. Wpisz /, aby otworzyć powerbox, a następnie wpisz nazwę polecenia lub wybierz je z listy.
Aby dodać tekst statyczny do raportu, wpisz tekst w wybranym miejscu.
Aby wprowadzić bardziej zaawansowane zmiany, możesz edytować raport bezpośrednio w XML.
Dodaj pole¶
Aby dodać pole, wpisz / i wybierz polecenie Pole. Z otwartej listy wybierz lub wyszukaj pole; kliknij strzałkę w prawo obok nazwy pola, aby uzyskać dostęp do listy powiązanych pól, jeśli to konieczne. Następnie określ wartość domyślną, która zostanie wyświetlona, jeśli pole nie jest wypełnione w rekordzie, i naciśnij Enter.
Dodaj lub edytuj tabelę¶
W raportach występują dwa rodzaje tabel:
Tabele statyczne, które służą do wyświetlania tekstu statycznego lub pól. W przypadku tego typu tabeli liczba kolumn i wierszy jest określana podczas dodawania tabeli.
Tabele dynamiczne, które służą do wyświetlania danych z pól relacyjnych. W przypadku tego typu tabeli określasz tylko liczbę kolumn podczas dodawania tabeli. Liczba wierszy w wygenerowanym raporcie będzie określona przez liczbę rekordów w powiązanym modelu, które są połączone z bieżącym modelem.
Example
W raporcie zamówienia sprzedaży tabela dynamiczna służy do wyświetlania pozycji zamówienia związanych z zamówieniem sprzedaży. Jeśli zamówienie sprzedaży zawiera 10 pozycji zamówienia, tabela w wygenerowanym raporcie ma 10 wierszy; jeśli zawiera dwie pozycje zamówienia, tabela ma dwa wiersze.
Dodaj lub edytuj tabelę statyczną¶
Aby dodać tabelę statyczną, wpisz / i wybierz polecenie Tabela. Określ liczbę kolumn i wierszy dla tabeli. Po dodaniu tabeli możesz rozpocząć jej edycję.
Możesz wstawiać, przesuwać i usuwać kolumny oraz wiersze za pomocą narzędzi tabeli. Ustaw kursor nad kolumną lub po lewej stronie wiersza, następnie kliknij fioletowy prostokąt i wybierz opcję.
Aby zmienić rozmiar kolumny, przeciągnij obramowanie kolumny do żądanej pozycji; zresetuj wszystkie kolumny do ich standardowego rozmiaru, wybierając Resetuj rozmiar z narzędzi tabeli.
Dodaj wybrane pole w komórce lub dodaj tekst statyczny, wpisując go.
Wskazówka
Aby dodać tekst w sposób uporządkowany bez użycia tabeli, możesz użyć kolumn. Dodaj kolumny, wpisując / i wybierając odpowiednie polecenie: 2 kolumny, 3 kolumny lub 4 kolumny.
Dodaj lub edytuj tabelę dynamiczną¶
Informacja
Tylko relacje typu
one2manylubmany2manymogą być wyświetlane jako tabele dynamiczne.Istniejąca tabela dynamiczna w standardowym raporcie ma bardziej złożoną strukturę niż tabela dynamiczna, którą dodajesz samodzielnie. Dla takich tabel możliwe jest wstawianie lub usuwanie kolumn; nie jest możliwe przenoszenie kolumn ani wstawianie, przenoszenie lub usuwanie wierszy.
Aby dodać tabelę dynamiczną, wpisz / i wybierz polecenie Tabela dynamiczna. Na liście, która się otworzy, wybierz lub wyszukaj relację, na której będzie oparta tabela, i naciśnij Enter. Po dodaniu tabeli możesz rozpocząć jej edycję.
Możesz wstawiać, przenoszić i usuwać kolumny za pomocą narzędzi tabelowych, tak jak w przypadku tabeli statycznej. Możliwe jest również wstawienie wierszy statycznych, które pojawią się powyżej lub poniżej wygenerowanych wierszy.
Aby dodać pole do komórki, usuń tekst zastępczy, a następnie dodaj wybrane pole. Okno dialogowe, które się otworzy, pokazuje obiekt źródłowy dla pola (np. model Pozycje zamówienia) oraz listę dostępnych pól.
Zastąp etykietę Nazwa kolumny wybraną przez siebie etykietą.
Informacja
Domyślny wiersz automatycznie iteruje po zawartości pola, generując wiersz w raporcie dla każdej wartości pola (np. jeden wiersz na pozycję zamówienia).
Formatowanie¶
Aby sformatować tekst w raporcie, zaznacz go, a następnie sformatuj za pomocą opcji w edytorze tekstu.
Edycja kodu XML raportu¶
Ostrzeżenie
Bezpośrednia modyfikacja kodu XML może spowodować problemy z raportem podczas aktualizacji. Jeśli to nastąpi, po prostu skopiuj swoje zmiany ze starej bazy danych do zaktualizowanej bazy danych.
Aby edytować kod XML raportu, kliknij Edytuj źródła w lewym panelu.
Przykłady¶
Aby zmienić sposób prezentacji danych w raporcie, możesz ręcznie zmodyfikować domyślny widget pola. W poniższym przykładzie data zamówienia domyślnie pokazuje datę i godzinę, podczas gdy cena jednostkowa domyślnie ma precyzję dwóch miejsc po przecinku.
<div class="oe_structure"> <span t-field="doc.date_order"/> <span t-field="doc.price_unit"/> </div>
Używając t-options, w tym przypadku opcji widget, pola te można zmodyfikować, aby pokazywały odpowiednio tylko datę i precyzję czterech miejsc po przecinku:
<div class="oe_structure"> <span t-field="doc.date_order" t-options="{'widget': 'date'}"/> <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/> </div>
Jeśli chcesz pokazać/ukryć zawartość na podstawie określonych warunków, możesz ręcznie dodać instrukcje sterujące if/else w kodzie XML raportu.
Na przykład, jeśli chcesz ukryć niestandardową tabelę danych, gdy nie ma tagów, możesz użyć atrybutu t-if do zdefiniowania warunku, który jest następnie oceniany jako True lub False. Tabela nie będzie wyświetlana, jeśli w ofercie nie ma tagów.
<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
<!-- thead = table header, the row with column titles -->
<thead>
<!-- table row element -->
<tr>
<!-- table header element -->
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<!-- table body, the main content -->
<tbody>
<!-- we create a row for each subrecord with t-foreach -->
<tr t-foreach="doc.tag_ids" t-as="tag">
<!-- for each line, we output the name and price as table cells -->
<td t-out="tag.id"/>
<td t-out="tag.name"/>
</tr>
</tbody>
</table>
Jeśli chcesz wyświetlić inny blok w przypadku, gdy instrukcja t-if zostanie oceniona jako False, możesz to określić za pomocą instrukcji t-else. Blok t-else musi bezpośrednio następować po bloku t-if w strukturze dokumentu. Nie ma potrzeby określania żadnego warunku w atrybucie t-else. Jako przykład pokażmy krótką wiadomość wyjaśniającą, że w ofercie nie ma tagów:
<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
<!-- thead = table header, the row with column titles -->
<thead>
<!-- table row element -->
<tr>
<!-- table header element -->
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<!-- table body, the main content -->
<tbody>
<!-- we create a row for each subrecord with t-foreach -->
<tr t-foreach="doc.tag_ids" t-as="tag">
<!-- for each line, we output the name and price as table cells -->
<td t-out="tag.id"/>
<td t-out="tag.name"/>
</tr>
</tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>
Przy użyciu notacji t-if/t-else edytor raportu rozpoznaje, że te sekcje wykluczają się wzajemnie i powinny być wyświetlane jako bloki warunkowe:
Możesz przełączać warunki za pomocą edytora, aby wyświetlić podgląd ich wyjścia:
Jeśli chcesz mieć wiele opcji, możesz również użyć dyrektyw t-elif, aby dodać pośrednie warunki. Na przykład w ten sposób tytuł raportów zamówień sprzedaży zmienia się w zależności od stanu dokumentu źródłowego.
<h2 class="mt-4">
<span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
<span t-elif="doc.state in ['draft','sent']">Quotation # </span>
<span t-else="">Order # </span>
<span t-field="doc.name">SO0000</span>
</h2>
Tytuł Faktura pro forma jest używany w zależności od pewnych warunków kontekstowych. Jeśli te warunki nie są spełnione, a stan dokumentu to draft lub sent, używany jest tytuł Oferta. Jeśli żaden z tych warunków nie jest spełniony, tytuł raportu to Zamówienie.
Praca z obrazami w raporcie może być wyzwaniem, ponieważ precyzyjna kontrola nad rozmiarem i zachowaniem obrazu nie zawsze jest oczywista. Możesz wstawiać pola obrazów za pomocą edytora raportów (używając polecenia Pole), ale wstawianie ich w XML przy użyciu dyrektywy t-field i towarzyszących atrybutów t-options zapewnia lepszą kontrolę nad rozmiarem i pozycjonowaniem.
Na przykład poniższy kod wyświetla pole image_128 produktu linii jako obraz o szerokości 64 pikseli (z automatyczną wysokością opartą na proporcjach obrazu).
<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>
Dla widżetów obrazów dostępne są następujące opcje:
width: szerokość obrazu, zwykle w pikselach lub jednostkach długości CSS (np.rem) (pozostaw puste dla automatycznej szerokości).height: wysokość obrazu, zwykle w pikselach lub jednostkach długości CSS (np.rem) (pozostaw puste dla automatycznej wysokości).class: klasy CSS zastosowane do znacznikaimg; dostępne są klasy Bootstrap.alt: tekst alternatywny obrazustyle: atrybut stylu; pozwala na swobodniejsze nadpisywanie stylów niż za pomocą klas Bootstrap.
Te atrybuty muszą zawierać ciągi znaków, czyli tekst ujęty w cudzysłowy wewnątrz cudzysłowów, np. t-options-width="'64px'" (lub alternatywnie prawidłowe wyrażenie Pythona).
Informacja
Widżet obrazu nie może być używany na znaczniku img. Zamiast tego ustaw dyrektywę t-field na węźle span (dla treści wbudowanej) lub div (dla treści blokowej).
Na przykład dodajmy kolumnę z obrazem produktu w tabeli oferty:
<table class="table table-sm o_main_table table-borderless mt-4">
<thead style="display: table-row-group">
<tr>
<th>Image</th>
<th name="th_description" class="text-start">Description</th>
<th>Product Category</th>
<th name="th_quantity" class="text-end">Quantity</th>
<th name="th_priceunit" class="text-end">Unit Price</th>
[...]
<t t-foreach="lines_to_report" t-as="line">
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
<tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
<t t-if="not line.display_type">
<td>
<span t-field="line.product_template_id.image_128"
t-options-widget="'image'"
t-options-width="'64px'"
t-options-class="'rounded-3 shadow img-thumbnail'"
/>
</td>
<td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
<td t-out="line.product_id.categ_id.display_name"/>
Atrybut t-options-width ogranicza szerokość obrazu do 64 pikseli, a klasy Bootstrap użyte w t-options-class tworzą obramowanie podobne do miniatury z zaokrąglonymi rogami i cieniem.