From c3a777bdf4f33b470320d5bf6bd6efb0fe24e884 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Fri, 26 Nov 2021 20:42:38 +0100 Subject: [PATCH] First COmmit --- .../Controllers/Admin/PaymentController.php | 47 ++- composer.json | 1 + composer.lock | 337 ++++++++++++++- config/invoices.php | 97 +++++ public/vendor/invoices/sample-logo.png | Bin 0 -> 44248 bytes resources/lang/vendor/invoices/en/invoice.php | 38 ++ resources/lang/vendor/invoices/nl/invoice.php | 38 ++ .../invoices/templates/default.blade.php | 386 ++++++++++++++++++ 8 files changed, 939 insertions(+), 5 deletions(-) create mode 100644 config/invoices.php create mode 100644 public/vendor/invoices/sample-logo.png create mode 100644 resources/lang/vendor/invoices/en/invoice.php create mode 100644 resources/lang/vendor/invoices/nl/invoice.php create mode 100644 resources/views/vendor/invoices/templates/default.blade.php 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 0000000000000000000000000000000000000000..6e5fa7c6fcb1db2db80a0fcb2619f65c59feede3 GIT binary patch literal 44248 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 LNkvXXu0mjfk2qcb literal 0 HcmV?d00001 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() }} +

+ + + +