112 lines
5.0 KiB
Plaintext
112 lines
5.0 KiB
Plaintext
{{ define "title" -}}
|
|
{{ .Number | printf ( pgettext "Invoice %s" "title" )}}
|
|
{{- end }}
|
|
|
|
{{ define "content" }}
|
|
{{- /*gotype: dev.tandem.ws/tandem/numerus/pkg.invoice*/ -}}
|
|
<nav>
|
|
<p>
|
|
<a href="{{ companyURI "/" }}">{{( pgettext "Home" "title" )}}</a> /
|
|
<a href="{{ companyURI "/invoices"}}">{{( pgettext "Invoices" "title" )}}</a> /
|
|
<a>{{ .Number }}</a>
|
|
</p>
|
|
<p>
|
|
<a class="primary button"
|
|
href="{{ companyURI "/invoices/" }}{{ .Slug }}.pdf"
|
|
download="{{ .Number}}.pdf">{{( pgettext "Download invoice" "action" )}}</a>
|
|
</p>
|
|
</nav>
|
|
|
|
<link rel="stylesheet" type="text/css" href="/static/invoice.css">
|
|
<article class="invoice">
|
|
<header>
|
|
<div>
|
|
<h1>{{ .Number | printf ( pgettext "Invoice %s" "title" )}}</h1>
|
|
<p class="date">{{( pgettext "Date" "title" )}} {{ .Date | formatDate }}</p>
|
|
</div>
|
|
|
|
<address class="invoicer">
|
|
{{ .Invoicer.Name }}<br>
|
|
{{ .Invoicer.VATIN }}<br>
|
|
{{ .Invoicer.Address }}<br>
|
|
{{ .Invoicer.City }} ({{ .Invoicer.PostalCode}}), {{ .Invoicer.Province }}<br>
|
|
{{ .Invoicer.Email }}<br>
|
|
{{ .Invoicer.Phone }}<br>
|
|
</address>
|
|
|
|
<p class="legal">Oriol Carbonell Pujolàs és Responsable del Tractament de les seves dades d'acord
|
|
amb el RGPD i la LOPDGDDGDD, i les tracta per a mantenir una relació
|
|
mercantil/comercial amb vostè. Les conservarà mentre es mantingui aquesta relació
|
|
i no es comunicaran a tercers. Pot exercir els drets d'accés, rectificació, portabilitat,
|
|
supressió, limitació i oposició a Oriol Carbonell pUJOLÀS, amb domicili Carrer dels
|
|
Sastres 14, 17800 Olot o enviant un correu electrònic a info@visavis.cat. Per a
|
|
qualsevol reclamació pot acudir a agpd.es. Per a més informació pot consultar la
|
|
nostra política de privacitat a www.visavis.cat.</p>
|
|
</header>
|
|
|
|
<div>
|
|
<address class="invoicee">
|
|
{{ .Invoicee.Name }}<br>
|
|
{{ .Invoicee.VATIN }}<br>
|
|
{{ .Invoicee.Address }}<br>
|
|
{{ .Invoicee.City }} ({{ .Invoicee.PostalCode}}), {{ .Invoicee.Province }}<br>
|
|
</address>
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>{{( pgettext "Concept" "title" )}}</th>
|
|
<th class="numeric">{{( pgettext "Price" "title" )}}</th>
|
|
<th class="numeric">{{( pgettext "Units" "title" )}}</th>
|
|
<th class="numeric">{{( pgettext "Subtotal" "title" )}}</th>
|
|
</tr>
|
|
</thead>
|
|
{{ $lastIndex := len .Products | sub 1 }}
|
|
{{ range $index, $product := .Products -}}
|
|
<tbody>
|
|
{{ if .Description }}
|
|
<tr class="name">
|
|
<td colspan="4">{{ .Name }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>{{ .Description }}</td>
|
|
<td class="numeric">{{ .Price | formatPrice }}</td>
|
|
<td class="numeric">{{ .Quantity }}</td>
|
|
<td class="numeric">{{ .Total | formatPrice }}</td>
|
|
</tr>
|
|
{{ else }}
|
|
<tr class="name">
|
|
<td>{{ .Name }}</td>
|
|
<td class="numeric">{{ .Price | formatPrice }}</td>
|
|
<td class="numeric">{{ .Quantity }}</td>
|
|
<td class="numeric">{{ .Total | formatPrice }}</td>
|
|
</tr>
|
|
{{- end }}
|
|
{{ if (eq $index $lastIndex) }}
|
|
<tr class="tfoot">
|
|
<th scope="row" colspan="3">{{( pgettext "Subtotal" "title" )}}</th>
|
|
<td class="numeric">{{ $.Subtotal | formatPrice }}</td>
|
|
</tr>
|
|
{{ range $tax := $.Taxes -}}
|
|
<tr class="tfoot">
|
|
<th scope="row" colspan="3">{{ index . 0 }}</th>
|
|
<td class="numeric">{{ index . 1 | formatPrice }}</td>
|
|
</tr>
|
|
{{- end }}
|
|
<tr class="tfoot">
|
|
<th scope="row" colspan="3">{{( pgettext "Total" "title" )}}</th>
|
|
<td class="numeric">{{ $.Total | formatPrice }}</td>
|
|
</tr>
|
|
{{ end }}
|
|
</tbody>
|
|
{{- end }}
|
|
</table>
|
|
|
|
{{ if .Notes -}}
|
|
<p class="notes">{{ .Notes }}</p>
|
|
{{- end }}
|
|
|
|
</div>
|
|
</article>
|
|
{{- end}}
|