diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index 4c52a310..b5b68677 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -18,12 +18,16 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use LaravelDaily\Invoices\Classes\Party; use PayPalCheckoutSdk\Core\PayPalHttpClient; use PayPalCheckoutSdk\Core\ProductionEnvironment; use PayPalCheckoutSdk\Core\SandboxEnvironment; use PayPalCheckoutSdk\Orders\OrdersCaptureRequest; use PayPalCheckoutSdk\Orders\OrdersCreateRequest; use PayPalHttp\HttpException; +use LaravelDaily\Invoices\Invoice; +use LaravelDaily\Invoices\Classes\Buyer; +use LaravelDaily\Invoices\Classes\InvoiceItem; class PaymentController extends Controller { @@ -93,7 +97,7 @@ class PaymentController extends Controller 'shipping_preference' => 'NO_SHIPPING' ] - + ]; @@ -164,7 +168,7 @@ class PaymentController extends Controller $user->update(['server_limit' => Configuration::getValueByKey('SERVER_LIMIT_AFTER_IRL_PURCHASE')]); } } - + //update role if ($user->role == 'member') { $user->update(['role' => 'client']); @@ -191,8 +195,45 @@ class PaymentController extends Controller event(new UserUpdateCreditsEvent($user)); + //create invoice + $seller = new Party([ + 'name' => 'Dennis L', + 'phone' => '1234513', + 'address' => 'Deutschlandstr 4, 66666 Hell', + 'custom_fields' => [ + 'UST_ID' => '365#GG', + ], + ]); + + + + $customer = new Buyer([ + 'name' => 'Dennis Leipe', + 'custom_fields' => [ + 'email' => 'dleipe@hafuga.de', + 'order number' => '> 654321 <', + ], + ]); + $item = (new InvoiceItem())->title($paypalProduct->description)->pricePerUnit($paypalProduct->price); + + $invoice = Invoice::make() + ->buyer($customer) + ->seller($seller) + ->discountByPercent(0) + ->taxRate(floatval($paypalProduct->getTaxPercent())) + ->shipping(0) + ->addItem($item) + ->series('BIG') + + ->status(__('invoices::invoice.paid')) + ->sequence(667) + ->serialNumberFormat('{SEQUENCE}/{SERIES}') + + ->save('public'); + + //redirect back to home - return redirect()->route('home')->with('success', 'Your credit balance has been increased!'); + return redirect()->route('home')->with('success', 'Your credit balance has been increased! Invoice: '.$invoice->url()); } // If call returns body in response, you can get the deserialized version from the result attribute of the response diff --git a/composer.json b/composer.json index 8873c2be..0c47b586 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,7 @@ "laravel/framework": "^8.12", "laravel/tinker": "^2.5", "laravel/ui": "^3.2", + "laraveldaily/laravel-invoices": "^2.0", "paypal/paypal-checkout-sdk": "^1.0", "paypal/rest-api-sdk-php": "^1.14", "socialiteproviders/discord": "^4.1", diff --git a/composer.lock b/composer.lock index a8ba8147..59eecaf3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "500346cc4a4a83b162e07bb0071d1602", + "content-hash": "51c5797dc1629fe1f42b1fdc91c6e5d8", "packages": [ { "name": "asm89/stack-cors", @@ -62,6 +62,72 @@ }, "time": "2021-03-11T06:42:03+00:00" }, + { + "name": "barryvdh/laravel-dompdf", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-dompdf.git", + "reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/5b99e1f94157d74e450f4c97e8444fcaffa2144b", + "reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b", + "shasum": "" + }, + "require": { + "dompdf/dompdf": "^1", + "illuminate/support": "^5.5|^6|^7|^8", + "php": "^7.1 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\DomPDF\\ServiceProvider" + ], + "aliases": { + "PDF": "Barryvdh\\DomPDF\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\DomPDF\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "A DOMPDF Wrapper for Laravel", + "keywords": [ + "dompdf", + "laravel", + "pdf" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-dompdf/issues", + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v0.9.0" + }, + "funding": [ + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2020-12-27T12:05:53+00:00" + }, { "name": "biscolab/laravel-recaptcha", "version": "5.0.1", @@ -780,6 +846,73 @@ ], "time": "2020-05-25T17:44:05+00:00" }, + { + "name": "dompdf/dompdf", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "de4aad040737a89fae2129cdeb0f79c45513128d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/de4aad040737a89fae2129cdeb0f79c45513128d", + "reference": "de4aad040737a89fae2129cdeb0f79c45513128d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "phenx/php-font-lib": "^0.5.2", + "phenx/php-svg-lib": "^0.3.3", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + }, + { + "name": "Brian Sweeney", + "email": "eclecticgeek@gmail.com" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v1.1.1" + }, + "time": "2021-11-24T00:45:04+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.1.0", @@ -1763,6 +1896,71 @@ }, "time": "2021-05-25T16:45:33+00:00" }, + { + "name": "laraveldaily/laravel-invoices", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/LaravelDaily/laravel-invoices.git", + "reference": "88c472680951acc57ccf179711add7d8dda36821" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelDaily/laravel-invoices/zipball/88c472680951acc57ccf179711add7d8dda36821", + "reference": "88c472680951acc57ccf179711add7d8dda36821", + "shasum": "" + }, + "require": { + "barryvdh/laravel-dompdf": "^0.9", + "illuminate/http": "^5.5|^6|^7|^8", + "illuminate/support": "^5.5|^6|^7|^8", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.4", + "symfony/var-dumper": "^5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelDaily\\Invoices\\InvoiceServiceProvider" + ], + "aliases": { + "Invoice": "LaravelDaily\\Invoices\\Facades\\Invoice" + } + } + }, + "autoload": { + "psr-4": { + "LaravelDaily\\Invoices\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Lun", + "email": "mysticcode@gmail.com", + "homepage": "https://lun.lt", + "role": "Developer" + } + ], + "description": "Missing invoices for Laravel", + "homepage": "https://github.com/LaravelDaily/laravel-invoices", + "keywords": [ + "invoice", + "invoices", + "laravel" + ], + "support": { + "issues": "https://github.com/LaravelDaily/laravel-invoices/issues", + "source": "https://github.com/LaravelDaily/laravel-invoices/tree/2.2.0" + }, + "time": "2021-09-29T08:31:40+00:00" + }, { "name": "league/commonmark", "version": "1.6.2", @@ -2601,6 +2799,92 @@ "abandoned": true, "time": "2019-01-04T20:04:25+00:00" }, + { + "name": "phenx/php-font-lib", + "version": "0.5.2", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-font-lib.git", + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "support": { + "issues": "https://github.com/PhenX/php-font-lib/issues", + "source": "https://github.com/PhenX/php-font-lib/tree/0.5.2" + }, + "time": "2020-03-08T15:31:32+00:00" + }, + { + "name": "phenx/php-svg-lib", + "version": "0.3.4", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-svg-lib.git", + "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/f627771eb854aa7f45f80add0f23c6c4d67ea0f2", + "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "sabberworm/php-css-parser": "^8.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", + "support": { + "issues": "https://github.com/PhenX/php-svg-lib/issues", + "source": "https://github.com/PhenX/php-svg-lib/tree/0.3.4" + }, + "time": "2021-10-18T02:13:32+00:00" + }, { "name": "phpoption/phpoption", "version": "1.7.5", @@ -3262,6 +3546,55 @@ ], "time": "2020-08-18T17:17:46+00:00" }, + { + "name": "sabberworm/php-css-parser", + "version": "8.3.1", + "source": { + "type": "git", + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "codacy/coverage": "^1.4", + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "autoload": { + "psr-0": { + "Sabberworm\\CSS": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1" + }, + "time": "2020-06-01T09:10:00+00:00" + }, { "name": "socialiteproviders/discord", "version": "4.1.1", @@ -8931,5 +9264,5 @@ "ext-intl": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/config/invoices.php b/config/invoices.php new file mode 100644 index 00000000..772ef1fd --- /dev/null +++ b/config/invoices.php @@ -0,0 +1,97 @@ + [ + /* + * Carbon date format + */ + 'format' => 'Y-m-d', + /* + * Due date for payment since invoice's date. + */ + 'pay_until_days' => 7, + ], + + 'serial_number' => [ + 'series' => 'AA', + 'sequence' => 1, + /* + * Sequence will be padded accordingly, for ex. 00001 + */ + 'sequence_padding' => 5, + 'delimiter' => '.', + /* + * Supported tags {SERIES}, {DELIMITER}, {SEQUENCE} + * Example: AA.00001 + */ + 'format' => '{SERIES}{DELIMITER}{SEQUENCE}', + ], + + 'currency' => [ + 'code' => 'eur', + /* + * Usually cents + * Used when spelling out the amount and if your currency has decimals. + * + * Example: Amount in words: Eight hundred fifty thousand sixty-eight EUR and fifteen ct. + */ + 'fraction' => 'ct.', + 'symbol' => '€', + /* + * Example: 19.00 + */ + 'decimals' => 2, + /* + * Example: 1.99 + */ + 'decimal_point' => '.', + /* + * By default empty. + * Example: 1,999.00 + */ + 'thousands_separator' => '', + /* + * Supported tags {VALUE}, {SYMBOL}, {CODE} + * Example: 1.99 € + */ + 'format' => '{VALUE} {SYMBOL}', + ], + + 'paper' => [ + // A4 = 210 mm x 297 mm = 595 pt x 842 pt + 'size' => 'a4', + 'orientation' => 'portrait', + ], + + 'disk' => 'local', + + 'seller' => [ + /* + * Class used in templates via $invoice->seller + * + * Must implement LaravelDaily\Invoices\Contracts\PartyContract + * or extend LaravelDaily\Invoices\Classes\Party + */ + 'class' => \LaravelDaily\Invoices\Classes\Seller::class, + + /* + * Default attributes for Seller::class + */ + 'attributes' => [ + 'name' => 'Towne, Smith and Ebert', + 'address' => '89982 Pfeffer Falls Damianstad, CO 66972-8160', + 'code' => '41-1985581', + 'vat' => '123456789', + 'phone' => '760-355-3930', + 'custom_fields' => [ + /* + * Custom attributes for Seller::class + * + * Used to display additional info on Seller section in invoice + * attribute => value + */ + 'SWIFT' => 'BANK101', + ], + ], + ], +]; diff --git a/public/vendor/invoices/sample-logo.png b/public/vendor/invoices/sample-logo.png new file mode 100644 index 00000000..6e5fa7c6 Binary files /dev/null and b/public/vendor/invoices/sample-logo.png differ diff --git a/resources/lang/vendor/invoices/en/invoice.php b/resources/lang/vendor/invoices/en/invoice.php new file mode 100644 index 00000000..5bd30fe4 --- /dev/null +++ b/resources/lang/vendor/invoices/en/invoice.php @@ -0,0 +1,38 @@ + 'Invoice', + 'serial' => 'Serial No.', + 'date' => 'Invoice date', + 'seller' => 'Seller', + 'buyer' => 'Buyer', + 'address' => 'Address', + 'code' => 'Code', + 'vat' => 'VAT code', + 'phone' => 'Phone', + 'description' => 'Description', + 'units' => 'Units', + 'quantity' => 'Qty', + 'price' => 'Price', + 'discount' => 'Discount', + 'tax' => 'Tax', + 'sub_total' => 'Sub total', + 'total_discount' => 'Total discount', + 'taxable_amount' => 'Taxable amount', + 'total_taxes' => 'Total taxes', + 'tax_rate' => 'Tax rate', + 'total_amount' => 'Total amount', + 'pay_until' => 'Please pay until', + 'amount_in_words' => 'Amount in words', + 'amount_in_words_format' => '%s %s and %s %s', + 'notes' => 'Notes', + 'shipping' => 'Shipping', + 'paid' => 'Paid', + 'due' => 'Due', +]; diff --git a/resources/lang/vendor/invoices/nl/invoice.php b/resources/lang/vendor/invoices/nl/invoice.php new file mode 100644 index 00000000..1e171c47 --- /dev/null +++ b/resources/lang/vendor/invoices/nl/invoice.php @@ -0,0 +1,38 @@ + 'Factuur', + 'serial' => 'Factuurnummer', + 'date' => 'Factuurdatum', + 'seller' => 'Leverancier', + 'buyer' => 'Afnemer', + 'address' => 'Adres', + 'code' => 'Code', + 'vat' => 'Btw-identificatienummer', + 'phone' => 'Telefoonnummer', + 'description' => 'Omschrijving', + 'units' => 'Eenheid', + 'quantity' => 'Aantal', + 'price' => 'Prijs', + 'discount' => 'Korting', + 'tax' => 'Belasting', + 'sub_total' => 'Subtotaal', + 'total_discount' => 'Totale korting', + 'taxable_amount' => 'Belastbaar bedrag', + 'total_taxes' => 'Totaal belastingen', + 'tax_rate' => 'Belastingtarief', + 'total_amount' => 'Totaalbedrag', + 'pay_until' => 'Gelieve te betalen voor', + 'amount_in_words' => 'Totaalbedrag in woorden', + 'amount_in_words_format' => '%s %s en %s %s', + 'notes' => 'Opmerkingen', + 'shipping' => 'Verzending', + 'paid' => 'Betaald', + 'due' => 'Openstaand', +]; diff --git a/resources/views/vendor/invoices/templates/default.blade.php b/resources/views/vendor/invoices/templates/default.blade.php new file mode 100644 index 00000000..2c4ad699 --- /dev/null +++ b/resources/views/vendor/invoices/templates/default.blade.php @@ -0,0 +1,386 @@ + + + + {{ $invoice->name }} + + + + + + + {{-- Header --}} + @if($invoice->logo) + logo + @endif + + + + + + + + +
+

