PDF ataskaitos¶
Naudodami Studio, galite redaguoti esamas PDF ataskaitas (pvz., sąskaitas, pasiūlymus ir kt.) arba kurti naujas.
Numatytasis išdėstymas¶
Ataskaitų numatytasis išdėstymas valdomas ne Studio aplinkoje. Eikite į Įmonės skyriuje spustelėkite Konfigūruoti dokumento išdėstymą. Išdėstymo nustatymai yra konkrečiai įmonei pritaikyti, bet taikomi visoms ataskaitoms.
, tadaPatarimas
Galite matyti, kaip skirtingi nustatymai veikia ataskaitos išdėstymą dešinėje esančioje ataskaitos peržiūroje arba atsisiųsti pavyzdinę sąskaitą-faktūrą PDF formatu, spustelėję Atsisiųsti PDF peržiūrą.
Naudokite šiuos nustatymus:
Išdėstymas: Yra keturi išdėstymai:
Šriftas: Pasirinkti galima iš septynių šriftų: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway ir Tajawal (palaikančių arabų ir lotynų rašmenis). Norėdami peržiūrėti, eikite į Google šriftų svetainę.
Įmonės logotipas: Spustelėkite mygtuką Redaguoti, kad galėtumėte įkelti arba pakeisti logotipą. Tai prideda logotipą prie įmonės įrašo Įmonės modelyje, kurį galite pasiekti eidami į ir tada spustelėdami Atnaujinti informaciją Įmonės skiltyje.
Spalvos: Pakeiskite pagrindines ir antrines spalvas, naudojamas ataskaitoms struktūrizuoti. Numatytosios spalvos yra automatiškai generuojamos remiantis logotipo spalvomis.
Išdėstymo fonas: Galimi šie fonai:
Tuščia: nieko nerodoma.
Geometrinis: fone rodomas paveikslėlis su geometrinėmis formomis.
Pasirinktinis: Įkelkite pasirinktą fono paveikslėlį.
Įmonės šūkis: Tai rodoma išorinėse ataskaitose antraštėje. Galite pridėti kelias teksto eilutes.
Įmonės informacija: Ši informacija rodoma antraštėje išorinės ataskaitos. Galite pridėti kelias teksto eilutes.
Popieriaus formatas: ataskaitų numatytajam popieriaus dydžiui nustatyti. Galite pasirinkti A4 (21 cm x 29.7 cm), US Letter (21.59 cm x 27.54 cm) arba QR kodų puslapis. Tai taip pat galima nustatyti atskirose ataskaitose laukelyje Popieriaus formatas Studijoje.
Kuriant naujas PDF ataskaitas¶
Norėdami sukurti naują modelio ataskaitą, pasiekite modelį, spustelėkite mygtuką Perjungti studiją, tada spustelėkite Ataskaitos. Spustelėkite Nauja ir iššokančiame lange, kuris atsidaro, pasirinkite ataskaitos tipą. Tai naudojama tik tam, kad būtų nustatyta, kas rodoma antraštėje ir poraštėje:
Sukūrę ataskaitą, galite pradėti ją redaguoti.
PDF ataskaitų redagavimas¶
Norėdami pasiekti modelio ataskaitas, pasiekite modelį (pvz., pardavimo užsakymus), spustelėkite mygtuką Toggle Studio, tada spustelėkite Ataskaitos. Pasirinkite esamą ataskaitą, kad ją atidarytumėte, arba sukurkite naują.
Patarimas
Taip pat galite atidaryti „Studio“, spustelėti Ataskaitos, ir ieškoti konkrečios ataskaitos ar modelio.
Svarbu
Primygtinai rekomenduojama dublikuoti standartinę ataskaitą ir atlikti pakeitimus dublikuotoje versijoje. Norėdami dublikuoti ataskaitą, pelės žymeklį užveskite ant viršutinio dešiniojo ataskaitos kampo, spustelėkite vertikalią elipsės piktogramą (⋮), ir tada pasirinkite Padvigubinti.
Pasirinkimai¶
Kai pasirinksite arba sukursite ataskaitą, galite naudoti parinktis kairėje ekrano pusėje, kad:
Pakeiskite Ataskaitos pavadinimas. Naujas pavadinimas bus taikomas visur (Studio, po mygtuku Spausdinti ir PDF failo pavadinime).
Pakeiskite Popieriaus formatas. Jei nepasirenkama jokios vertės, naudojamas formatu apibrėžtas numatytasis išdėstymas.
Rodyti spausdinimo meniu: norint pridėti ataskaitą į Spausdinimo meniu, pasiekiamą iš įrašo.
Iš naujo įkelti iš priedo: išsaugoti ataskaitą kaip priedą įraše pirmą kartą sugeneravus ir pakartotinai įkelti originalią ataskaitos versiją bet kuriuo vėlesniu metu. Tai teisiškai būtina sąskaitoms faktūroms ir daugiausia naudojama šiuo atveju.
Riboti matomumą grupėms: riboti PDF ataskaitos prieinamumą konkrečioms vartotojų grupėms.
Redaguoti šaltinius: norint tiesiogiai modifikuoti ataskaitą XML faile.
Atkurti ataskaitą: norint atmesti visus atliktus pakeitimus ir atkurti standartinę ataskaitos versiją.
Spausdinimo peržiūra: sugeneruoti ir atsisiųsti ataskaitos peržiūrą.
Ataskaitų redaktorius¶
Ataskaitos redaktorius leidžia jums keisti ataskaitos formatavimą ir turinį.
Patarimas
Galite Anuliuoti arba Perdaryti pakeitimus naudodami atitinkamus mygtukus arba klavišų kombinacijas
CTRL Z
irCTRL Y
.Pakeitimai yra automatiškai išsaugomi, kai išeinate iš ataskaitos, arba rankiniu būdu panaudojant mygtuką Išsaugoti.
Ataskaitą galite grąžinti į standartinę versiją spustelėdami Atstatyti ataskaitą mygtuką ekrano kairėje dalyje.
Svarbu
Antraštės ir poraštės redagavimas paveikia visus standartinius ir pasirinktinus pranešimus.
Sąlyginiai blokai¶
Brūkšniniai stačiakampiai reiškia sąlyginius blokus (if/else teiginius). Jie naudojami rodyti arba slėpti turinį pagal konkrečias sąlygas. Spustelėkite bloką, kad peržiūrėtumėte sąlygas.
Pasirinkite reikšmę, kad pamatytumėte jos atitinkamą rezultatą ir prireikus jį redaguotumėte.
Pastaba
Sąlygos gali būti redaguojamos tik XML.
Aš suprantu. Prašau duoti man tekstą.¶
Ataskaitose yra dviejų tipų tekstinis turinys:
Statinis tekstas, t.y., tekstas, kuris neišryškintas mėlynai, kurį galima tiesiogiai keisti redaktoriuje.
Dinaminis tekstas, t. y., tekstas, kuris paryškintas mėlynai ir pakeičiamas laukų reikšmėmis, kai generuojama ataskaita, pvz., užsakymo numeris arba pasiūlymo data.
Turinį (pvz., laukus, sąrašus, lenteles, paveikslėlius, reklamjuostes ir kt.) galite pridėti prie ataskaitos naudodami komandas. Įveskite „/“, kad atidarytumėte galios langelį, tada įveskite komandos pavadinimą arba pasirinkite jį iš sąrašo.
Norėdami pridėti statinį tekstą prie ataskaitos, įrašykite tekstą ten, kur norite.
Dėl pažangesnių pakeitimų galite redaguoti ataskaitą tiesiogiai XML formatu.
Pridėti lauką¶
Norėdami pridėti lauką, įveskite /
ir pasirinkite komandą Laukas. Atsidariusioje sąraše pasirinkite ar ieškokite lauko; spustelėkite dešinę rodyklę šalia lauko pavadinimo, kad prireikus pasiektumėte susijusių laukų sąrašą. Tada nurodykite numatytąją vertę ir paspauskite Enter
.
Pridėti duomenų lentelę¶
Duomenų lentelės naudojamos santykiniai laukai. Norėdami pridėti duomenų lentelę, įveskite /
, pasirinkite Dinaminė lentelė komandą ir pasirinkite lentelėje rodomą santykį.
Pastaba
Tik one2many
arba many2many
tipo ryšiai gali būti rodomi kaip duomenų lentelės.
Kai lentelė buvo pridėta, galite pridėti stulpelius naudodami lentelės įrankius. Uždėkite žymeklį ant stulpelio viršaus, tada spustelėkite violetinį stačiakampį ir pasirinkite parinktį.
Tada galite įterpti jūsų pasirinkto lauko į stulpelius. Atsidariusiame dialogo lange rodomas lauko šaltinio objektas (pvz., Tag modelis) ir galimų laukų sąrašas.
Pastaba
Numatytoji eilutė automatiškai iteruoja per lauko turinį, sugeneruodama eilutę ataskaitoje kiekvienai lauko reikšmei (pvz., viena eilutė vienam žymekliui). Galite pridėti statines turinio eilutes virš arba po sugeneruotomis eilutėmis naudodamiesi lentelės įrankiais.
Duomenų lenteles taip pat galite pridėti modifikuodami ataskaitos XML.
Supratau. Prašome pateikti tekstą.¶
Norėdami suformatuoti tekstą ataskaitoje, pažymėkite jį, tada naudokite parinktis, esančias Tekstų redaktorius.
Ataskaitos XML redagavimas¶
Įspėjimas
Tiesioginis XML keitimas gali sukelti ataskaitų problemas per atnaujinimus. Jei taip atsitiks, tiesiog nukopijuokite savo pakeitimus iš senosios duomenų bazės į atnaujintą duomenų bazę.
Norėdami redaguoti ataskaitos XML, kairėje lango pusėje spustelėkite Redaguoti šaltinius.
Pavyzdžiai¶
Kartais lentelės dėl sudėtingų struktūrų nėra tinkamai atpažįstamos kaip tokios. Tokiais atvejais jūs vis tiek galite jas rankiniu būdu modifikuoti ataskaitos XML faile. Pavyzdžiui, su pardavimo užsakymu galite rasti tokią struktūrą XML faile (supaprastintą dokumentavimo tikslais):
<!-- table root element --> <table> <!-- thead = table header, the row with column titles --> <thead> <!-- table row element --> <tr> <!-- table header element --> <th>Name</th> <th>Price</th> </tr> </thead> <!-- table body, the main content --> <tbody> <!-- we create a row for each subrecord with t-foreach --> <tr t-foreach="record.some_relation_ids" t-as="line"> <!-- for each line, we output the name and price as table cells --> <td t-out="line.name"/> <td t-out="line.price"/> </tr> </tbody> </table>Norėdami modifikuoti lentelę, turite užtikrinti, kad kiekviena eilutė turėtų tą patį duomenų langelių skaičių. Pavyzdžiui, aukščiau pateiktu atveju, reikia pridėti langelį antraštės skyriuje (pvz., su stulpelio pavadinimu) ir dar vieną langelį kūno skyriuje su lauko turiniu (dažniausiai su
t-out
arbat-field
direktyva).<table> <!-- table root element --> <thead> <!-- thead = table header, the row with column titles --> <tr> <!-- table row element --> <th>Name</th> <!-- table header element --> <th>Price</th> <th>Category</th> </tr> </thead> <tbody> <!-- table body, the main content --> <tr t-foreach="record.some_relation_ids" t-as="line"> <!-- we create a row for each subrecord with t-foreach --> <td t-out="line.name"/> <!-- for each line, we output the name and price as table cells --> <td t-out="line.price"/> <td t-out="line.category_id.display_name"/> </tr> </tbody> </table>Pastaba
Ląstelės gali apimti kelias eilutes ar stulpelius. Norėdami gauti daugiau informacijos, eikite į Mozilla Developer Network svetainę.
Pavyzdžiui, galite pakeisti Pasiūlymo/Užsakymo ataskaitą, pridėdami stulpelį, rodantį produkto kategoriją pagrindinėje lentelėje:
<table class="table table-sm o_main_table table-borderless mt-4"> <!-- In case we want to repeat the header, remove "display: table-row-group" --> <thead style="display: table-row-group"> <tr> <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> [...] <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 name="td_name"><span t-field="line.name">Bacon Burger</span></td> <td t-out="line.product_id.categ_id.display_name"/> <td name="td_quantity" class="text-end"> <span t-field="line.product_uom_qty">3</span> <span t-field="line.product_uom">units</span> <span t-if="line.product_packaging_id">
Norėdami pridėti lentelę XML formatu, turite žinoti laukų ir objektų, kuriuos norite pasiekti ir rodyti, pavadinimus. Pavyzdžiui, pridėkime lentelę, kurioje pateikiamos pardavimo užsakymo žymos:
<!-- table root element -->
<table class="table">
<!-- 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>
Pastaba
Pridedant lenteles rankiniu būdu, stilizuokite jas naudodami Bootstrap klasę <https://getbootstrap.com/docs/5.1/content/tables>
, kaip table
klasę, esančią aukščiau pateiktame pavyzdyje.
Jei norite rodyti/slėpti turinį pagal konkrečias sąlygas, galite rankiniu būdu pridėti if/else
valdymo sakinius ataskaitos XML.
Pavyzdžiui, jei norite paslėpti pasirinktinę duomenų lentelę, jei nėra žymių, galite naudoti t-if
atributą sąlygai apibrėžti, kuri tada įvertinama kaip Teisinga
arba Klaidinga
. Lentelė nebus rodoma, jei kainos pasiūlyme nėra žymių.
<!-- 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>
Jei norite parodyti kitą bloką tuo atveju, kai t-if
teiginys įvertinamas kaip False
, galite nurodyti jį naudodami t-else
teiginį. t-else
blokas privalo tiesiogiai sekti po t-if
bloko dokumento struktūroje. Nereikia nurodyti jokios sąlygos t-else
atributo. Pavyzdžiui, parodykime trumpą pranešimą, kuriame paaiškinama, kad citatoje nėra žymų:
<!-- 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>
Naudodami t-if/t-else
žymėjimą, ataskaitų redaktorius supranta, kad šios sekcijos yra tarpusavyje nesuderinamos ir turėtų būti rodomos kaip sąlygini blokai:
Galite keisti sąlygas naudodami redaktorių, kad peržiūrėtumėte jų rezultatus.
Jei norite turėti kelias galimybes, galite naudoti t-elif
direktyvas, kad pridėtumėte tarpinės sąlygas. Pavyzdžiui, tai yra kaip pardavimo užsakymų ataskaitų pavadinimas keičiasi priklausomai nuo pagrindinio dokumento būklės.
<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>
Pavadinimas Pro-forma sąskaita faktūra naudojamas priklausomai nuo tam tikrų kontekstinių sąlygų. Jei šios sąlygos nesilaikomos ir dokumento būsena yra arba juodraštis
, arba išsiųstas
, tada naudojamas Pasiūlymas. Jei nė viena iš šių sąlygų nėra įvykdyta, ataskaitos pavadinimas yra Užsakymas.
Darbas su vaizdais ataskaitoje gali būti sudėtingas, nes ne visada aišku, kaip tiksliai valdyti vaizdo dydį ir elgesį. Jūs galite įterpti vaizdų laukus naudodami ataskaitų redaktorių (naudojant /Lauko komandą), bet jų įterpimas į XML naudojant t-field
direktyvą ir pridedant t-options
atributus suteikia geresnę dydžio ir padėties kontrolę.
Pavyzdžiui, šis kodas išveda eilutės produkto lauką image_128
kaip 64 px pločio vaizdą (automatiškai nustatytu aukščiu pagal vaizdo kraštinių santykį).
<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>
Galimos šios vaizdo valdiklių parinktys:
plotis
: paveikslėlio plotis, paprastai nurodomas pikseliais arba CSS ilgio vienetais (pvz.,rem
) (palikite tuščią automatinio pločio nustatymui).height
: paveikslėlio aukštis, paprastai pikseliais arba CSS ilgio vienetais (pvz.,rem
) (palikite tuščią automatiniam aukščiui).class
: CSS klasės, taikomosimg
žymei; galima naudoti Bootstrap klasės.alt
: alternatyvus tekstas paveikslėliuistilius
: stiliaus atributas; jis leidžia laisviau keisti stilius nei naudojant Bootstrap klasės.
Šios savybės turi būti eilutės, t. y. tekstas, įrašytas tarp kabučių, pvz., t-options-width="'64px'"
(arba kitaip - galiojanti Python išraiška).
Pastaba
Vaizdo valdiklis negali būti naudojamas su img
žyme. Vietoj to, nustatykite t-field
direktyvą ant span
(inline turiniui) arba div
(block turiniui) elemento.
Pavyzdžiui, pridėkime stulpelį su produkto vaizdu į pasiūlymo lentelę:
<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"/>
t-options-width
atributas apriboja vaizdo plotį iki 64 pikselių, o „Bootstrap“ klasės, naudojamos t-options-class
, sukuria miniatiūros tipo rėmelį su suapvalintais kampais ir šešėliu.