<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>SIB invoicing</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <!-- Style --> <link rel="stylesheet" href="/css/main.css"> <!-- Scripts--> <script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.2.7/webcomponents-loader.js"></script> <!-- Web components--> <script type="module" src="https://unpkg.com/@startinblox/core@0.6"></script> <script type="module" src="https://unpkg.com/@startinblox/router"></script> <script type="module" src="https://unpkg.com/@startinblox/generator"></script> <style> :root{ --sib-invoicing-primary: #6259e5; --sib-invoicing-secondary: #ffb700; } </style> </head> <body> <main id="sib-invoicing"> <!-- widgets ==================================== --> <sib-widget name="widget-money"> <template> <div>${value?value:0} €</div> </template> </sib-widget> <sib-widget name="widget-tva-rate"> <template> <div>TVA ${value} %</div> </template> </sib-widget> <sib-widget name="widget-invoice-number"> <template> <div>N°${value}</div> </template> </sib-widget> <sib-widget name="widget-batches"> <template> <sib-display class="batches-list" data-src="${id}" data-fields="batch-header, batch-body, batch-footer" set-ht-total="ht-label, htAmount" set-batch-header="title, amount" set-batch-body="tasks" set-batch-footer="ht-total" value-amount="Montants" value-ht-label="Total HT" widget-tasks="widget-tasks" widget-htAmount="widget-money" ></sib-display> </template> </sib-widget> <sib-widget name="widget-tasks"> <template> <sib-display class="tasks-list" data-src="${id}" data-fields="price-line" set-price-line="title, htAmount" widget-htAmount="widget-money" ></sib-display> </template> </sib-widget> <sib-widget name="widget-form-batches"> <template> <sib-form data-holder naked data-fields="batch-header, batch-body" set-batch-header="title, amount" set-batch-body="tasks" widget-tasks="widget-form-tasks" widget-title="sib-form-placeholder-text" widget-amount="sib-display-div" label-title="Nom du lot" value-amount="Montants" multiple-tasks> </sib-form> </template> </sib-widget> <sib-widget name="widget-form-tasks"> <template> <sib-form class="tasks-list" data-holder naked data-fields="price-line" set-price-line="title, htAmount" widget-htAmount="sib-form-placeholder-text" widget-title="sib-form-placeholder-text" label-title="Tâche" label-htAmount="Montant" > </sib-form> </template> </sib-widget> <sib-widget name="widget-render-title"> <template> <div><strong>Facture N°${value}</strong></div> </template> </sib-widget> <sib-widget name="widget-render-date"> <template> <div><strong>Date :</strong> ${value}</div> </template> </sib-widget> <sib-widget name="widget-render-metadata"> <template> <div> <div class="invoice-render__fees"> <p>Règlement à réception de la facture</p> <p>Intérêts de retard : 6% / an</p> <p>Une indemnité forfaitaire de 40€ sera exigée en sus de la pénalité de retard dès le premier jour de retard.</p> </div> <div class="invoice-render__rib"> <div><strong>Règlement par virement :</strong></div> <table> <tr> <td>BIC</td> <td>CMCIFR2A</td> </tr> <tr> <td>IBAN</td> <td>FR76 1027 8060 8200 0205 5370 166</td> </tr> </table> </div> </div> </template> </sib-widget> <sib-widget name="widget-embed-drive"> <template> <embed src="${value}" width="560px" height="800px"/> </template> </sib-widget> <!-- /widgets ==================================== --> <!-- customer ==================================== --> <section id="clients-invoices" class="invoices-list invoices-list--clients"> <header> <h2>Factures pour le client</h2> <sib-router default-route="invoice-list"> <sib-route name="invoice-list"></sib-route> <sib-route name="add-invoice" class="button">Créer une nouvelle facture</sib-route> <sib-route name="show-invoice" id-prefix="http://127.0.0.1:8000/customer-invoices/"></sib-route> <sib-route name="edit-invoice" id-prefix="http://127.0.0.1:8000/customer-invoices/"></sib-route> <sib-route name="download-invoice" id-prefix="http://127.0.0.1:8000/customer-invoices/"></sib-route> </sib-router> </header> <dialog id="add-invoice" class="invoice-form"> <h2>Créer une nouvelle facture</h2> <sib-form data-src="http://127.0.0.1:8000/customer-invoices/" data-fields="first-line, second-line, batches, last-line" set-first-line="title, identifier" set-second-line="state, invoicingDate" set-last-line="tvaRate, additionalText" label-title="Nom de la facture" label-identifier="Identifiant" label-state="Statut" label-invoicingDate="Date" label-tvaRate="TVA" label-additionalText="Mention Libre" widget-batches="widget-form-batches" widget-invoicingDate="sib-form-date" widget-tvaRate="sib-form-number" multiple-batches next="invoice-list" ></sib-form> </dialog> <dialog id="edit-invoice" class="invoice-form"> <h2>Modifier la facture</h2> <sib-form bind-resources data-fields="first-line, second-line, batches, last-line" set-first-line="title, identifier" set-second-line="state, invoicingDate" set-last-line="tvaRate, additionalText" label-title="Nom de la facture" label-identifier="Identifiant" label-state="Statut" label-invoicingDate="Date" label-tvaRate="TVA" label-additionalText="Mention Libre" widget-batches="widget-form-batches" widget-invoicingDate="sib-form-date" widget-tvaRate="sib-form-number" multiple-batches next="invoice-list" ></sib-form> </dialog> <sib-display id="invoice-list" class="invoices-list__item" data-src="http://127.0.0.1:8000/customer-invoices/" data-fields="invoice-title, invoice-hidden" set-invoice-title="invoice-main, invoice-aside" set-invoice-main="invoice-header, invoice-footer" set-invoice-header="title, identifier" set-invoice-footer="invoicingDate, htAmount" set-invoice-aside="state" set-invoice-hidden="actions, batches, invoice-totals" set-actions="edit, show, download, duplicate" set-invoice-totals="totals-header, ht-total, tva-total, ttc-total" set-ht-total="ht-label, htAmount" set-tva-total="tvaRate, tvaAmount" set-ttc-total="ttc-label, ttcAmount" value-totals-header="TOTAL DE LA FACTURE" value-ht-label="Total HT" value-ttc-label="Total TTC" widget-batches="widget-batches" widget-htAmount="widget-money" widget-tvaAmount="widget-money" widget-ttcAmount="widget-money" widget-tvaRate="widget-tva-rate" widget-identifier="widget-invoice-number" label-edit="Éditer" label-show="Aperçu client" label-download="Télécharger" label-duplicate="Dupliquer" action-edit="edit-invoice" action-show="show-invoice" action-download="download-invoice" action-duplicate="duplicate-invoice" ></sib-display> <dialog id="download-invoice"> <h2>Téléchargement...</h2> <p>Disponible bientôt !</p> <!-- <sib-pdf-generator source="#print" buttonText="Télécharger la facture"></sib-pdf-generator> --> </dialog> <!-- render --> <dialog class="invoice-dialog" id="show-invoice"> <div id="print"></div> <sib-template-renderer bind-resources target="#print"> <template> <div class="invoice-render"> <img src="/images/happy-dev-logo.png" width="200" /> <sib-display class="display-invoice" data-src="${resource['@id']}" data-fields="invoice-head, batches, invoice-payment, invoice-footer" set-invoice-head="invoice-header-left, invoice-header-right" set-invoice-header-left="identifier, invoicingDate" set-invoice-header-right="customer-infos" set-customer-infos="customer.name, customer.address" set-invoice-payment="metadata, invoice-totals" set-invoice-totals="ht-total, tva-total, ttc-total, tva-notice" set-ht-total="ht-label, htAmount" set-tva-total="tvaRate, tvaAmount" set-ttc-total="ttc-label, ttcAmount" value-ht-label="Total HT" value-ttc-label="Total TTC" value-tva-notice="TVA récupérable à l'encaissement" widget-identifier="widget-render-title" widget-invoicingDate="widget-render-date" widget-metadata="widget-render-metadata" widget-batches="widget-batches" widget-htAmount="widget-money" widget-tvaAmount="widget-money" widget-ttcAmount="widget-money" widget-tvaRate="widget-tva-rate" ></sib-display> <div class="invoice-render__footer"> <div class="invoice-render__hd-address"> <p><strong>Happy Dev</strong></p> <p>75 rue du Javelot</p> <p>75013 Paris</p> <p>contact@happy-dev.fr</p> </div> <div class="invoice-render__hd-legal"> <p><strong>SIRET : </strong>81314060500011</p> <p><strong>N° de TVA intracommunautaire : </strong>FR 61 813140605</p> <p>SAS à capital variable enregistrée au RCS de Paris</p> </div> </div> </div> </template> </sib-template-renderer> </dialog> <!-- /render --> </section> <!-- /customer ==================================== --> <!-- freelance ==================================== --> <section id="freelances-invoices" class="invoices-list invoices-list--freelances"> <header> <h2>Factures des indépendants</h2> <sib-router default-route="freelance-invoice-list"> <sib-route name="freelance-invoice-list"></sib-route> <sib-route name="edit-freelance-invoice"></sib-route> <sib-route name="add-freelance-invoice" class="button">Importer une facture</sib-route> </sib-router> </header> <dialog id="add-freelance-invoice" class="invoice-form"> <h2>Importer une facture</h2> <sib-form data-src="http://127.0.0.1:8000/freelance-invoices/" data-fields="first-line, second-line, uploadUrl" set-first-line="freelanceFullname, identifier" set-second-line="invoicingDate, htAmount" label-freelanceFullname="Nom du prestataire" label-identifier="Numéro de la prestation" label-invoicingDate="Date de facturation" label-uploadUrl="Lien de la facture" label-htAmount="Montant HT" widget-invoicingDate="sib-form-date" widget-htAmount="sib-form-number" next="freelance-invoice-list" ></sib-form> </dialog> <dialog id="edit-freelance-invoice" class="invoice-form"> <h2>Modifier une facture</h2> <sib-form bind-resources data-fields="first-line, second-line, uploadUrl" set-first-line="freelanceFullname, identifier" set-second-line="invoicingDate, htAmount" label-freelanceFullname="Nom du prestataire" label-identifier="Numéro de la prestation" label-invoicingDate="Date de facturation" label-uploadUrl="Lien de la facture" label-htAmount="Montant HT" widget-invoicingDate="sib-form-date" widget-htAmount="sib-form-number" next="freelance-invoice-list" ></sib-form> </dialog> <sib-display id="freelance-invoice-list" data-src="http://127.0.0.1:8000/freelance-invoices/" data-fields="invoice-title, invoice-hidden" set-invoice-title="invoice-main, invoice-aside" set-invoice-main="invoice-header, invoice-footer" set-invoice-aside="state" set-invoice-header="freelanceFullname, identifier" set-invoice-footer="invoicingDate, htAmount" set-invoice-hidden="actions, uploadUrl" set-actions="edit, duplicate" label-edit="Éditer" label-duplicate="Dupliquer" action-edit="edit-freelance-invoice" action-duplicate="duplicate-invoice" widget-htAmount="widget-money" widget-uploadUrl="widget-embed-drive" ></sib-display> </section> <!-- /freelance ==================================== --> </main> <script> let root = document.querySelector('#sib-invoicing') root.addEventListener('click', (e) => { if(e.target && e.target.closest('[name="invoice-title"]')){ let invoice = e.target.closest('[name="invoice-title"]'); invoice.closest('sib-display').classList.toggle('invoice-visible') } }) </script> </body> </html>