diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php index 30e619ddb..bbc474696 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php @@ -166,10 +166,17 @@
- {{ __('admin::app.sales.invoices.order-date') }} + {{ __('admin::app.sales.invoices.order-date') }} - {{ $invoice->created_at->format('d-m-Y') }}
+ @if ($invoice->hasPaymentTerm()) +
+ {{ __('admin::app.admin.system.payment-terms') }} - + {{ $invoice->getFormattedPaymentTerm() }} +
+ @endif +
diff --git a/packages/Webkul/Sales/src/Models/Invoice.php b/packages/Webkul/Sales/src/Models/Invoice.php index 65d9a850a..3ce7d640d 100755 --- a/packages/Webkul/Sales/src/Models/Invoice.php +++ b/packages/Webkul/Sales/src/Models/Invoice.php @@ -4,11 +4,24 @@ namespace Webkul\Sales\Models; use Illuminate\Database\Eloquent\Model; use Webkul\Sales\Contracts\Invoice as InvoiceContract; +use Webkul\Sales\Traits\PaymentTerm; class Invoice extends Model implements InvoiceContract { + use PaymentTerm; + + /** + * The attributes that aren't mass assignable. + * + * @var string[]|bool + */ protected $guarded = ['id', 'created_at', 'updated_at']; + /** + * Invoice status. + * + * @var array + */ protected $statusLabel = [ 'pending' => 'Pending', 'paid' => 'Paid', @@ -16,7 +29,7 @@ class Invoice extends Model implements InvoiceContract ]; /** - * Returns the status label from status code + * Returns the status label from status code. */ public function getStatusLabelAttribute() { @@ -63,4 +76,4 @@ class Invoice extends Model implements InvoiceContract return $this->belongsTo(OrderAddressProxy::modelClass(), 'order_address_id') ->where('address_type', OrderAddress::ADDRESS_TYPE_BILLING); } -} \ No newline at end of file +} diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php index 7dd45516e..ade10acad 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -3,8 +3,8 @@ namespace Webkul\Sales\Repositories; use Illuminate\Container\Container as App; -use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Event; use Webkul\Core\Eloquent\Repository; use Webkul\Sales\Contracts\Invoice; use Webkul\Sales\Generators\InvoiceSequencer; @@ -12,28 +12,28 @@ use Webkul\Sales\Generators\InvoiceSequencer; class InvoiceRepository extends Repository { /** - * OrderRepository object + * Order repository instance. * * @var \Webkul\Sales\Repositories\OrderRepository */ protected $orderRepository; /** - * OrderItemRepository object + * Order's item repository instance. * * @var \Webkul\Sales\Repositories\OrderItemRepository */ protected $orderItemRepository; /** - * InvoiceItemRepository object + * Invoice's item repository instance. * * @var \Webkul\Sales\Repositories\InvoiceItemRepository */ protected $invoiceItemRepository; /** - * DownloadableLinkPurchasedRepository object + * Downloadable link purchased repository instance. * * @var \Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository */ @@ -54,8 +54,7 @@ class InvoiceRepository extends Repository InvoiceItemRepository $invoiceItemRepository, DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository, App $app - ) - { + ) { $this->orderRepository = $orderRepository; $this->orderItemRepository = $orderItemRepository; @@ -70,17 +69,18 @@ class InvoiceRepository extends Repository } /** - * Specify Model class name + * Specify model class name. * * @return string */ - - function model() + public function model() { return Invoice::class; } /** + * Create invoice. + * * @param array $data * @param string $invoiceState * @param string $orderState @@ -135,10 +135,10 @@ class InvoiceRepository extends Repository 'base_price' => $orderItem->base_price, 'total' => $orderItem->price * $qty, 'base_total' => $orderItem->base_price * $qty, - 'tax_amount' => ( ($orderItem->tax_amount / $orderItem->qty_ordered) * $qty ), - 'base_tax_amount' => ( ($orderItem->base_tax_amount / $orderItem->qty_ordered) * $qty ), - 'discount_amount' => ( ($orderItem->discount_amount / $orderItem->qty_ordered) * $qty ), - 'base_discount_amount' => ( ($orderItem->base_discount_amount / $orderItem->qty_ordered) * $qty ), + 'tax_amount' => (($orderItem->tax_amount / $orderItem->qty_ordered) * $qty), + 'base_tax_amount' => (($orderItem->base_tax_amount / $orderItem->qty_ordered) * $qty), + 'discount_amount' => (($orderItem->discount_amount / $orderItem->qty_ordered) * $qty), + 'base_discount_amount' => (($orderItem->base_discount_amount / $orderItem->qty_ordered) * $qty), 'product_id' => $orderItem->product_id, 'product_type' => $orderItem->product_type, 'additional' => $orderItem->additional, @@ -147,8 +147,8 @@ class InvoiceRepository extends Repository if ($orderItem->getTypeInstance()->isComposite()) { foreach ($orderItem->children as $childOrderItem) { $finalQty = $childOrderItem->qty_ordered - ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty - : $orderItem->qty_ordered; + ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty + : $orderItem->qty_ordered; $this->invoiceItemRepository->create([ 'invoice_id' => $invoice->id, @@ -170,7 +170,8 @@ class InvoiceRepository extends Repository 'additional' => $childOrderItem->additional, ]); - if ($childOrderItem->product + if ( + $childOrderItem->product && ! $childOrderItem->getTypeInstance()->isStockable() && $childOrderItem->getTypeInstance()->showQuantityBox() ) { @@ -184,7 +185,8 @@ class InvoiceRepository extends Repository $this->orderItemRepository->collectTotals($childOrderItem); } - } elseif ($orderItem->product + } elseif ( + $orderItem->product && ! $orderItem->getTypeInstance()->isStockable() && $orderItem->getTypeInstance()->showQuantityBox() ) { @@ -234,8 +236,10 @@ class InvoiceRepository extends Repository } /** - * @param \Webkul\Sales\Contracts\Invoice $invoice - * @return \Webkul\Sales\Contracts\Invoice + * Collect totals. + * + * @param \Webkul\Sales\Models\Invoice $invoice + * @return \Webkul\Sales\Models\Invoice */ public function collectTotals($invoice) { diff --git a/packages/Webkul/Sales/src/Traits/PaymentTerm.php b/packages/Webkul/Sales/src/Traits/PaymentTerm.php new file mode 100644 index 000000000..7108bef7e --- /dev/null +++ b/packages/Webkul/Sales/src/Traits/PaymentTerm.php @@ -0,0 +1,51 @@ +getPaymentTerm() + ? true : false; + } + + /** + * Get payment term from the core config in days. + * + * @return int + */ + public function getPaymentTerm() + { + static $dueDuration = 0; + + if ($dueDuration) { + return $dueDuration; + } + + return $dueDuration = (int) core()->getConfigData('sales.invoice_setttings.payment_terms.due_duration'); + } + + /** + * Formatted payment terms for invoice. Handled singular and plural case also. + * + * @return string + */ + public function getFormattedPaymentTerm() + { + $dueDuration = $this->getPaymentTerm(); + + if ($dueDuration > 1) { + return __('admin::app.admin.system.due-duration-days', ['due-duration' => $dueDuration]); + } + + return $dueDuration + ? __('admin::app.admin.system.due-duration-day', ['due-duration' => $dueDuration]) + : __('admin::app.admin.system.due-duration-day', ['due-duration' => 0]); + } +} diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php index 3b13087b1..2011e1b87 100755 --- a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php @@ -173,6 +173,13 @@ {{ core()->formatDate($invoice->order->created_at, 'd-m-Y') }} + @if ($invoice->hasPaymentTerm()) +
+ {{ __('shop::app.customer.account.order.view.payment-terms') }} - + {{ $invoice->getFormattedPaymentTerm() }} +
+ @endif +