Extend invoices and invoice items to keep more information.

This commit is contained in:
2025-01-31 13:04:59 +01:00
parent e2240c017d
commit d8afe4960e
20 changed files with 1475 additions and 640 deletions

View File

@@ -5,75 +5,165 @@
<title>{{ __('invoice.Invoice') }}</title>
<style>
@page { margin: 50mm 15mm 35mm 20mm; font-family:Figtree,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal; }
header { position: fixed; top: -30mm; left: 0; right: 0; height: 25mm; }
footer { position: fixed; bottom: -25mm; left: 0; right: 0; height: 10mm; font-size: 10px; border-top: 1px solid black; padding-top: 2mm;}
.invoice { font-size: 13px; }
.invoice-header { font-weight: bold; border-bottom: 1px solid black; }
.item { border-bottom: 1px solid black; }
.header-left { width: 100mm; }
.header-right { width: 70mm; font-size: 13px; }
.header-logo { height: 20mm; }
.footer-left { width: 115mm; }
.footer-center { width: 25mm; }
.footer-right {width: 40mm; }
.text-right { text-align: right; }
.left { float: left; display: inline-block; }
.right { float: right; display: inline-block; }
.clear { clear:both; height: 0; line-height: 0; }
.page-break { page-break-after: always; }
@page {
margin: 50mm 15mm 35mm 20mm;
font-family: Figtree, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", Segoe UI Symbol, "Noto Color Emoji";
font-feature-settings: normal;
font-variation-settings: normal;
}
header {
position: fixed;
top: -30mm;
left: 0;
right: 0;
height: 25mm;
}
footer {
position: fixed;
bottom: -25mm;
left: 0;
right: 0;
height: 10mm;
font-size: 10px;
border-top: 1px solid black;
padding-top: 2mm;
}
.invoice {
font-size: 13px;
}
.invoice-header {
font-weight: bold;
border-bottom: 1px solid black;
}
.item {
border-bottom: 1px solid black;
}
.header-left {
width: 100mm;
}
.header-right {
width: 70mm;
font-size: 13px;
}
.header-logo {
height: 20mm;
}
.footer-left {
width: 115mm;
}
.footer-center {
width: 25mm;
}
.footer-right {
width: 40mm;
}
.text-right {
text-align: right;
}
.left {
float: left;
display: inline-block;
}
.right {
float: right;
display: inline-block;
}
.clear {
clear: both;
height: 0;
line-height: 0;
}
.page-break {
page-break-after: always;
}
</style>
</head>
<body>
@include('pdfs.header')
@include('pdfs.header')
@include('pdfs.footer')
@include('pdfs.footer')
<main>
@include('pdfs.address')
<main>
@include('pdfs.address')
<div class="invoice">
<div class="invoice-header">
<div style="width: 15mm;" class="left">{{ __('invoice.Item position short') }}</div>
<div style="width: 15mm;" class="left">{{ __('invoice.Item amount short') }}</div>
<div style="width: 85mm;" class="left">{{ __('invoice.Item description') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Item single price short') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Vat short') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Item total price short') }}</div>
<div class="invoice">
<div class="invoice-header">
<div style="width: 15mm;" class="left">{{ __('invoice.Item position short') }}</div>
<div style="width: 15mm;" class="left">{{ __('invoice.Item amount short') }}</div>
<div style="width: 65mm;" class="left">{{ __('invoice.Name') }} / {{ __('invoice.Article number') }}
/ {{ __('invoice.Description') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Item single price short') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Discount') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Vat short') }}</div>
<div style="width: 20mm;" class="left text-right">{{ __('invoice.Item total price short') }}</div>
<br class="clear"/>
</div>
@foreach ($invoice->items as $key => $item)
<div class="item">
<div style="width: 15mm;" class="left">{{ $key + 1 }}</div>
<div style="width: 15mm;" class="left">{{ \Illuminate\Support\Number::format($item->amount) }}</div>
<div style="width: 65mm;" class="left">{{ $item->name }}</div>
<div style="width: 20mm;"
class="left text-right">{{ \Illuminate\Support\Number::currency($item->price) }}</div>
<div style="width: 20mm;"
class="left text-right">{{ \Illuminate\Support\Number::percentage($item->discount) }}<br/></div>
<div style="width: 20mm;"
class="left text-right">{{ \Illuminate\Support\Number::percentage($item->tax) }}<br/></div>
<div style="width: 20mm;"
class="left text-right">{{ \Illuminate\Support\Number::currency($item->total) }}</div>
<br class="clear"/>
<div style="width: 30mm;" class="left"></div>
<div style="width: 85mm;"
class="left">{!! ($item->article_number) ? $item->article_number . '<br/>' : ''; !!}{!! nl2br($item->description) !!}</div>
<div style="width: 20mm;"
class="left text-right">{{ \Illuminate\Support\Number::currency($item->amount * $item->price * $item->discount / 100) }}</div>
<div style="width: 20mm;"
class="left text-right">{{ \Illuminate\Support\Number::currency($item->amount * $item->price * ($item->tax / 100) * (1 - $item->discount / 100)) }}</div>
<br class="clear"/>
</div>
@endforeach
@foreach ($invoice->items as $key => $item)
<div class="item">
<div style="width: 15mm;" class="left">{{ $key + 1 }}</div>
<div style="width: 15mm;" class="left">{{ \Illuminate\Support\Number::format($item->amount) }}</div>
<div style="width: 85mm;" class="left">{{ $item->name }}</div>
<div style="width: 20mm;" class="left text-right">{{ \Illuminate\Support\Number::currency($item->price) }}</div>
<div style="width: 20mm;" class="left text-right">{{ \Illuminate\Support\Number::percentage($item->tax) }}<br/></div>
<div style="width: 20mm;" class="left text-right">{{ \Illuminate\Support\Number::currency($item->total) }}</div>
<br class="clear"/>
<div style="width: 30mm;" class="left"></div>
<div style="width: 105mm;" class="left">{{ $item->description }}</div>
<div style="width: 20mm;" class="left text-right">{{ \Illuminate\Support\Number::currency($item->amount * $item->price * $item->tax / 100) }}</div>
<br class="clear"/>
</div>
@endforeach
<div class="left" style="padding-left: 30mm; width: 105mm;">{{ __('invoice.Net long') }}</div>
<div class="left text-right"
style="width: 40mm;">{{ \Illuminate\Support\Number::currency($invoice->sum - $invoice->tax) }}</div>
<br class="clear"/>
<div class="left" style="padding-left: 30mm; width: 105mm;">+ {{ __('invoice.Vat short') }}</div>
<div class="left text-right"
style="width: 40mm;">{{ \Illuminate\Support\Number::currency($invoice->tax) }}</div>
<br class="clear"/>
<div class="left" style="width: 30mm;"></div>
<div class="left"
style="font-weight: bold; width: 105mm; border-bottom: 1px solid black;">{{ __('invoice.Gross long') }}</div>
<div class="left text-right"
style="font-weight: bold; width: 40mm; border-bottom: 1px solid black;">{{ \Illuminate\Support\Number::currency($invoice->sum) }}</div>
<br class="clear"/>
<div class="left" style="padding-left: 30mm; width: 105mm;">{{ __('invoice.Net long') }}</div>
<div class="left text-right" style="width: 40mm;">{{ \Illuminate\Support\Number::currency($invoice->sum - $invoice->tax) }}</div>
<br class="clear"/>
<div class="left" style="padding-left: 30mm; width: 105mm;">+ {{ __('invoice.Vat short') }}</div>
<div class="left text-right" style="width: 40mm;">{{ \Illuminate\Support\Number::currency($invoice->tax) }}</div>
<br class="clear"/>
<div class="left" style="width: 30mm;"></div>
<div class="left" style="font-weight: bold; width: 105mm; border-bottom: 1px solid black;">{{ __('invoice.Gross long') }}</div>
<div class="left text-right" style="font-weight: bold; width: 40mm; border-bottom: 1px solid black;">{{ \Illuminate\Support\Number::currency($invoice->sum) }}</div>
<br class="clear"/>
<div
style="margin-top: 5mm;">{{ __('invoice.Final sentence', ['sum' => \Illuminate\Support\Number::currency($invoice->sum), 'date' => \Illuminate\Support\Carbon::parse($invoice->due_date)->format('d.m.Y')]) }}</div>
@if($invoice->cash_discount != 0)
<div
style="margin-top: 5mm;">{{ __('invoice.Discount sentence', ['sum' => \Illuminate\Support\Number::currency($invoice->sum * (100 - $invoice->cash_discount) / 100), 'date' => \Illuminate\Support\Carbon::parse($invoice->cash_discount_date)->format('d.m.Y'), 'discount' => \Illuminate\Support\Number::percentage($invoice->cash_discount)]) }}</div>
@endif
<div style="margin-top: 5mm;">{{ __('invoice.Final sentence', ['sum' => \Illuminate\Support\Number::currency($invoice->sum), 'date' => \Illuminate\Support\Carbon::parse($invoice->created_at)->addDays(14)->format('d.m.Y')]) }}</div>
</div>
</main>
</div>
</main>
</body>
</html>