+ {{ $invoice->name }} +

+
+ @if($invoice->status) +

+ {{ $invoice->status }} +

+ @endif +

{{ __('invoices::invoice.serial') }} {{ $invoice->getSerialNumber() }}

+

{{ __('invoices::invoice.date') }}: {{ $invoice->getDate() }}

+
+ + {{-- Seller - Buyer --}} + + + + + + + + + + + + + + + +
+ {{ __('invoices::invoice.seller') }} + + {{ __('invoices::invoice.buyer') }} +
+ @if($invoice->seller->name) +

+ {{ $invoice->seller->name }} +

+ @endif + + @if($invoice->seller->address) +

+ {{ __('invoices::invoice.address') }}: {{ $invoice->seller->address }} +

+ @endif + + @if($invoice->seller->code) +

+ {{ __('invoices::invoice.code') }}: {{ $invoice->seller->code }} +

+ @endif + + @if($invoice->seller->vat) +

+ {{ __('invoices::invoice.vat') }}: {{ $invoice->seller->vat }} +

+ @endif + + @if($invoice->seller->phone) +

+ {{ __('invoices::invoice.phone') }}: {{ $invoice->seller->phone }} +

+ @endif + + @foreach($invoice->seller->custom_fields as $key => $value) +

+ {{ ucfirst($key) }}: {{ $value }} +

