diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php index 363cfcabd..25acab56c 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php @@ -2,14 +2,16 @@ namespace Webkul\Admin\Http\Controllers\Sales; +use Illuminate\Http\Request; use Webkul\Admin\Http\Controllers\Controller; +use Webkul\Admin\Traits\Mails; use Webkul\Core\Traits\PDFHandler; use Webkul\Sales\Repositories\InvoiceRepository; use Webkul\Sales\Repositories\OrderRepository; class InvoiceController extends Controller { - use PDFHandler; + use Mails, PDFHandler; /** * Display a listing of the resource. @@ -133,6 +135,34 @@ class InvoiceController extends Controller return view($this->_config['view'], compact('invoice')); } + /** + * Send duplicate invoice. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function sendDuplicateInvoice(Request $request, $id) + { + $request->validate([ + 'email' => 'required|email', + ]); + + $invoice = $this->invoiceRepository->findOrFail($id); + + if ($invoice) { + $this->sendDuplicateInvoiceMail($invoice, $request->email); + + session()->flash('success', __('admin::app.sales.invoices.invoice-sent')); + + return redirect()->back(); + } + + session()->flash('error', __('admin::app.response.something-went-wrong')); + + return redirect()->back(); + } + /** * Print and download the for the specified resource. * diff --git a/packages/Webkul/Admin/src/Mail/DuplicateInvoiceNotification.php b/packages/Webkul/Admin/src/Mail/DuplicateInvoiceNotification.php new file mode 100755 index 000000000..da2473c29 --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/DuplicateInvoiceNotification.php @@ -0,0 +1,57 @@ +invoice = $invoice; + + $this->customerEmail = $customerEmail; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $order = $this->invoice->order; + + $email = $this->customerEmail ?? $order->customer_email; + + return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name']) + ->to($email, $order->customer_full_name) + ->subject(trans('shop::app.mail.invoice.subject', ['order_id' => $order->increment_id])) + ->view('shop::emails.sales.new-invoice'); + } +} diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 16bb94f10..4c2fd8726 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -401,32 +401,35 @@ return [ ], 'invoices' => [ - 'title' => 'الفواتير', - 'id' => 'Id', - 'invoice-id' => 'هوية صوتية', - 'invoice' => 'فاتورة', - 'date' => 'تاريخ الفاتورة', - 'order-id' => 'Id طلب', - 'customer-name' => 'اسم الزبون', - 'status' => 'الحالة', - 'amount' => 'المبلغ', - 'action' => 'الإجراء', - 'add-title' => 'أنشئ الفاتورة', - 'save-btn-title' => 'احفظ الفاتورة', - 'qty' => 'Qty', - 'qty-ordered' => 'تعداد سفارشات', - 'qty-to-invoice' => 'qty إلى فاتورة', - 'view-title' => '#:invoice_id فاتورة', - 'bill-to' => 'بيل إلى', - 'ship-to' => 'السفينة إلى', - 'print' => 'اطبع', - 'order-date' => 'تاريخ الطلب', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'لا يسمح بإنشاء الفواتير.', - 'product-error' => 'ولا يمكن إعداد الفاتورة بدون منتجات.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'الفواتير', + 'id' => 'Id', + 'invoice-id' => 'هوية صوتية', + 'invoice' => 'فاتورة', + 'date' => 'تاريخ الفاتورة', + 'order-id' => 'Id طلب', + 'customer-name' => 'اسم الزبون', + 'status' => 'الحالة', + 'amount' => 'المبلغ', + 'action' => 'الإجراء', + 'add-title' => 'أنشئ الفاتورة', + 'save-btn-title' => 'احفظ الفاتورة', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Qty', + 'qty-ordered' => 'تعداد سفارشات', + 'qty-to-invoice' => 'qty إلى فاتورة', + 'view-title' => '#:invoice_id فاتورة', + 'bill-to' => 'بيل إلى', + 'ship-to' => 'السفينة إلى', + 'print' => 'اطبع', + 'order-date' => 'تاريخ الطلب', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'لا يسمح بإنشاء الفواتير.', + 'product-error' => 'ولا يمكن إعداد الفاتورة بدون منتجات.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index c9d4a0ab7..b37ac6f05 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -397,31 +397,34 @@ return [ ], 'invoices' => [ - 'title' => 'Rechnungen', - 'id' => 'Id', - 'invoice-id' => 'Rechnungsnummer', - 'date' => 'Rechnungsdatum', - 'order-id' => 'Auftragsnummer', - 'customer-name' => 'Name des Kunden', - 'status' => 'Status', - 'amount' => 'Betrag', - 'action' => 'Aktion', - 'add-title' => 'Rechnung erstellen', - 'save-btn-title' => 'Rechnung speichern', - 'qty' => 'Menge', - 'qty-ordered' => 'Bestellte Menge', - 'qty-to-invoice' => 'Menge in Rechnung zu stellen', - 'view-title' => 'Rechnung #:invoice_id', - 'bill-to' => 'Rechnung an', - 'ship-to' => 'Versenden an', - 'print' => 'Drucken', - 'order-date' => 'Bestell-Datum', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.', - 'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'Rechnungen', + 'id' => 'Id', + 'invoice-id' => 'Rechnungsnummer', + 'date' => 'Rechnungsdatum', + 'order-id' => 'Auftragsnummer', + 'customer-name' => 'Name des Kunden', + 'status' => 'Status', + 'amount' => 'Betrag', + 'action' => 'Aktion', + 'add-title' => 'Rechnung erstellen', + 'save-btn-title' => 'Rechnung speichern', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Menge', + 'qty-ordered' => 'Bestellte Menge', + 'qty-to-invoice' => 'Menge in Rechnung zu stellen', + 'view-title' => 'Rechnung #:invoice_id', + 'bill-to' => 'Rechnung an', + 'ship-to' => 'Versenden an', + 'print' => 'Drucken', + 'order-date' => 'Bestell-Datum', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.', + 'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 4a7b9d088..0fb0f2756 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -413,32 +413,35 @@ return [ ], 'invoices' => [ - 'title' => 'Invoices', - 'id' => 'ID', - 'invoice' => 'Invoice', - 'invoice-id' => 'Invoice ID', - 'date' => 'Invoice Date', - 'order-id' => 'Order ID', - 'customer-name' => 'Customer Name', - 'status' => 'Status', - 'amount' => 'Amount', - 'action' => 'Action', - 'add-title' => 'Create Invoice', - 'save-btn-title' => 'Save Invoice', - 'qty' => 'Qty', - 'qty-ordered' => 'Qty Ordered', - 'qty-to-invoice' => 'Qty to Invoice', - 'view-title' => 'Invoice #:invoice_id', - 'bill-to' => 'Bill to', - 'ship-to' => 'Ship to', - 'print' => 'Print', - 'order-date' => 'Order Date', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'Order invoice creation is not allowed.', - 'product-error' => 'Invoice can not be created without products.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'Invoices', + 'id' => 'ID', + 'invoice' => 'Invoice', + 'invoice-id' => 'Invoice ID', + 'date' => 'Invoice Date', + 'order-id' => 'Order ID', + 'customer-name' => 'Customer Name', + 'status' => 'Status', + 'amount' => 'Amount', + 'action' => 'Action', + 'add-title' => 'Create Invoice', + 'save-btn-title' => 'Save Invoice', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Qty', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-invoice' => 'Qty to Invoice', + 'view-title' => 'Invoice #:invoice_id', + 'bill-to' => 'Bill to', + 'ship-to' => 'Ship to', + 'print' => 'Print', + 'order-date' => 'Order Date', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'Order invoice creation is not allowed.', + 'product-error' => 'Invoice can not be created without products.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/es/app.php b/packages/Webkul/Admin/src/Resources/lang/es/app.php index b6284418b..7cf504364 100644 --- a/packages/Webkul/Admin/src/Resources/lang/es/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/es/app.php @@ -411,32 +411,35 @@ return [ ], 'invoices' => [ - 'title' => 'Facturas', - 'id' => 'Id', - 'invoice-id' => 'Factura #', - 'invoice' => 'Factura', - 'date' => 'Fecha de factura', - 'order-id' => 'Pedido #', - 'customer-name' => 'Nombre del cliente', - 'status' => 'Estado', - 'amount' => 'Monto', - 'action' => 'Acción', - 'add-title' => 'Crear factura', - 'save-btn-title' => 'Guardar factura', - 'qty' => 'Cant', - 'qty-ordered' => 'Cant pedido', - 'qty-to-invoice' => 'Cant a facturar', - 'view-title' => 'Factura #:invoice_id', - 'bill-to' => 'Facturar a', - 'ship-to' => 'Enviar a', - 'print' => 'Imprimir', - 'order-date' => 'Fecha del pedido', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'La creación de facturas al pedido no está permitida.', - 'product-error' => 'La factura no puede ser creada sin productos.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'Facturas', + 'id' => 'Id', + 'invoice-id' => 'Factura #', + 'invoice' => 'Factura', + 'date' => 'Fecha de factura', + 'order-id' => 'Pedido #', + 'customer-name' => 'Nombre del cliente', + 'status' => 'Estado', + 'amount' => 'Monto', + 'action' => 'Acción', + 'add-title' => 'Crear factura', + 'save-btn-title' => 'Guardar factura', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Cant', + 'qty-ordered' => 'Cant pedido', + 'qty-to-invoice' => 'Cant a facturar', + 'view-title' => 'Factura #:invoice_id', + 'bill-to' => 'Facturar a', + 'ship-to' => 'Enviar a', + 'print' => 'Imprimir', + 'order-date' => 'Fecha del pedido', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'La creación de facturas al pedido no está permitida.', + 'product-error' => 'La factura no puede ser creada sin productos.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 7df608a8e..d299ae91a 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -404,32 +404,35 @@ return [ ], 'invoices' => [ - 'title' => 'صورت حساب', - 'id' => 'شناسه', - 'invoice-id' => 'شناسه صورت حساب', - 'invoice' => 'صورتحساب', - 'date' => 'تاریخ صورت حساب', - 'order-id' => 'سفارش', - 'customer-name' => 'نام مشتری', - 'status' => 'وضعیت', - 'amount' => 'میزان', - 'action' => 'عملیات', - 'add-title' => 'ایجاد فاکتور', - 'save-btn-title' => 'ایجاد فاکتور', - 'qty' => 'مقدار', - 'qty-ordered' => 'سفارش داده شده', - 'qty-to-invoice' => 'مقدار به فاکتور', - 'view-title' => '#:invoice_id صورت حساب', - 'bill-to' => 'صورت حساب به', - 'ship-to' => 'حمل به', - 'print' => 'چاپ', - 'order-date' => 'تاریخ سفارش', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'ایجاد فاکتور سفارش مجاز نیست.', - 'product-error' => 'بدون محصولات نمی توان فاکتور ایجاد کرد.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'صورت حساب', + 'id' => 'شناسه', + 'invoice-id' => 'شناسه صورت حساب', + 'invoice' => 'صورتحساب', + 'date' => 'تاریخ صورت حساب', + 'order-id' => 'سفارش', + 'customer-name' => 'نام مشتری', + 'status' => 'وضعیت', + 'amount' => 'میزان', + 'action' => 'عملیات', + 'add-title' => 'ایجاد فاکتور', + 'save-btn-title' => 'ایجاد فاکتور', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'مقدار', + 'qty-ordered' => 'سفارش داده شده', + 'qty-to-invoice' => 'مقدار به فاکتور', + 'view-title' => '#:invoice_id صورت حساب', + 'bill-to' => 'صورت حساب به', + 'ship-to' => 'حمل به', + 'print' => 'چاپ', + 'order-date' => 'تاریخ سفارش', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'ایجاد فاکتور سفارش مجاز نیست.', + 'product-error' => 'بدون محصولات نمی توان فاکتور ایجاد کرد.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/fr/app.php b/packages/Webkul/Admin/src/Resources/lang/fr/app.php index 3d0d558b6..edcaf1037 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fr/app.php @@ -411,32 +411,35 @@ return [ ], 'invoices' => [ - 'title' => 'Factures', - 'id' => 'identifiant', - 'invoice' => 'Facturer', - 'invoice-id' => 'Identifiant de la facture', - 'date' => 'Date de la facture', - 'order-id' => 'numéro de commande', - 'customer-name' => 'Nom du client', - 'status' => 'Statut', - 'amount' => 'Montant', - 'action' => 'action', - 'add-title' => 'Créer une facture', - 'save-btn-title' => 'Enregistrer la facture', - 'qty' => 'Qté', - 'qty-ordered' => 'Qté commandée', - 'qty-to-invoice' => 'Quantité à facturer', - 'view-title' => 'Facture # :invoice_id', - 'bill-to' => 'facturer', - 'ship-to' => 'Envoyez à', - 'print' => 'Imprimer', - 'order-date' => 'Date de commande', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'La création de facture de commande n\'est pas autorisée.', - 'product-error' => 'La facture ne peut pas être créée sans produits.', - 'status-overdue' => 'En retard', - 'status-pending' => 'En attente de paiement', - 'status-paid' => 'Payé', + 'title' => 'Factures', + 'id' => 'identifiant', + 'invoice' => 'Facturer', + 'invoice-id' => 'Identifiant de la facture', + 'date' => 'Date de la facture', + 'order-id' => 'numéro de commande', + 'customer-name' => 'Nom du client', + 'status' => 'Statut', + 'amount' => 'Montant', + 'action' => 'action', + 'add-title' => 'Créer une facture', + 'save-btn-title' => 'Enregistrer la facture', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Qté', + 'qty-ordered' => 'Qté commandée', + 'qty-to-invoice' => 'Quantité à facturer', + 'view-title' => 'Facture # :invoice_id', + 'bill-to' => 'facturer', + 'ship-to' => 'Envoyez à', + 'print' => 'Imprimer', + 'order-date' => 'Date de commande', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'La création de facture de commande n\'est pas autorisée.', + 'product-error' => 'La facture ne peut pas être créée sans produits.', + 'status-overdue' => 'En retard', + 'status-pending' => 'En attente de paiement', + 'status-paid' => 'Payé', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index b1b60cd75..cf705bce6 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -402,32 +402,35 @@ return [ ], 'invoices' => [ - 'title' => 'Fatture', - 'id' => 'Id', - 'invoice-id' => 'Id Fattura', - 'invoice' => 'Fattura', - 'date' => 'Data Fattura', - 'order-id' => 'Id Ordine', - 'customer-name' => 'Nome Cliente', - 'status' => 'Stato', - 'amount' => 'Ammontare', - 'action' => 'Azione', - 'add-title' => 'Crea Fattura', - 'save-btn-title' => 'Salva Fattura', - 'qty' => 'Qtà', - 'qty-ordered' => 'Qtà ordinata', - 'qty-to-invoice' => 'Qtà da fatturare', - 'view-title' => 'Fattura #:invoice_id', - 'bill-to' => 'Fatturato a', - 'ship-to' => 'Spedito a', - 'print' => 'Stampa', - 'order-date' => 'Data Ordine', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'La creazione della fattura dell\'Ordine non è consentita.', - 'product-error' => 'La fattura non può essere creata senza prodotti.', - 'status-overdue' => 'Pending', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'Fatture', + 'id' => 'Id', + 'invoice-id' => 'Id Fattura', + 'invoice' => 'Fattura', + 'date' => 'Data Fattura', + 'order-id' => 'Id Ordine', + 'customer-name' => 'Nome Cliente', + 'status' => 'Stato', + 'amount' => 'Ammontare', + 'action' => 'Azione', + 'add-title' => 'Crea Fattura', + 'save-btn-title' => 'Salva Fattura', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Qtà', + 'qty-ordered' => 'Qtà ordinata', + 'qty-to-invoice' => 'Qtà da fatturare', + 'view-title' => 'Fattura #:invoice_id', + 'bill-to' => 'Fatturato a', + 'ship-to' => 'Spedito a', + 'print' => 'Stampa', + 'order-date' => 'Data Ordine', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'La creazione della fattura dell\'Ordine non è consentita.', + 'product-error' => 'La fattura non può essere creata senza prodotti.', + 'status-overdue' => 'Pending', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index e64674532..2fc0efc6b 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -398,32 +398,35 @@ return [ ], 'invoices' => [ - 'title' => 'Facturen', - 'id' => 'Id', - 'invoice-id' => 'Factuurnummer', - 'invoice' => 'Factuur', - 'date' => 'Factuur datum', - 'order-id' => 'Bestelnummer', - 'customer-name' => 'Klantnaam', - 'status' => 'Status', - 'amount' => 'Bedrag', - 'action' => 'Actie', - 'add-title' => 'Factuur aanmaken', - 'save-btn-title' => 'Bewaar factuur', - 'qty' => 'Aantal', - 'qty-ordered' => 'Besteld aantal', - 'qty-to-invoice' => 'Aantal te factureren', - 'view-title' => 'Factuur #:invoice_id', - 'bill-to' => 'Bill to', - 'ship-to' => 'Verzenden naar', - 'print' => 'Print', - 'order-date' => 'Besteldatum', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'De bestelling staat niet toe dat er een factuur wordt aangemaakt.', - 'product-error' => 'Zonder producten kan er geen factuur worden aangemaakt.', - 'status-overdue' => 'Verlopen', - 'status-pending' => 'Wachten op betaling', - 'status-paid' => 'Betaald', + 'title' => 'Facturen', + 'id' => 'Id', + 'invoice-id' => 'Factuurnummer', + 'invoice' => 'Factuur', + 'date' => 'Factuur datum', + 'order-id' => 'Bestelnummer', + 'customer-name' => 'Klantnaam', + 'status' => 'Status', + 'amount' => 'Bedrag', + 'action' => 'Actie', + 'add-title' => 'Factuur aanmaken', + 'save-btn-title' => 'Bewaar factuur', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Aantal', + 'qty-ordered' => 'Besteld aantal', + 'qty-to-invoice' => 'Aantal te factureren', + 'view-title' => 'Factuur #:invoice_id', + 'bill-to' => 'Bill to', + 'ship-to' => 'Verzenden naar', + 'print' => 'Print', + 'order-date' => 'Besteldatum', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'De bestelling staat niet toe dat er een factuur wordt aangemaakt.', + 'product-error' => 'Zonder producten kan er geen factuur worden aangemaakt.', + 'status-overdue' => 'Verlopen', + 'status-pending' => 'Wachten op betaling', + 'status-paid' => 'Betaald', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index 7534c5220..a144cd4e7 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -400,32 +400,35 @@ return [ ], 'invoices' => [ - 'title' => 'Faktury', - 'id' => 'Id', - 'invoice-id' => 'Identyfikator faktury', - 'invoice' => 'Faktura', - 'date' => 'Data faktury', - 'order-id' => 'Identyfikator zamówienia', - 'customer-name' => 'Nazwa klienta', - 'status' => 'Status', - 'amount' => 'Kwota', - 'action' => 'Akcja', - 'add-title' => 'Utwórz fakturę', - 'save-btn-title' => 'Zapisz fakturę', - 'qty' => 'Ilość', - 'qty-ordered' => 'Zamówiona ilość', - 'qty-to-invoice' => 'ilość do faktury', - 'view-title' => 'Faktura nr #:invoice_id', - 'bill-to' => 'Rachunek do', - 'ship-to' => 'Wysłano do', - 'print' => 'Drukuj', - 'order-date' => 'Data zamówienia', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'Tworzenie faktury za zamówienie jest niedozwolone.', - 'product-error' => 'Faktury nie można utworzyć bez produktów.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'Faktury', + 'id' => 'Id', + 'invoice-id' => 'Identyfikator faktury', + 'invoice' => 'Faktura', + 'date' => 'Data faktury', + 'order-id' => 'Identyfikator zamówienia', + 'customer-name' => 'Nazwa klienta', + 'status' => 'Status', + 'amount' => 'Kwota', + 'action' => 'Akcja', + 'add-title' => 'Utwórz fakturę', + 'save-btn-title' => 'Zapisz fakturę', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Ilość', + 'qty-ordered' => 'Zamówiona ilość', + 'qty-to-invoice' => 'ilość do faktury', + 'view-title' => 'Faktura nr #:invoice_id', + 'bill-to' => 'Rachunek do', + 'ship-to' => 'Wysłano do', + 'print' => 'Drukuj', + 'order-date' => 'Data zamówienia', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'Tworzenie faktury za zamówienie jest niedozwolone.', + 'product-error' => 'Faktury nie można utworzyć bez produktów.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index cd4cbfb85..dc937db3e 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -399,32 +399,35 @@ return [ ], 'invoices' => [ - 'title' => 'Faturas', - 'id' => 'Id', - 'invoice-id' => 'Fatura Id', - 'invoice' => 'Fatura', - 'date' => 'Data da Fatura', - 'order-id' => 'Pedido Id', - 'customer-name' => 'Nome do Cliente', - 'status' => 'Status', - 'amount' => 'Valor', - 'action' => 'Ação', - 'add-title' => 'Criar Fatura', - 'save-btn-title' => 'Salvar Fatura', - 'qty' => 'Qtd', - 'qty-ordered' => 'Qtd Pedido', - 'qty-to-invoice' => 'Qtd Faturado', - 'view-title' => 'Fatura #:invoice_id', - 'bill-to' => 'Cobrar de', - 'ship-to' => 'Enviar para', - 'print' => 'Imprimir', - 'order-date' => 'Data do Pedido', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'A criação de fatura de pedido não é permitida.', - 'product-error' => 'A fatura não pode ser criada sem produtos.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pagamento pendente', - 'status-paid' => 'Pago', + 'title' => 'Faturas', + 'id' => 'Id', + 'invoice-id' => 'Fatura Id', + 'invoice' => 'Fatura', + 'date' => 'Data da Fatura', + 'order-id' => 'Pedido Id', + 'customer-name' => 'Nome do Cliente', + 'status' => 'Status', + 'amount' => 'Valor', + 'action' => 'Ação', + 'add-title' => 'Criar Fatura', + 'save-btn-title' => 'Salvar Fatura', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Qtd', + 'qty-ordered' => 'Qtd Pedido', + 'qty-to-invoice' => 'Qtd Faturado', + 'view-title' => 'Fatura #:invoice_id', + 'bill-to' => 'Cobrar de', + 'ship-to' => 'Enviar para', + 'print' => 'Imprimir', + 'order-date' => 'Data do Pedido', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'A criação de fatura de pedido não é permitida.', + 'product-error' => 'A fatura não pode ser criada sem produtos.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pagamento pendente', + 'status-paid' => 'Pago', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index 758a9d3e3..2ade34860 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -398,32 +398,35 @@ return [ ], 'invoices' => [ - 'title' => 'Faturalar', - 'id' => 'ID', - 'invoice-id' => 'Fatura No', - 'invoice' => 'Fatura', - 'date' => 'Fatura Tarihi', - 'order-id' => 'Sipariş No', - 'customer-name' => 'Müşteri Adı', - 'status' => 'Durum', - 'amount' => 'Miktar', - 'action' => 'Eylem', - 'add-title' => 'Fatura Oluştur', - 'save-btn-title' => 'Fatura Kaydet', - 'qty' => 'Miktar', - 'qty-ordered' => 'Sipariş Miktarı', - 'qty-to-invoice' => 'Fatura Edilen Miktar', - 'view-title' => 'Fatura #:invoice_id', - 'bill-to' => 'Fatura Edilen', - 'ship-to' => 'Teslim Edilen', - 'print' => 'Yazdır', - 'order-date' => 'Sipariş Tarihi', - 'invalid-qty' => 'We found an invalid quantity to invoice items.', - 'creation-error' => 'Fatura oluşturulmasına izin verilmedi.', - 'product-error' => 'Fatura oluşturulması için ürün ekleyiniz.', - 'status-overdue' => 'Overdue', - 'status-pending' => 'Pending Payment', - 'status-paid' => 'Paid', + 'title' => 'Faturalar', + 'id' => 'ID', + 'invoice-id' => 'Fatura No', + 'invoice' => 'Fatura', + 'date' => 'Fatura Tarihi', + 'order-id' => 'Sipariş No', + 'customer-name' => 'Müşteri Adı', + 'status' => 'Durum', + 'amount' => 'Miktar', + 'action' => 'Eylem', + 'add-title' => 'Fatura Oluştur', + 'save-btn-title' => 'Fatura Kaydet', + 'send-duplicate-invoice' => 'Send Duplicate Invoice', + 'send' => 'Send', + 'invoice-sent' => 'Invoice sent successfully!', + 'qty' => 'Miktar', + 'qty-ordered' => 'Sipariş Miktarı', + 'qty-to-invoice' => 'Fatura Edilen Miktar', + 'view-title' => 'Fatura #:invoice_id', + 'bill-to' => 'Fatura Edilen', + 'ship-to' => 'Teslim Edilen', + 'print' => 'Yazdır', + 'order-date' => 'Sipariş Tarihi', + 'invalid-qty' => 'We found an invalid quantity to invoice items.', + 'creation-error' => 'Fatura oluşturulmasına izin verilmedi.', + 'product-error' => 'Fatura oluşturulması için ürün ekleyiniz.', + 'status-overdue' => 'Overdue', + 'status-pending' => 'Pending Payment', + 'status-paid' => 'Paid', ], 'shipments' => [ diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php index cfc54f8ef..bfbae6196 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php @@ -5,8 +5,9 @@ @stop @section('content-wrapper') - - order; ?> + @php + $order = $invoice->order; + @endphp
- - - - @if ($order->billing_address || $order->shipping_address) - -
-
- @if ($order->billing_address) -
-
- {{ __('admin::app.sales.orders.billing-address') }} -
- -
- @include ('admin::sales.address', ['address' => $order->billing_address]) - - {!! view_render_event('sales.invoice.billing_address.after', ['order' => $order]) !!} -
-
- @endif - - @if ($order->shipping_address) -
-
- {{ __('admin::app.sales.orders.shipping-address') }} -
- -
- @include ('admin::sales.address', ['address' => $order->shipping_address]) - - {!! view_render_event('sales.invoice.shipping_address.after', ['order' => $order]) !!} -
-
- @endif
- @endif + + @if ($order->billing_address || $order->shipping_address) + +
+
+ @if ($order->billing_address) +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ @include ('admin::sales.address', ['address' => $order->billing_address]) + + {!! view_render_event('sales.invoice.billing_address.after', ['order' => $order]) !!} +
+
+ @endif + + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ @include ('admin::sales.address', ['address' => $order->shipping_address]) + + {!! view_render_event('sales.invoice.shipping_address.after', ['order' => $order]) !!} +
+
+ @endif +
+
+
+ @endif
-
@@ -191,7 +196,6 @@ - @foreach ($invoice->items as $item) @@ -225,10 +229,9 @@ @endforeach -
{{ $item->getTypeInstance()->getOrderedItem($item)->sku }}{{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }}
-
+
@@ -264,13 +267,12 @@
{{ core()->formatBasePrice($invoice->base_grand_total) }}
-
- +
@inject('InvoicesTransactionsDatagrid', 'Webkul\Admin\DataGrids\InvoicesTransactionsDatagrid') {!! $InvoicesTransactionsDatagrid->render() !!} @@ -278,6 +280,41 @@
- -@stop \ No newline at end of file + + +

{{ __('admin::app.sales.invoices.send-duplicate-invoice') }}

+ +
+
+ @csrf() + +
+ + + + + + +
+ + +
+
+
+@stop diff --git a/packages/Webkul/Admin/src/Routes/sales-routes.php b/packages/Webkul/Admin/src/Routes/sales-routes.php index 997ea69b7..2e17b868c 100644 --- a/packages/Webkul/Admin/src/Routes/sales-routes.php +++ b/packages/Webkul/Admin/src/Routes/sales-routes.php @@ -48,6 +48,9 @@ Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => conf 'view' => 'admin::sales.invoices.view', ])->name('admin.sales.invoices.view'); + Route::post('/invoices/send-duplicate/{id}', [InvoiceController::class, 'sendDuplicateInvoice']) + ->name('admin.sales.invoices.send-duplicate-invoice'); + Route::get('/invoices/print/{id}', [InvoiceController::class, 'printInvoice'])->defaults('_config', [ 'view' => 'admin::sales.invoices.print', ])->name('admin.sales.invoices.print'); diff --git a/packages/Webkul/Admin/src/Traits/Mails.php b/packages/Webkul/Admin/src/Traits/Mails.php index 10b56a8a6..061136463 100644 --- a/packages/Webkul/Admin/src/Traits/Mails.php +++ b/packages/Webkul/Admin/src/Traits/Mails.php @@ -3,15 +3,16 @@ namespace Webkul\Admin\Traits; use Illuminate\Support\Facades\Mail; +use Webkul\Admin\Mail\CancelOrderAdminNotification; +use Webkul\Admin\Mail\CancelOrderNotification; +use Webkul\Admin\Mail\DuplicateInvoiceNotification; use Webkul\Admin\Mail\NewAdminNotification; +use Webkul\Admin\Mail\NewInventorySourceNotification; +use Webkul\Admin\Mail\NewInvoiceNotification; use Webkul\Admin\Mail\NewOrderNotification; use Webkul\Admin\Mail\NewRefundNotification; -use Webkul\Admin\Mail\NewInvoiceNotification; -use Webkul\Admin\Mail\CancelOrderNotification; use Webkul\Admin\Mail\NewShipmentNotification; use Webkul\Admin\Mail\OrderCommentNotification; -use Webkul\Admin\Mail\CancelOrderAdminNotification; -use Webkul\Admin\Mail\NewInventorySourceNotification; trait Mails { @@ -26,14 +27,20 @@ trait Mails $customerLocale = $this->getLocale($order); try { - /* email to customer */ + /** + * Email to customer. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-order'; + if (core()->getConfigData($configKey)) { $this->prepareMail($customerLocale, new NewOrderNotification($order)); } - /* email to admin */ + /** + * Email to admin. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-admin'; + if (core()->getConfigData($configKey)) { $this->prepareMail(config('app.locale'), new NewAdminNotification($order)); } @@ -57,8 +64,11 @@ trait Mails return; } - /* email to customer */ + /** + * Email to customer. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-invoice'; + if (core()->getConfigData($configKey)) { $this->prepareMail($customerLocale, new NewInvoiceNotification($invoice)); } @@ -67,6 +77,31 @@ trait Mails } } + /** + * Send duplicate invoice mail to the customer. + * + * @param \Webkul\Sales\Contracts\Invoice $invoice + * @param string $customerEmail + * @return void + */ + public function sendDuplicateInvoiceMail($invoice, $customerEmail) + { + $customerLocale = $this->getLocale($invoice); + + try { + /** + * Email to customer. + */ + $configKey = 'emails.general.notifications.emails.general.notifications.new-invoice'; + + if (core()->getConfigData($configKey)) { + $this->prepareMail($customerLocale, new DuplicateInvoiceNotification($invoice, $customerEmail)); + } + } catch (\Exception $e) { + report($e); + } + } + /** * Send new refund mail to the customer. * @@ -78,8 +113,11 @@ trait Mails $customerLocale = $this->getLocale($refund); try { - /* email to customer */ + /** + * Email to customer. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-refund'; + if (core()->getConfigData($configKey)) { $this->prepareMail($customerLocale, new NewRefundNotification($refund)); } @@ -103,14 +141,20 @@ trait Mails return; } - /* email to customer */ + /** + * Email to customer. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-shipment'; + if (core()->getConfigData($configKey)) { $this->prepareMail($customerLocale, new NewShipmentNotification($shipment)); } - /* email to admin */ + /** + * Email to admin. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-inventory-source'; + if (core()->getConfigData($configKey)) { $this->prepareMail(config('app.locale'), new NewInventorySourceNotification($shipment)); } @@ -130,14 +174,20 @@ trait Mails $customerLocale = $this->getLocale($order); try { - /* email to customer */ + /** + * Email to customer. + */ $configKey = 'emails.general.notifications.emails.general.notifications.cancel-order'; + if (core()->getConfigData($configKey)) { $this->prepareMail($customerLocale, new CancelOrderNotification($order)); } - /* email to admin */ + /** + * Email to admin. + */ $configKey = 'emails.general.notifications.emails.general.notifications.new-admin'; + if (core()->getConfigData($configKey)) { $this->prepareMail(config('app.locale'), new CancelOrderAdminNotification($order)); } @@ -161,7 +211,9 @@ trait Mails } try { - /* email to customer */ + /** + * Email to customer. + */ $this->prepareMail($customerLocale, new OrderCommentNotification($comment)); } catch (\Exception $e) { report($e); @@ -181,6 +233,7 @@ trait Mails } $objectFirstItem = $object->items->first(); + return isset($objectFirstItem->additional['locale']) ? $objectFirstItem->additional['locale'] : 'en'; } @@ -192,6 +245,7 @@ trait Mails private function prepareMail($locale, $notification) { app()->setLocale($locale); + Mail::queue($notification); } -} \ No newline at end of file +}