Newer
Older
<!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" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.2.7/webcomponents-loader.js"></script>
<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>
<sib-widget name="widget-money">
<template>
</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-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-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-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-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
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>
</tr>
</table>
</div>
</div>
</template>
</sib-widget>
<sib-widget name="widget-embed-drive">
<template>
<embed src="${value}" width="560px" height="800px"/>
</template>
</sib-widget>
<!-- customer ==================================== -->
<section id="clients-invoices" class="invoices-list invoices-list--clients">
<header>
<h2>Factures pour le client</h2>
<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>
<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">
bind-resources
data-fields="first-line, second-line, batches, last-line"
set-first-line="title, identifier"
set-second-line="state, invoicingDate"
label-title="Nom de la facture"
label-identifier="Identifiant"
label-state="Statut"
label-invoicingDate="Date"
label-tvaRate="TVA"
widget-invoicingDate="sib-form-date"
widget-tvaRate="sib-form-number"
multiple-batches
next="invoice-list"
></sib-form>
</dialog>
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"
widget-batches="widget-batches"
widget-htAmount="widget-money"
widget-tvaAmount="widget-money"
widget-ttcAmount="widget-money"
widget-tvaRate="widget-tva-rate"
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"
<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>
<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>
</template>
</sib-template-renderer>
</dialog>
<!-- /customer ==================================== -->
<!-- freelance ==================================== -->
<section id="freelances-invoices" class="invoices-list invoices-list--freelances">
<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>
<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-uploadUrl="widget-embed-drive"
<!-- /freelance ==================================== -->
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>