+ @endforeach +
+ @if($invoice->buyer->name) +

+ {{ $invoice->buyer->name }} +

+ @endif + + @if($invoice->buyer->address) +

+ {{ __('invoices::invoice.address') }}: {{ $invoice->buyer->address }} +

+ @endif + + @if($invoice->buyer->code) +

+ {{ __('invoices::invoice.code') }}: {{ $invoice->buyer->code }} +

+ @endif + + @if($invoice->buyer->vat) +

+ {{ __('invoices::invoice.vat') }}: {{ $invoice->buyer->vat }} +

+ @endif + + @if($invoice->buyer->phone) +

+ {{ __('invoices::invoice.phone') }}: {{ $invoice->buyer->phone }} +

+ @endif + + @foreach($invoice->buyer->custom_fields as $key => $value) +

+ {{ ucfirst($key) }}: {{ $value }} +

+ @endforeach +
+ + {{-- Table --}} + + + + + @if($invoice->hasItemUnits) + + @endif + + + @if($invoice->hasItemDiscount) + + @endif + @if($invoice->hasItemTax) + + @endif + + + + + {{-- Items --}} + @foreach($invoice->items as $item) + + + @if($invoice->hasItemUnits) + + @endif + + + @if($invoice->hasItemDiscount) + + @endif + @if($invoice->hasItemTax) + + @endif + + + + @endforeach + {{-- Summary --}} + @if($invoice->hasItemOrInvoiceDiscount()) + + + + + + @endif + @if($invoice->taxable_amount) + + + + + + @endif + @if($invoice->tax_rate) + + + + + + @endif + @if($invoice->hasItemOrInvoiceTax()) + + + + + + @endif + @if($invoice->shipping_amount) + + + + + + @endif + + + + + + +
{{ __('invoices::invoice.description') }}{{ __('invoices::invoice.units') }}{{ __('invoices::invoice.quantity') }}{{ __('invoices::invoice.price') }}{{ __('invoices::invoice.discount') }}{{ __('invoices::invoice.tax') }}{{ __('invoices::invoice.sub_total') }}
+ {{ $item->title }} + + @if($item->description) +

