{"product_id":"advanced-pdf-report-generator-dolibarr","title":"Advanced PDF Report Generator - Dolibarr","description":"\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e1. Overview\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eAdvanced PDF Report Generator (DoliReports Designer) transforms Dolibarr into a full professional platform for generating dynamic PDF reports from predefined templates. It removes any need for Microsoft Word, LibreOffice, JasperReports, Crystal Reports or BIRT: every corporate document and report can be designed and produced directly from the data already stored in Dolibarr.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe module ships a modern drag \u0026amp; drop visual designer, a ready-to-use template library, a dynamic variable engine, SQL data sources over every Dolibarr table, a mass generator, automated scheduling with multi-channel delivery, digital signature and archiving, a full audit journal, and a decisional reporting suite — all natively integrated with the standard Dolibarr modules (Third parties, Products, Invoices, Orders, Quotations, Projects, Stock, HR, Accounting).\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e2. Architecture \u0026amp; Navigation\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe module adds a dedicated top menu (\"PDF Reports\") and the following left-menu sections:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpFirst\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eDashboard — real-time KPIs, status kanban and charts\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003ePDF Templates — create, duplicate, version, publish, archive, preview\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eDesigner — visual drag \u0026amp; drop template editor\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eBlocks — the individual design elements of each template\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eThemes — colours, fonts, header\/footer styles, watermark\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eGenerator — mass generation wizard\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eVariables — dynamic token catalog\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eData sources — table \/ SQL \/ module \/ API connections\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eScheduled reports — time-based and event-based automation\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eHistory — every generated report\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eNotifications — success, error, reminder and alert messages\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eLibrary — ready-to-use template catalog\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eAudit log — full traceability journal\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eReporting — decisional analytics with CSV export\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpLast\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eSetup — configuration and demonstration data\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e3. Modern Dashboard\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe dashboard uses a dedicated visual charter (dark blue, sky blue, white, light grey, orange accent) with a gradient hero banner. It presents ten KPI cards (templates, published templates, reports today, reports this month, reports sent, errors and failure rate, average size, average generation time, active users, favourites, disk usage), a report-status kanban (generated \/ sent \/ archived \/ error) and interactive charts (daily evolution over 30 days, monthly evolution over 12 months, top used templates, distribution by object type), plus design-asset and automation KPI zones.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e4. Visual Drag \u0026amp; Drop Designer\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe Designer is a complete graphical editor. A palette of block types is available on the left, an A4 canvas sits in the centre where blocks are positioned and moved with the mouse, and a categorised panel of dynamic variables is shown on the right. Block positions are persisted via the \"Save layout\" action.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 2.0pt;\"\u003e\u003cb style=\"mso-bidi-font-weight: normal;\"\u003e\u003cspan lang=\"EN-US\"\u003eAvailable block types:\u003c\/span\u003e\u003c\/b\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpFirst\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eText, Image, Logo\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eTable (dynamic \/ pivot)\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eChart and KPI indicator\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eQR Code and Barcode (Code128, EAN13, EAN8, UPC, DataMatrix, PDF417)\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eSignature\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpLast\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eHTML \/ SVG\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e5. Template Library\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe library provides dozens of ready-to-use models classified by category and industry, each with a rating and a download counter. Examples include invoices, quotations, orders, delivery notes, service contracts, payslips, financial reports, ISO quality reports, VAT (CA3) reports, tax donation receipts, expense reports, GPAO production reports, barcode labels and consolidated multi-company reports.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e6. Dynamic Variable Engine\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThousands of dynamic tokens are available and resolved at generation time. Variables are grouped by data source (third party, invoice, order, quotation, product, project, user, HR, accounting, system). Examples: {client.nom}, {client.email}, {facture.ref}, {facture.total_ttc}, {commande.date}, {produit.label}, {produit.prix}, {projet.titre}, {commercial}, {date}, {qrcode.facture}, {codebarre.produit}.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e7. Data Sources \u0026amp; SQL\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eData sources connect templates to every Dolibarr table (invoices, orders, quotations, third parties, products, projects, stock movements, accounting entries, HR, bank, interventions) or to custom SQL queries with joins, filters and field counts — enabling dynamic, cross-joined and pivot tables.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e8. Generator \u0026amp; Multi-channel Delivery\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe generator produces reports in bulk: select a template, an object type, a number of documents, an output format (PDF, PDF\/A, Excel, CSV, DOCX, HTML) and a delivery method (download, email, FTP, SFTP, cloud). Each run records generation time, file size, page count and status, and writes an audit entry.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e9. Scheduling \u0026amp; Automation\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe scheduler automates generation with minute \/ hourly \/ daily \/ weekly \/ monthly \/ yearly frequencies or Dolibarr event triggers (invoice validation, quotation validation, unpaid invoice, etc.), including recipients, next\/last run, run count and cloud target (NextCloud, Google Drive, OneDrive, Dropbox, internal server).\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e10. History, Audit \u0026amp; Reporting\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eEvery generated report is stored with full metadata. The audit journal traces all operations (create, modify, delete, download, send, login, error, validate) with object, user, IP address and timestamp. The reporting suite offers six analyses (usage, top templates, top users, by format, schedules, audit) with CSV export and printing.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e11. Data Model\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe module defines 10 database objects (all tables prefixed llx_aprg_):\u003c\/span\u003e\u003c\/p\u003e\n\u003cdiv align=\"center\"\u003e\n\u003ctable class=\"MsoTableLightGridAccent1\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse: collapse; border: none; mso-border-alt: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003ctbody\u003e\n\u003ctr style=\"mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastfirstrow: yes;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-bottom: solid #4F81BD 2.25pt; mso-border-bottom-themecolor: accent1; background: #1D5FB0; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 5;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.5pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: white;\"\u003eObject\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; border-left: none; border-bottom: solid #4F81BD 2.25pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #1D5FB0; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 1;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.5pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: white;\"\u003eTable\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; border-left: none; border-bottom: solid #4F81BD 2.25pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #1D5FB0; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 1;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.5pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: white;\"\u003eRole\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 0;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 68;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: black; mso-color-alt: windowtext;\"\u003eTemplate\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eaprg_template\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003ePDF template \/ model (hub)\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 1;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 132;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003eBlock\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eaprg_block\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eDesigner block (lines of a template)\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 2;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 68;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: black; mso-color-alt: windowtext;\"\u003eVariable\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eaprg_variable\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eDynamic token catalog\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 3;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 132;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003eData source\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eaprg_datasource\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eTable \/ SQL \/ module connection\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 4;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 68;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: black; mso-color-alt: windowtext;\"\u003eReport\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eaprg_report\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eGenerated report \/ history (hub)\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 5;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 132;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003eSchedule\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eaprg_schedule\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eScheduled generation (hub)\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 6;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 68;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: black; mso-color-alt: windowtext;\"\u003eLibrary\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eaprg_library\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eReady-to-use template catalog\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 7;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 132;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003eTheme\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eaprg_theme\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eVisual theme \/ layout\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 8;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 68;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; color: black; mso-color-alt: windowtext;\"\u003eNotification\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eaprg_notification\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; background: #D3DFEE; mso-background-themecolor: accent1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 64;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; color: black; mso-color-alt: windowtext;\"\u003eSuccess\/error\/reminder messages (hub)\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"mso-yfti-irow: 9; mso-yfti-lastrow: yes;\"\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border: solid #4F81BD 1.0pt; mso-border-themecolor: accent1; border-top: none; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 132;\"\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003eAudit\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan lang=\"EN-US\" style=\"mso-fareast-font-family: 'MS Gothic'; mso-fareast-theme-font: major-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi;\"\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eaprg_audit\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003ctd width=\"192\" valign=\"top\" style=\"width: 144.0pt; border-top: none; border-left: none; border-bottom: solid #4F81BD 1.0pt; mso-border-bottom-themecolor: accent1; border-right: solid #4F81BD 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4F81BD 1.0pt; mso-border-left-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt;\"\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 0cm; line-height: normal; mso-yfti-cnfc: 128;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt;\"\u003eTraceability journal\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e12. Permissions\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eFine-grained rights across 8 groups (20 permissions): template (read\/write\/delete), generator (read\/write), variable (read\/write\/delete), schedule (read\/write\/delete), report (read\/write\/delete), library (read\/write\/delete), audit (read), reporting (read), plus module administration. Read and write are granted by default on activation so the module is immediately usable.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e13. Technical Quality\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoListBulletCxSpFirst\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eDolibarr development standards: descriptor, hooks, triggers, CommonObject classes, official APIs\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eCompatible with recent stable Dolibarr versions (16+) and PHP 7.1 to 8.x\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eProtection against SQL injection (escaped queries), XSS (dol_escape_htmltag) and CSRF (token \/ newToken)\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eSchema self-healing on activation (missing columns auto-added)\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpMiddle\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eResponsive interface and optimised queries\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoListBulletCxSpLast\" style=\"margin-left: 18.0pt; mso-add-space: auto; text-indent: -18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan lang=\"EN-US\" style=\"font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;\"\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e·\u003cspan style=\"font: 7.0pt 'Times New Roman';\"\u003e       \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cspan dir=\"LTR\"\u003e\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003eError logging via dol_syslog and graceful recovery\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e14. Internationalization\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eThe module is fully translated using the official Dolibarr translation system into five languages: French, English, Spanish, Italian and German (266 keys each).\u003c\/span\u003e\u003c\/p\u003e\n\u003ch1\u003e\u003cspan lang=\"EN-US\"\u003e15. Installation \u0026amp; Demonstration Data\u003c\/span\u003e\u003c\/h1\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 6.0pt;\"\u003e\u003cspan lang=\"EN-US\"\u003eInstall by copying the advancedpdfreportgenerator folder into htdocs\/custom\/ and activating it from the module manager. A complete demonstration dataset (24 templates, 216 blocks, 40 variables, 12 data sources, 130 reports, 12 schedules, 30 library models, 6 themes, 28 notifications, 70 audit events) is created automatically on first activation. The configuration page provides \"Load demonstration data\" and \"Clear demonstration data\" buttons; the purge removes only demo-tagged rows and never affects real data.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" align=\"center\" style=\"text-align: center;\"\u003e\u003cspan lang=\"EN-US\" style=\"font-size: 9.0pt; mso-bidi-font-size: 11.0pt; line-height: 115%; color: #64748b;\"\u003e© 2026 DoliResources — www.doliresources.com — GPL v3+\u003c\/span\u003e\u003cspan lang=\"EN-US\"\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"Dolibarr Resources","offers":[{"title":"Default Title","offer_id":53895127105854,"sku":null,"price":299.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0986\/4174\/0094\/files\/RestaurantManagementLogo_5a9c7e86-198f-49a1-9773-5a9fa288aea7.png?v=1783694823","url":"https:\/\/doliresources.com\/products\/advanced-pdf-report-generator-dolibarr","provider":"DoliResources","version":"1.0","type":"link"}