{{ $item->description }}

+ @endif +
{{ $item->units }}{{ $item->quantity }} + {{ $invoice->formatCurrency($item->price_per_unit) }} + + {{ $invoice->formatCurrency($item->discount) }} + + {{ $invoice->formatCurrency($item->tax) }} + + {{ $invoice->formatCurrency($item->sub_total_price) }} +
{{ __('invoices::invoice.total_discount') }} + {{ $invoice->formatCurrency($invoice->total_discount) }} +
{{ __('invoices::invoice.taxable_amount') }} + {{ $invoice->formatCurrency($invoice->taxable_amount) }} +
{{ __('invoices::invoice.tax_rate') }} + {{ $invoice->tax_rate }}% +
{{ __('invoices::invoice.total_taxes') }} + {{ $invoice->formatCurrency($invoice->total_taxes) }} +
{{ __('invoices::invoice.shipping') }} + {{ $invoice->formatCurrency($invoice->shipping_amount) }} +
{{ __('invoices::invoice.total_amount') }} + {{ $invoice->formatCurrency($invoice->total_amount) }} +
+ + @if($invoice->notes) +

+ {{ trans('invoices::invoice.notes') }}: {!! $invoice->notes !!} +

+ @endif + +

+ {{ trans('invoices::invoice.amount_in_words') }}: {{ $invoice->getTotalAmountInWords() }} +

+

+ {{ trans('invoices::invoice.pay_until') }}: {{ $invoice->getPayUntilDate() }} +

+ + + +