diff --git a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php index 11b545ef7..0570987c3 100755 --- a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php @@ -45,6 +45,19 @@ class OrderInvoicesDataGrid extends DataGrid 'filterable' => true, ]); + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.invoice-date'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'closure' => true, + 'wrapper' => function ($value) { + return \Carbon\Carbon::parse($value->created_at)->format('d-m-Y'); + } + ]); + $this->addColumn([ 'index' => 'base_grand_total', 'label' => trans('admin::app.datagrid.grand-total'), @@ -55,12 +68,22 @@ class OrderInvoicesDataGrid extends DataGrid ]); $this->addColumn([ - 'index' => 'created_at', - 'label' => trans('admin::app.datagrid.invoice-date'), - 'type' => 'datetime', + 'index' => 'state', + 'label' => trans('admin::app.datagrid.state'), + 'type' => 'string', + 'closure' => true, 'searchable' => true, 'sortable' => true, 'filterable' => true, + 'wrapper' => function ($value) { + if ($value->state == 'paid') { + return ''. trans('admin::app.sales.orders.invoice-status-paid') .''; + } elseif ($value->state == "pending") { + return ''. trans('admin::app.sales.orders.invoice-status-pending') .''; + } elseif ($value->state == "overdue") { + return ''. trans('admin::app.sales.orders.invoice-status-overdue') . ''; + } + } ]); } diff --git a/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php index 18ec38400..4c4de66c7 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php @@ -64,12 +64,12 @@ class CustomerController extends Controller CustomerGroupRepository $customerGroupRepository, ChannelRepository $channelRepository ) - + { $this->_config = request('_config'); $this->middleware('admin'); $this->customerRepository = $customerRepository; - + $this->customerAddressRepository = $customerAddressRepository; $this->customerGroupRepository = $customerGroupRepository; $this->channelRepository = $channelRepository; @@ -200,12 +200,19 @@ class CustomerController extends Controller $customer = $this->customerRepository->findorFail($id); try { - $this->customerRepository->delete($id); + + if (! $this->customerRepository->checkIfCustomerHasOrderPendingOrProcessing($customer)) { + + $this->customerRepository->delete($id); + } else { + + return response()->json(['message' => false], 400); + } session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Customer'])); - return response()->json(['message' => true], 200); } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Customer'])); } @@ -279,12 +286,18 @@ class CustomerController extends Controller { $customerIds = explode(',', request()->input('indexes')); - foreach ($customerIds as $customerId) { - $this->customerRepository->deleteWhere(['id' => $customerId]); + if (!$this->customerRepository->checkBulkCustomerIfTheyHaveOrderPendingOrProcessing($customerIds)) { + + foreach ($customerIds as $customerId) { + $this->customerRepository->deleteWhere(['id' => $customerId]); + } + + session()->flash('success', trans('admin::app.customers.customers.mass-destroy-success')); + + return redirect()->back(); } - session()->flash('success', trans('admin::app.customers.customers.mass-destroy-success')); - + session()->flash('error', trans('admin::app.response.order-pending', ['name' => 'Customers'])); return redirect()->back(); } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php index 3931fc268..2d346bf2a 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php @@ -2,9 +2,12 @@ namespace Webkul\Admin\Http\Controllers\Sales; +use Illuminate\Http\Request; + use Webkul\Admin\Http\Controllers\Controller; use Webkul\Sales\Repositories\OrderRepository; use Webkul\Sales\Repositories\InvoiceRepository; + use PDF; class InvoiceController extends Controller @@ -97,7 +100,7 @@ class InvoiceController extends Controller $data = request()->all(); $haveProductToInvoice = false; - + foreach ($data['invoice']['items'] as $itemId => $qty) { if ($qty) { $haveProductToInvoice = true; @@ -145,4 +148,29 @@ class InvoiceController extends Controller return $pdf->download('invoice-' . $invoice->created_at->format('d-m-Y') . '.pdf'); } + + /** + * Update the invoice state. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function updateState($id, Request $request) + { + $invoice = $this->invoiceRepository->findOrFail($id); + $task = $this->invoiceRepository->updateInvoiceState($invoice, $request->state); + + if($request->state == 'paid'){ + $order = $this->orderRepository->findOrFail($invoice->order->id); + $this->orderRepository->updateOrderStatus($order); + } + + if ($task){ + session()->flash('success', trans('admin::app.sales.orders.invoice-status-confirmed')); + } else { + session()->flash('success', trans('admin::app.sales.orders.invoice-status-error')); + } + + return back(); + } } diff --git a/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php b/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php index 4611ad6b5..3eb339d75 100644 --- a/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php +++ b/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php @@ -29,9 +29,17 @@ class ConfigurationForm extends FormRequest if (request()->has('general.design.admin_logo.logo_image') && ! request()->input('general.design.admin_logo.logo_image.delete') ) { - $this->rules = [ - 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg', - ]; + $this->rules = array_merge($this->rules, [ + 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg|max:5000', + ]); + } + + if (request()->has('general.design.admin_logo.favicon') + && ! request()->input('general.design.admin_logo.favicon.delete') + ) { + $this->rules = array_merge($this->rules, [ + 'general.design.admin_logo.favicon' => 'required|mimes:jpeg,bmp,png,jpg|max:5000', + ]); } return $this->rules; @@ -48,4 +56,15 @@ class ConfigurationForm extends FormRequest 'general.design.admin_logo.logo_image.mimes' => 'Invalid file format. Use only jpeg, bmp, png, jpg.', ]; } -} + + /** + * Set the attribute name. + */ + public function attributes() + { + return [ + 'general.design.admin_logo.logo_image' => 'Logo Image', + 'general.design.admin_logo.favicon' => 'Favicon Image' + ]; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index b0db82981..2182968a9 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -211,6 +211,10 @@ Route::group(['middleware' => ['web']], function () { 'view' => 'admin::sales.invoices.print', ])->name('admin.sales.invoices.print'); + Route::post('/invoices/update/state/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@updateState')->defaults('_config', [ + 'redirect' => 'admin.sales.orders.view', + ])->name('admin.sales.invoices.update.state'); + // Sales Shipments Routes Route::get('/shipments', 'Webkul\Admin\Http\Controllers\Sales\ShipmentController@index')->defaults('_config', [ diff --git a/packages/Webkul/Admin/src/Listeners/Order.php b/packages/Webkul/Admin/src/Listeners/Order.php index f2e1c06c5..7bebf23b9 100755 --- a/packages/Webkul/Admin/src/Listeners/Order.php +++ b/packages/Webkul/Admin/src/Listeners/Order.php @@ -3,14 +3,15 @@ namespace Webkul\Admin\Listeners; use Illuminate\Support\Facades\Mail; -use Webkul\Admin\Mail\NewOrderNotification; use Webkul\Admin\Mail\NewAdminNotification; -use Webkul\Admin\Mail\NewInvoiceNotification; -use Webkul\Admin\Mail\NewShipmentNotification; -use Webkul\Admin\Mail\NewInventorySourceNotification; -use Webkul\Admin\Mail\CancelOrderNotification; +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; class Order { @@ -117,10 +118,18 @@ class Order public function sendCancelOrderMail($order) { try { + /* email to customer */ $configKey = 'emails.general.notifications.emails.general.notifications.cancel-order'; if (core()->getConfigData($configKey)) { Mail::queue(new CancelOrderNotification($order)); } + + /* email to admin */ + $configKey = 'emails.general.notifications.emails.general.notifications.new-admin'; + if (core()->getConfigData($configKey)) { + app()->setLocale(env('APP_LOCALE')); + Mail::queue(new CancelOrderAdminNotification($order)); + } } catch (\Exception $e) { report($e); } diff --git a/packages/Webkul/Admin/src/Listeners/PasswordChange.php b/packages/Webkul/Admin/src/Listeners/PasswordChange.php new file mode 100644 index 000000000..88fedf523 --- /dev/null +++ b/packages/Webkul/Admin/src/Listeners/PasswordChange.php @@ -0,0 +1,31 @@ +order = $order; + } + + public function build() + { + return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name']) + ->to(core()->getAdminEmailDetails()['email']) + ->subject(trans('shop::app.mail.order.cancel.subject')) + ->view('shop::emails.sales.order-cancel-admin'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Mail/OrderCommentNotification.php b/packages/Webkul/Admin/src/Mail/OrderCommentNotification.php index c76361e7c..09ffdaa16 100644 --- a/packages/Webkul/Admin/src/Mail/OrderCommentNotification.php +++ b/packages/Webkul/Admin/src/Mail/OrderCommentNotification.php @@ -38,7 +38,7 @@ class OrderCommentNotification extends Mailable { return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name']) ->to($this->comment->order->customer_email, $this->comment->order->customer_full_name) - ->subject(trans('shop::app.mail.order.comment.subject')) + ->subject(trans('shop::app.mail.order.comment.subject', ['order_id' => $this->comment->order->increment_id])) ->view('shop::emails.sales.new-order-comment'); } } diff --git a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php index cb38d77c1..f40932b14 100755 --- a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php @@ -14,6 +14,8 @@ class EventServiceProvider extends ServiceProvider */ public function boot() { + Event::listen('user.admin.update-password', 'Webkul\Admin\Listeners\PasswordChange@sendUpdatePasswordMail'); + Event::listen('checkout.order.save.after', 'Webkul\Admin\Listeners\Order@sendNewOrderMail'); Event::listen('sales.invoice.save.after', 'Webkul\Admin\Listeners\Order@sendNewInvoiceMail'); diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index 2730b3770..923a3793c 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -138,7 +138,7 @@ return [ ], 'datagrid' => [ - 'mass-ops' => + 'mass-ops' => [ 'method-error' => 'Fehler! Falsche Methode erkannt, überprüfen Sie die Konfiguration der Massenaktion', 'delete-success' => 'Ausgewählte :resource wurden erfolgreich gelöscht', @@ -146,86 +146,86 @@ return [ 'update-success' => 'Ausgewählt :resource wurden erfolgreich aktualisiert', 'no-resource' => 'Die bereitgestellte Ressource reicht für die Aktion nicht aus', ], - 'id' => 'Id', - 'status' => 'Status', - 'code' => 'Code', - 'admin-name' => 'Name', - 'name' => 'Name', - 'direction' => 'Richtung', - 'fullname' => 'Vollständiger Name', - 'type' => 'Typ', - 'copy' => 'Kopieren', - 'required' => 'Erforderlich', - 'unique' => 'Einzigartig', - 'per-locale' => 'Sprach-basierend', - 'per-channel' => 'Channel-basierend', - 'position' => 'Position', - 'locale' => 'Sprache', - 'hostname' => 'Hostname', - 'email' => 'E-Mail', - 'group' => 'Gruppe', - 'phone' => 'Telefon', - 'gender' => 'Geschlecht', - 'title' => 'Titel', - 'layout' => 'Layout', - 'url-key' => 'URL-Schlüssel', - 'comment' => 'Kommentar', - 'product-name' => 'Produkt', - 'currency-name' => 'Währungsname', - 'exch-rate' => 'Tauschrate', - 'priority' => 'Priorität', - 'subscribed' => 'Abonniert', - 'base-total' => 'Basis Gesamt', - 'grand-total' => 'Gesamtsumme', - 'order-date' => 'Bestelldatum', - 'channel-name' => 'Kanal Name', - 'billed-to' => 'Rechnung an', - 'shipped-to' => 'Versendet an', - 'order-id' => 'Auftragsnummer', - 'invoice-date' => 'Rechnungsdatum', - 'total-qty' => 'Gesamtmenge', + 'id' => 'Id', + 'status' => 'Status', + 'code' => 'Code', + 'admin-name' => 'Name', + 'name' => 'Name', + 'direction' => 'Richtung', + 'fullname' => 'Vollständiger Name', + 'type' => 'Typ', + 'copy' => 'Kopieren', + 'required' => 'Erforderlich', + 'unique' => 'Einzigartig', + 'per-locale' => 'Sprach-basierend', + 'per-channel' => 'Channel-basierend', + 'position' => 'Position', + 'locale' => 'Sprache', + 'hostname' => 'Hostname', + 'email' => 'E-Mail', + 'group' => 'Gruppe', + 'phone' => 'Telefon', + 'gender' => 'Geschlecht', + 'title' => 'Titel', + 'layout' => 'Layout', + 'url-key' => 'URL-Schlüssel', + 'comment' => 'Kommentar', + 'product-name' => 'Produkt', + 'currency-name' => 'Währungsname', + 'exch-rate' => 'Tauschrate', + 'priority' => 'Priorität', + 'subscribed' => 'Abonniert', + 'base-total' => 'Basis Gesamt', + 'grand-total' => 'Gesamtsumme', + 'order-date' => 'Bestelldatum', + 'channel-name' => 'Kanal Name', + 'billed-to' => 'Rechnung an', + 'shipped-to' => 'Versendet an', + 'order-id' => 'Auftragsnummer', + 'invoice-date' => 'Rechnungsdatum', + 'total-qty' => 'Gesamtmenge', 'inventory-source' => 'Inventar Quelle', - 'shipment-date' => 'Versand Datum', - 'shipment-to' => 'Versand', - 'sku' => 'SKU', - 'price' => 'Preis', - 'qty' => 'Menge', - 'permission-type' => 'Berechtigungsart', - 'identifier' => 'Bezeichner', - 'state' => 'Bundesland', - 'country' => 'Land', - 'tax-rate' => 'Rate', - 'role' => 'Rolle', - 'sub-total' => 'Zwischensumme', - 'no-of-products' => 'Anzahl der Produkte', + 'shipment-date' => 'Versand Datum', + 'shipment-to' => 'Versand', + 'sku' => 'SKU', + 'price' => 'Preis', + 'qty' => 'Menge', + 'permission-type' => 'Berechtigungsart', + 'identifier' => 'Bezeichner', + 'state' => 'Bundesland', + 'country' => 'Land', + 'tax-rate' => 'Rate', + 'role' => 'Rolle', + 'sub-total' => 'Zwischensumme', + 'no-of-products' => 'Anzahl der Produkte', 'attribute-family' => 'Attributgruppe', - 'starts-from' => 'Beginnt von', - 'ends-till' => 'Endet bis', - 'per-cust' => 'Pro Kunde', - 'usage-throttle' => 'Einsatzzeiten', - 'for-guest' => 'Für Gäste', - 'order_number' => 'Auftragsnummer', - 'refund-date' => 'Rückerstattung Datum', - 'refunded' => 'Erstattet', - 'start' => 'Starten', - 'end' => 'Ende', - 'active' => 'Aktiv', - 'inactive' => 'Inaktiv', - 'true' => 'Wahr', - 'false' => 'Falsch', - 'approved' => 'Genehmigt', - 'pending' => 'Ausstehend', - 'disapproved' => 'Abgelehnt', - 'coupon-code' => 'Gutschein-Code', - 'times-used' => 'Mal Verwendet', - 'created-date' => 'Erstellt-Datum', - 'expiration-date' => 'Ablaufdatum', - 'edit' => 'Bearbeiten', - 'delete' => 'Löschen', - 'view' => 'Anzeigen', - 'rtl' => 'RTL', - 'ltr' => 'LTR', - 'update-status' => 'Update-Status', + 'starts-from' => 'Beginnt von', + 'ends-till' => 'Endet bis', + 'per-cust' => 'Pro Kunde', + 'usage-throttle' => 'Einsatzzeiten', + 'for-guest' => 'Für Gäste', + 'order_number' => 'Auftragsnummer', + 'refund-date' => 'Rückerstattung Datum', + 'refunded' => 'Erstattet', + 'start' => 'Starten', + 'end' => 'Ende', + 'active' => 'Aktiv', + 'inactive' => 'Inaktiv', + 'true' => 'Wahr', + 'false' => 'Falsch', + 'approved' => 'Genehmigt', + 'pending' => 'Ausstehend', + 'disapproved' => 'Abgelehnt', + 'coupon-code' => 'Gutschein-Code', + 'times-used' => 'Mal Verwendet', + 'created-date' => 'Erstellt-Datum', + 'expiration-date' => 'Ablaufdatum', + 'edit' => 'Bearbeiten', + 'delete' => 'Löschen', + 'view' => 'Anzeigen', + 'rtl' => 'RTL', + 'ltr' => 'LTR', + 'update-status' => 'Update-Status', ], 'account' => [ @@ -310,269 +310,275 @@ return [ 'submit-btn-title' => 'Anmelden', ], ], - 'sales' => - [ - 'orders' => - [ - 'title' => 'Bestellungen', - 'view-title' => 'Bestellung #:order_id', - 'cancel-btn-title' => 'Abbrechen', - 'shipment-btn-title' => 'Sendung', - 'invoice-btn-title' => 'Rechnung', - 'info' => 'Informationen', - 'invoices' => 'Rechnungen', - 'shipments' => 'Sendungen', - 'order-and-account' => 'Bestellung und Rechnung', - 'order-info' => 'Bestellinformationen', - 'order-date' => 'Bestelldatum', - 'order-status' => 'Bestellstatus', - 'order-status-canceled' => 'Abgebrochen', - 'order-status-closed' => 'Geschlossen', - 'order-status-fraud' => 'Betrug', - 'order-status-pending' => 'Ausstehend', - 'order-status-pending-payment' => 'Ausstehende Zahlung', - 'order-status-processing' => 'Verarbeitung', - 'order-status-success' => 'Abgeschlossen', - 'channel' => 'Kanal', - 'customer-name' => 'Name des Kunden', - 'email' => 'E-Mail', - 'contact-number' => 'Kontakt-Nummer', - 'account-info' => 'Account-Informationen', - 'address' => 'Adresse', - 'shipping-address' => 'Versandadresse', - 'billing-address' => 'Rechnungsadresse', - 'payment-and-shipping' => 'Zahlung und Versand', - 'payment-info' => 'Zahlungsinformationen', - 'payment-method' => 'Zahlungsmethode', - 'currency' => 'Währung', - 'shipping-info' => 'Versand-Informationen', - 'shipping-method' => 'Versandart', - 'shipping-price' => 'Versandkosten', - 'products-ordered' => 'Bestellte Produkte', - 'SKU' => 'SKU', - 'product-name' => 'Produktname', - 'qty' => 'Menge', - 'item-status' => 'Produktstatus', - 'item-ordered' => 'Bestellt (:qty_ordered)', - 'item-invoice' => 'In Rechnung gestellt (:qty_invoiced)', - 'item-shipped' => 'Versand (:qty_shipped)', - 'item-canceled' => 'Abgebrochen (:qty_canceled)', - 'item-refunded' => 'Erstattet (:qty_refunded)', - 'price' => 'Preis', - 'total' => 'Insgesamt', - 'subtotal' => 'Zwischensumme', - 'shipping-handling' => 'Versand & Verpackungskosten', - 'discount' => 'Rabatt', - 'tax' => 'Umsatzsteuer', - 'tax-percent' => 'Umsatzsteuer Prozent', - 'tax-amount' => 'Umsatzsteuer Betrag', - 'discount-amount' => 'Rabatt Betrag', - 'grand-total' => 'Gesamtsumme', - 'total-paid' => 'Insgesamt Bezahlt', - 'total-refunded' => 'Insgesamt Erstattet', - 'total-due' => 'Insgesamt fällig', - 'cancel-confirm-msg' => 'Sind Sie sicher, dass Sie diese Bestellung stornieren möchten?', - 'refund-btn-title' => 'Rückerstattung', - 'refunds' => 'Erstattungen', - ], - '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', - 'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.', - 'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.', - ], - 'shipments' => - [ - 'title' => 'Sendungen', - 'id' => 'Id', - 'date' => 'Versanddatum', - 'order-id' => 'Auftragsnummer', - 'order-date' => 'Bestelldatum', - 'customer-name' => 'Name des Kunden', - 'total-qty' => 'Menge insgesamt', - 'action' => 'Aktion', - 'add-title' => 'Sendung anlegen', - 'save-btn-title' => 'Versandkosten sparen', - 'qty-ordered' => 'Bestellte Menge', - 'qty-to-ship' => 'Menge zu versenden', - 'available-sources' => 'Verfügbaren Quellen', - 'source' => 'Quelle', - 'select-source' => 'Bitte wählen sie die Quelle', - 'qty-available' => 'Menge verfügbar', - 'inventory-source' => 'Inventarquelle', - 'carrier-title' => 'Zulieferer', - 'tracking-number' => 'Tracking-Nummer', - 'view-title' => 'Versand #:shipment_id', - 'creation-error' => 'Für diese Bestellung kann kein Versand erstellt werden.', - 'order-error' => 'Die Erstellung von Auftragssendungen ist nicht zulässig.', - 'quantity-invalid' => 'Die angeforderte Menge ist ungültig oder nicht verfügbar.', - ], - 'refunds' => - [ - 'title' => 'Erstattungen', - 'id' => 'Id', - 'add-title' => 'Erstattung erstellen', - 'save-btn-title' => 'Rückerstattung', - 'order-id' => 'Auftragsnummer', - 'qty-ordered' => 'Bestellte Menge', - 'qty-to-refund' => 'Menge zu erstatten', - 'refund-shipping' => 'Erstattung Versand', - 'adjustment-refund' => 'Rückerstattung anpassen', - 'adjustment-fee' => 'Gebühr anpassen', - 'update-qty' => 'Mengen anpassen', - 'invalid-qty' => 'Wir haben eine ungültige Menge gefunden, um Artikel zu erstatten.', - 'refund-limit-error' => 'Das meiste Geld, das zur Rückerstattung zur Verfügung steht, ist :Höhe.', - 'refunded' => 'Erstattet', - 'date' => 'Rückerstattungsdatum', - 'customer-name' => 'Name des Kunden', - 'status' => 'Status', - 'action' => 'Aktion', - 'view-title' => 'Rückerstattung #:refund_id', - 'invalid-refund-amount-error' => 'Der Rückerstattungsbetrag sollte nicht Null sein.', - ], + 'sales' => [ + 'orders' => [ + 'title' => 'Bestellungen', + 'view-title' => 'Bestellung #:order_id', + 'cancel-btn-title' => 'Abbrechen', + 'shipment-btn-title' => 'Sendung', + 'invoice-btn-title' => 'Rechnung', + 'info' => 'Informationen', + 'invoices' => 'Rechnungen', + 'invoices-change-title' => 'Rechnungsstatus ändern', + 'invoices-change-state-desc' => 'Bitte wählen Sie den neuen Rechnungsstatus', + 'invoice-status-paid' => 'Bezahlt', + 'invoice-status-pending' => 'Offen', + 'invoice-status-overdue' => 'Überfällig', + 'invoice-status-update' => 'Änderungen speichern', + 'invoice-status-confirmed' => 'Der Bestellstatus wurde verändert.', + 'invoice-status-error' => 'Fehler beim Ändern des Bestellstatus.', + 'shipments' => 'Sendungen', + 'order-and-account' => 'Bestellung und Rechnung', + 'order-info' => 'Bestellinformationen', + 'order-date' => 'Bestelldatum', + 'order-status' => 'Bestellstatus', + 'order-status-canceled' => 'Abgebrochen', + 'order-status-closed' => 'Geschlossen', + 'order-status-fraud' => 'Betrug', + 'order-status-pending' => 'Ausstehend', + 'order-status-pending-payment' => 'Ausstehende Zahlung', + 'order-status-processing' => 'Verarbeitung', + 'order-status-success' => 'Abgeschlossen', + 'channel' => 'Kanal', + 'customer-name' => 'Name des Kunden', + 'email' => 'E-Mail', + 'contact-number' => 'Kontakt-Nummer', + 'account-info' => 'Account-Informationen', + 'address' => 'Adresse', + 'shipping-address' => 'Versandadresse', + 'billing-address' => 'Rechnungsadresse', + 'payment-and-shipping' => 'Zahlung und Versand', + 'payment-info' => 'Zahlungsinformationen', + 'payment-method' => 'Zahlungsmethode', + 'currency' => 'Währung', + 'shipping-info' => 'Versand-Informationen', + 'shipping-method' => 'Versandart', + 'shipping-price' => 'Versandkosten', + 'products-ordered' => 'Bestellte Produkte', + 'SKU' => 'SKU', + 'product-name' => 'Produktname', + 'qty' => 'Menge', + 'item-status' => 'Produktstatus', + 'item-ordered' => 'Bestellt (:qty_ordered)', + 'item-invoice' => 'In Rechnung gestellt (:qty_invoiced)', + 'item-shipped' => 'Versand (:qty_shipped)', + 'item-canceled' => 'Abgebrochen (:qty_canceled)', + 'item-refunded' => 'Erstattet (:qty_refunded)', + 'price' => 'Preis', + 'total' => 'Insgesamt', + 'subtotal' => 'Zwischensumme', + 'shipping-handling' => 'Versand & Verpackungskosten', + 'discount' => 'Rabatt', + 'tax' => 'Umsatzsteuer', + 'tax-percent' => 'Umsatzsteuer Prozent', + 'tax-amount' => 'Umsatzsteuer Betrag', + 'discount-amount' => 'Rabatt Betrag', + 'grand-total' => 'Gesamtsumme', + 'total-paid' => 'Insgesamt Bezahlt', + 'total-refunded' => 'Insgesamt Erstattet', + 'total-due' => 'Insgesamt fällig', + 'cancel-confirm-msg' => 'Sind Sie sicher, dass Sie diese Bestellung stornieren möchten?', + 'refund-btn-title' => 'Rückerstattung', + 'refunds' => 'Erstattungen', ], + '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', + 'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.', + 'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.', + ], + 'shipments' => + [ + 'title' => 'Sendungen', + 'id' => 'Id', + 'date' => 'Versanddatum', + 'order-id' => 'Auftragsnummer', + 'order-date' => 'Bestelldatum', + 'customer-name' => 'Name des Kunden', + 'total-qty' => 'Menge insgesamt', + 'action' => 'Aktion', + 'add-title' => 'Sendung anlegen', + 'save-btn-title' => 'Versandkosten sparen', + 'qty-ordered' => 'Bestellte Menge', + 'qty-to-ship' => 'Menge zu versenden', + 'available-sources' => 'Verfügbaren Quellen', + 'source' => 'Quelle', + 'select-source' => 'Bitte wählen sie die Quelle', + 'qty-available' => 'Menge verfügbar', + 'inventory-source' => 'Inventarquelle', + 'carrier-title' => 'Zulieferer', + 'tracking-number' => 'Tracking-Nummer', + 'view-title' => 'Versand #:shipment_id', + 'creation-error' => 'Für diese Bestellung kann kein Versand erstellt werden.', + 'order-error' => 'Die Erstellung von Auftragssendungen ist nicht zulässig.', + 'quantity-invalid' => 'Die angeforderte Menge ist ungültig oder nicht verfügbar.', + ], + 'refunds' => + [ + 'title' => 'Erstattungen', + 'id' => 'Id', + 'add-title' => 'Erstattung erstellen', + 'save-btn-title' => 'Rückerstattung', + 'order-id' => 'Auftragsnummer', + 'qty-ordered' => 'Bestellte Menge', + 'qty-to-refund' => 'Menge zu erstatten', + 'refund-shipping' => 'Erstattung Versand', + 'adjustment-refund' => 'Rückerstattung anpassen', + 'adjustment-fee' => 'Gebühr anpassen', + 'update-qty' => 'Mengen anpassen', + 'invalid-qty' => 'Wir haben eine ungültige Menge gefunden, um Artikel zu erstatten.', + 'refund-limit-error' => 'Das meiste Geld, das zur Rückerstattung zur Verfügung steht, ist :Höhe.', + 'refunded' => 'Erstattet', + 'date' => 'Rückerstattungsdatum', + 'customer-name' => 'Name des Kunden', + 'status' => 'Status', + 'action' => 'Aktion', + 'view-title' => 'Rückerstattung #:refund_id', + 'invalid-refund-amount-error' => 'Der Rückerstattungsbetrag sollte nicht Null sein.', + ], + ], 'catalog' => [ 'products' => [ - 'title' => 'Produkte', - 'add-product-btn-title' => 'Produkt hinzufügen', - 'add-title' => 'Produkt hinzufügen', - 'edit-title' => 'Produkt bearbeiten', - 'save-btn-title' => 'Produkt speichern', - 'general' => 'Allgemein', - 'product-type' => 'Produkttyp', - 'simple' => 'Einfach', - 'configurable' => 'Konfigurierbar', - 'familiy' => 'Attributgruppe', - 'sku' => 'SKU', - 'configurable-attributes' => 'Konfigurierbare Attribute', - 'attribute-header' => 'Attribut(s)', - 'attribute-option-header' => 'Attribut Option(s)', - 'no' => 'Nein', - 'yes' => 'Ja', - 'disabled' => 'Deaktiviert', - 'enabled' => 'Aktiviert', - 'add-variant-btn-title' => 'Variante hinzufügen', - 'name' => 'Name', - 'qty' => 'Menge', - 'price' => 'Preis', - 'weight' => 'Gewicht', - 'status' => 'Status', - 'add-variant-title' => 'Variante hinzufügen', + 'title' => 'Produkte', + 'add-product-btn-title' => 'Produkt hinzufügen', + 'add-title' => 'Produkt hinzufügen', + 'edit-title' => 'Produkt bearbeiten', + 'save-btn-title' => 'Produkt speichern', + 'general' => 'Allgemein', + 'product-type' => 'Produkttyp', + 'simple' => 'Einfach', + 'configurable' => 'Konfigurierbar', + 'familiy' => 'Attributgruppe', + 'sku' => 'SKU', + 'configurable-attributes' => 'Konfigurierbare Attribute', + 'attribute-header' => 'Attribut(s)', + 'attribute-option-header' => 'Attribut Option(s)', + 'no' => 'Nein', + 'yes' => 'Ja', + 'disabled' => 'Deaktiviert', + 'enabled' => 'Aktiviert', + 'add-variant-btn-title' => 'Variante hinzufügen', + 'name' => 'Name', + 'qty' => 'Menge', + 'price' => 'Preis', + 'weight' => 'Gewicht', + 'status' => 'Status', + 'add-variant-title' => 'Variante hinzufügen', 'variant-already-exist-message' => 'Eine Variante mit denselben Attributoptionen ist bereits vorhanden.', - 'add-image-btn-title' => 'Bild hinzufügen', - 'mass-delete-success' => 'Alle ausgewählten Produkte wurden erfolgreich gelöscht', - 'mass-update-success' => 'Alle ausgewählten Produkte wurden erfolgreich aktualisiert', - 'configurable-error' => 'Bitte wählen Sie mindestens eine konfigurierbares Attribut.', - 'categories' => 'Kategorien', - 'images' => 'Bilder', - 'inventories' => 'Vorräte', - 'variations' => 'Variationen', - 'downloadable' => 'Herunterladbare Informationen', - 'links' => 'Links', - 'add-link-btn-title' => 'Link hinzufügen', - 'samples' => 'Beispiele', - 'add-sample-btn-title' => 'Beispiel hinzufügen', - 'downloads' => 'Download erlaubt', - 'file' => 'Datei', - 'sample' => 'Beispiel', - 'upload-file' => 'Datei hochladen', - 'url' => 'Url', - 'sort-order' => 'Sortierreihenfolge', - 'browse-file' => 'Datei durchsuchen', - 'product-link' => 'Verlinkte Produkte', - 'cross-selling' => 'Cross-Selling', - 'up-selling' => 'Up Selling', - 'related-products' => 'Verwandte Produkte', - 'product-search-hint' => 'Geben Sie den Produktnamen ein', - 'no-result-found' => 'Produkte nicht mit demselben Namen gefunden.', - 'searching' => 'Suche ...', - 'grouped-products' => 'Gruppierte Produkte', - 'search-products' => 'Produkte suchen', - 'channel' => 'Kanäle', - 'bundle-items' => 'Artikel bündeln', - 'add-option-btn-title' => 'Option hinzufügen', - 'option-title' => 'Option Titel', - 'input-type' => 'Input Type', - 'is-required' => 'Ist erforderlich', - 'select' => 'Select', - 'radio' => 'Radio', - 'checkbox' => 'Checkbox', - 'multiselect' => 'Multiselect', - 'new-option' => 'Neue Option', - 'is-default' => 'Ist Standard', + 'add-image-btn-title' => 'Bild hinzufügen', + 'mass-delete-success' => 'Alle ausgewählten Produkte wurden erfolgreich gelöscht', + 'mass-update-success' => 'Alle ausgewählten Produkte wurden erfolgreich aktualisiert', + 'configurable-error' => 'Bitte wählen Sie mindestens eine konfigurierbares Attribut.', + 'categories' => 'Kategorien', + 'images' => 'Bilder', + 'inventories' => 'Vorräte', + 'variations' => 'Variationen', + 'downloadable' => 'Herunterladbare Informationen', + 'links' => 'Links', + 'add-link-btn-title' => 'Link hinzufügen', + 'samples' => 'Beispiele', + 'add-sample-btn-title' => 'Beispiel hinzufügen', + 'downloads' => 'Download erlaubt', + 'file' => 'Datei', + 'sample' => 'Beispiel', + 'upload-file' => 'Datei hochladen', + 'url' => 'Url', + 'sort-order' => 'Sortierreihenfolge', + 'browse-file' => 'Datei durchsuchen', + 'product-link' => 'Verlinkte Produkte', + 'cross-selling' => 'Cross-Selling', + 'up-selling' => 'Up Selling', + 'related-products' => 'Verwandte Produkte', + 'product-search-hint' => 'Geben Sie den Produktnamen ein', + 'no-result-found' => 'Produkte nicht mit demselben Namen gefunden.', + 'searching' => 'Suche ...', + 'grouped-products' => 'Gruppierte Produkte', + 'search-products' => 'Produkte suchen', + 'channel' => 'Kanäle', + 'bundle-items' => 'Artikel bündeln', + 'add-option-btn-title' => 'Option hinzufügen', + 'option-title' => 'Option Titel', + 'input-type' => 'Input Type', + 'is-required' => 'Ist erforderlich', + 'select' => 'Select', + 'radio' => 'Radio', + 'checkbox' => 'Checkbox', + 'multiselect' => 'Multiselect', + 'new-option' => 'Neue Option', + 'is-default' => 'Ist Standard', ], 'attributes' => [ - 'title' => 'Attribute', - 'add-title' => 'Attribut hinzufügen', - 'edit-title' => 'Attribut bearbeiten', - 'save-btn-title' => 'Attribut speichern', - 'general' => 'Allgemein', - 'code' => 'Attribut-Code', - 'type' => 'Attribut-Typ', - 'text' => 'Text', - 'textarea' => 'Textarea', - 'price' => 'Preis', - 'boolean' => 'Boolean', - 'select' => 'Select', - 'multiselect' => 'Multiselect', - 'datetime' => 'Datetime', - 'date' => 'Datum', - 'label' => 'Label', - 'admin' => 'Admin', - 'options' => 'Optionen', - 'position' => 'Position', + 'title' => 'Attribute', + 'add-title' => 'Attribut hinzufügen', + 'edit-title' => 'Attribut bearbeiten', + 'save-btn-title' => 'Attribut speichern', + 'general' => 'Allgemein', + 'code' => 'Attribut-Code', + 'type' => 'Attribut-Typ', + 'text' => 'Text', + 'textarea' => 'Textarea', + 'price' => 'Preis', + 'boolean' => 'Boolean', + 'select' => 'Select', + 'multiselect' => 'Multiselect', + 'datetime' => 'Datetime', + 'date' => 'Datum', + 'label' => 'Label', + 'admin' => 'Admin', + 'options' => 'Optionen', + 'position' => 'Position', 'add-option-btn-title' => 'Option hinzufügen', - 'validations' => 'Validierungen', - 'input_validation' => 'Eingabe-Validierung', - 'is_required' => 'Ist erforderlich', - 'is_unique' => 'Ist einzigartig', - 'number' => 'Anzahl', - 'decimal' => 'Dezimal', - 'email' => 'E-Mail', - 'url' => 'URL', - 'configuration' => 'Konfiguration', - 'status' => 'Status', - 'yes' => 'Ja', - 'no' => 'Nein', - 'value_per_locale' => 'Wert pro Sprache', - 'value_per_channel' => 'Wert pro Kanal', - 'is_filterable' => 'Verwendung in der geschichteten Navigation', - 'is_configurable' => 'Verwenden Sie diese Option, um ein konfigurierbares Produkt zu erstellen', - 'admin_name' => 'Admin-Name', - 'is_visible_on_front' => 'Sichtbar auf der Produktansichtseite im Frontend', - 'swatch_type' => 'Farbfeld-Typ', - 'dropdown' => 'Dropdown', - 'color-swatch' => 'Farbfeld', - 'image-swatch' => 'Bild Farbfeld', - 'text-swatch' => 'Text Farbfeld', - 'swatch' => 'Farbfeld', - 'image' => 'Bild', - 'file' => 'Datei', - 'checkbox' => 'Checkbox', - 'use_in_flat' => 'In Produkt Flat Tabelle erstellen', - 'is_comparable' => 'Attribut ist vergleichbar', - 'default_null_option' => 'Erstellen Sie eine leere Standardoption', + 'validations' => 'Validierungen', + 'input_validation' => 'Eingabe-Validierung', + 'is_required' => 'Ist erforderlich', + 'is_unique' => 'Ist einzigartig', + 'number' => 'Anzahl', + 'decimal' => 'Dezimal', + 'email' => 'E-Mail', + 'url' => 'URL', + 'configuration' => 'Konfiguration', + 'status' => 'Status', + 'yes' => 'Ja', + 'no' => 'Nein', + 'value_per_locale' => 'Wert pro Sprache', + 'value_per_channel' => 'Wert pro Kanal', + 'is_filterable' => 'Verwendung in der geschichteten Navigation', + 'is_configurable' => 'Verwenden Sie diese Option, um ein konfigurierbares Produkt zu erstellen', + 'admin_name' => 'Admin-Name', + 'is_visible_on_front' => 'Sichtbar auf der Produktansichtseite im Frontend', + 'swatch_type' => 'Farbfeld-Typ', + 'dropdown' => 'Dropdown', + 'color-swatch' => 'Farbfeld', + 'image-swatch' => 'Bild Farbfeld', + 'text-swatch' => 'Text Farbfeld', + 'swatch' => 'Farbfeld', + 'image' => 'Bild', + 'file' => 'Datei', + 'checkbox' => 'Checkbox', + 'use_in_flat' => 'In Produkt Flat Tabelle erstellen', + 'is_comparable' => 'Attribut ist vergleichbar', + 'default_null_option' => 'Erstellen Sie eine leere Standardoption', ], 'families' => [ @@ -987,137 +993,137 @@ return [ [ 'cart-rules' => [ - 'title' => 'Warenkorbregeln', - 'add-title' => 'Warenkorbregel hinzufügen', - 'edit-title' => 'Warenkorbregel bearbeiten', - 'save-btn-title' => 'Warenkorbregel speichern', - 'rule-information' => 'Regelinformationen', - 'name' => 'Name', - 'description' => 'Beschreibung', - 'status' => 'Status', - 'is-active' => 'Warenkorbregel ist aktiv', - 'channels' => 'Kanäle', - 'customer-groups' => 'Kundengruppen', - 'coupon-type' => 'Gutscheintyp', - 'no-coupon' => 'Ohne Gutschein', - 'specific-coupon' => 'Gutscheintyp', - 'auto-generate-coupon' => 'Gutschein automatisch generieren', - 'no' => 'Nein', - 'yes' => 'Ja', - 'coupon-code' => 'Gutscheincode', - 'uses-per-coupon' => 'Verwendungen pro Gutschein', - 'uses-per-customer' => 'Verwendungen pro Kunde', + 'title' => 'Warenkorbregeln', + 'add-title' => 'Warenkorbregel hinzufügen', + 'edit-title' => 'Warenkorbregel bearbeiten', + 'save-btn-title' => 'Warenkorbregel speichern', + 'rule-information' => 'Regelinformationen', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'status' => 'Status', + 'is-active' => 'Warenkorbregel ist aktiv', + 'channels' => 'Kanäle', + 'customer-groups' => 'Kundengruppen', + 'coupon-type' => 'Gutscheintyp', + 'no-coupon' => 'Ohne Gutschein', + 'specific-coupon' => 'Gutscheintyp', + 'auto-generate-coupon' => 'Gutschein automatisch generieren', + 'no' => 'Nein', + 'yes' => 'Ja', + 'coupon-code' => 'Gutscheincode', + 'uses-per-coupon' => 'Verwendungen pro Gutschein', + 'uses-per-customer' => 'Verwendungen pro Kunde', 'uses-per-customer-control-info' => 'Wird nur für angemeldete Kunden verwendet.', - 'from' => 'Von', - 'to' => 'An', - 'priority' => 'Priorität', - 'conditions' => 'Bedingungen', - 'condition-type' => 'Bedingungen Typ', - 'all-conditions-true' => 'Alle Bedingungen sind erfüllt', - 'any-condition-true' => 'Mindestens eine Bedingung ist erfüllt', - 'add-condition' => 'Bedingung hinzufügen', - 'choose-condition-to-add' => 'Wählen Sie eine Bedingung zum Hinzufügen aus', - 'cart-attribute' => 'Warenkorbattribut', - 'subtotal' => 'Zwischensumme', - 'additional' => 'Zusatzinformationen', - 'total-items-qty' => 'Gesamtmenge der Artikel', - 'total-weight' => 'Gesamtgewicht', - 'payment-method' => 'Zahlungsmethode', - 'shipping-method' => 'Versandart', - 'shipping-postcode' => 'Postleitzahl', - 'shipping-state' => 'Versand Staat', - 'shipping-country' => 'Versand Land', - 'cart-item-attribute' => 'Warenkorb-Item-Attribut', - 'price-in-cart' => 'Betrag im Warenkorb', - 'qty-in-cart' => 'Menge im Warenkorb', - 'product-attribute' => 'Produkt-Attribut', - 'attribute-name-children-only' => ':attribute_name (Nur Kinder)', - 'attribute-name-parent-only' => ':attribute_name (Nur Eltern)', - 'is-equal-to' => 'Gleich', - 'is-not-equal-to' => 'Ist nicht gleich', - 'equals-or-greater-than' => 'Gleich oder größer als', - 'equals-or-less-than' => 'Gleich oder weniger als', - 'greater-than' => 'Größer als', - 'less-than' => 'Weniger als', - 'contain' => 'Enthalten', - 'contains' => 'Enthält', - 'does-not-contain' => 'Nicht enthalten', - 'actions' => 'Aktionen', - 'action-type' => 'Aktion Typ', - 'percentage-product-price' => 'Prozentsatz des Produktpreises', - 'fixed-amount' => 'Fester Betrag', - 'fixed-amount-whole-cart' => 'Fester Betrag für gesamten Warenkorb', - 'buy-x-get-y-free' => 'Kaufen Sie X, erhalten Sie Y kostenfrei', - 'discount-amount' => 'Rabattbetrag', - 'discount-quantity' => 'Maximale Anzahl reduzierter Artikel', - 'discount-step' => 'Kaufe Sie Menge X', - 'free-shipping' => 'Kostenloser Versand', - 'apply-to-shipping' => 'Auf den Versand anwenden', - 'coupon-codes' => 'Gutschein-Codes', - 'coupon-qty' => 'Gutschein Menge', - 'code-length' => 'Code-Länge', - 'code-format' => 'Code-Format', - 'alphanumeric' => 'Alphanumerisch', - 'alphabetical' => 'Alphabetisch', - 'numeric' => 'Numerisch', - 'code-prefix' => 'Code-Präfix', - 'code-suffix' => 'Code Suffix', - 'generate' => 'Generieren', - 'cart-rule-not-defind-error' => 'Warenkorb-Regel ist nicht definiert', - 'mass-delete-success' => 'Alle ausgewählten Gutscheine wurden erfolgreich gelöscht.', - 'end-other-rules' => 'Ende Andere Regeln', - 'children-categories' => 'Kategorien (Nur Kinder)', - 'parent-categories' => 'Kategorien (Nur Eltern)', - 'categories' => 'Kategorien', - 'attribute_family' => 'Attributgruppe', + 'from' => 'Von', + 'to' => 'An', + 'priority' => 'Priorität', + 'conditions' => 'Bedingungen', + 'condition-type' => 'Bedingungen Typ', + 'all-conditions-true' => 'Alle Bedingungen sind erfüllt', + 'any-condition-true' => 'Mindestens eine Bedingung ist erfüllt', + 'add-condition' => 'Bedingung hinzufügen', + 'choose-condition-to-add' => 'Wählen Sie eine Bedingung zum Hinzufügen aus', + 'cart-attribute' => 'Warenkorbattribut', + 'subtotal' => 'Zwischensumme', + 'additional' => 'Zusatzinformationen', + 'total-items-qty' => 'Gesamtmenge der Artikel', + 'total-weight' => 'Gesamtgewicht', + 'payment-method' => 'Zahlungsmethode', + 'shipping-method' => 'Versandart', + 'shipping-postcode' => 'Postleitzahl', + 'shipping-state' => 'Versand Staat', + 'shipping-country' => 'Versand Land', + 'cart-item-attribute' => 'Warenkorb-Item-Attribut', + 'price-in-cart' => 'Betrag im Warenkorb', + 'qty-in-cart' => 'Menge im Warenkorb', + 'product-attribute' => 'Produkt-Attribut', + 'attribute-name-children-only' => ':attribute_name (Nur Kinder)', + 'attribute-name-parent-only' => ':attribute_name (Nur Eltern)', + 'is-equal-to' => 'Gleich', + 'is-not-equal-to' => 'Ist nicht gleich', + 'equals-or-greater-than' => 'Gleich oder größer als', + 'equals-or-less-than' => 'Gleich oder weniger als', + 'greater-than' => 'Größer als', + 'less-than' => 'Weniger als', + 'contain' => 'Enthalten', + 'contains' => 'Enthält', + 'does-not-contain' => 'Nicht enthalten', + 'actions' => 'Aktionen', + 'action-type' => 'Aktion Typ', + 'percentage-product-price' => 'Prozentsatz des Produktpreises', + 'fixed-amount' => 'Fester Betrag', + 'fixed-amount-whole-cart' => 'Fester Betrag für gesamten Warenkorb', + 'buy-x-get-y-free' => 'Kaufen Sie X, erhalten Sie Y kostenfrei', + 'discount-amount' => 'Rabattbetrag', + 'discount-quantity' => 'Maximale Anzahl reduzierter Artikel', + 'discount-step' => 'Kaufe Sie Menge X', + 'free-shipping' => 'Kostenloser Versand', + 'apply-to-shipping' => 'Auf den Versand anwenden', + 'coupon-codes' => 'Gutschein-Codes', + 'coupon-qty' => 'Gutschein Menge', + 'code-length' => 'Code-Länge', + 'code-format' => 'Code-Format', + 'alphanumeric' => 'Alphanumerisch', + 'alphabetical' => 'Alphabetisch', + 'numeric' => 'Numerisch', + 'code-prefix' => 'Code-Präfix', + 'code-suffix' => 'Code Suffix', + 'generate' => 'Generieren', + 'cart-rule-not-defind-error' => 'Warenkorb-Regel ist nicht definiert', + 'mass-delete-success' => 'Alle ausgewählten Gutscheine wurden erfolgreich gelöscht.', + 'end-other-rules' => 'Ende Andere Regeln', + 'children-categories' => 'Kategorien (Nur Kinder)', + 'parent-categories' => 'Kategorien (Nur Eltern)', + 'categories' => 'Kategorien', + 'attribute_family' => 'Attributgruppe', ], 'catalog-rules' => [ - 'title' => 'Katalogregeln', - 'add-title' => 'Katalogregel hinzufügen', - 'edit-title' => 'Katalogregel bearbeiten', - 'save-btn-title' => 'Katalogregel speichern', - 'rule-information' => 'Regeliformationen', - 'name' => 'Name', - 'description' => 'Beschreibung', - 'status' => 'Status', - 'is-active' => 'Katalogregel ist aktiv', - 'channels' => 'Kanäle', - 'customer-groups' => 'Kundengruppen', - 'no' => 'Nein', - 'yes' => 'Ja', - 'from' => 'Von', - 'to' => 'An', - 'priority' => 'Priorität', - 'conditions' => 'Bedingungen', - 'condition-type' => 'Bedingungen Typ', - 'all-conditions-true' => 'Alle Bedingungen sind erfüllt', - 'any-condition-true' => 'Jede Bedingung ist wahr', - 'add-condition' => 'Bedingung hinzufügen', - 'choose-condition-to-add' => 'Wählen Sie eine Bedingung zum Hinzufügen aus', - 'product-attribute' => 'Produkt-Attribut', + 'title' => 'Katalogregeln', + 'add-title' => 'Katalogregel hinzufügen', + 'edit-title' => 'Katalogregel bearbeiten', + 'save-btn-title' => 'Katalogregel speichern', + 'rule-information' => 'Regeliformationen', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'status' => 'Status', + 'is-active' => 'Katalogregel ist aktiv', + 'channels' => 'Kanäle', + 'customer-groups' => 'Kundengruppen', + 'no' => 'Nein', + 'yes' => 'Ja', + 'from' => 'Von', + 'to' => 'An', + 'priority' => 'Priorität', + 'conditions' => 'Bedingungen', + 'condition-type' => 'Bedingungen Typ', + 'all-conditions-true' => 'Alle Bedingungen sind erfüllt', + 'any-condition-true' => 'Jede Bedingung ist wahr', + 'add-condition' => 'Bedingung hinzufügen', + 'choose-condition-to-add' => 'Wählen Sie eine Bedingung zum Hinzufügen aus', + 'product-attribute' => 'Produkt-Attribut', 'attribute-name-children-only' => ':attribute_name (Nur Kinder)', - 'attribute-name-parent-only' => ':attribute_name (Nur Eltern)', - 'is-equal-to' => 'Gleich', - 'is-not-equal-to' => 'Ist nicht gleich', - 'equals-or-greater-than' => 'Gleich oder größer als', - 'equals-or-less-than' => 'Gleich oder weniger als', - 'greater-than' => 'Größer als', - 'less-than' => 'Weniger als', - 'contain' => 'Enthalten', - 'contains' => 'Enthält', - 'does-not-contain' => 'Nicht enthalten', - 'actions' => 'Aktionen', - 'action-type' => 'Aktion Typ', - 'percentage-product-price' => 'Prozentsatz des Produktpreises', - 'fixed-amount' => 'Fester Betrag', - 'fixed-amount-whole-cart' => 'Fester Betrag für gesamten Warenkob', - 'buy-x-get-y-free' => 'Kaufen Sie X, erhalten Sie Y kostenfrei', - 'discount-amount' => 'Rabatt-Betrag', - 'mass-delete-success' => 'Alle ausgewählten Gutscheine wurden erfolgreich gelöscht.', - 'end-other-rules' => 'Ende Andere Regeln', - 'categories' => 'Kategorien', - 'attribute_family' => 'Attributgruppe', + 'attribute-name-parent-only' => ':attribute_name (Nur Eltern)', + 'is-equal-to' => 'Gleich', + 'is-not-equal-to' => 'Ist nicht gleich', + 'equals-or-greater-than' => 'Gleich oder größer als', + 'equals-or-less-than' => 'Gleich oder weniger als', + 'greater-than' => 'Größer als', + 'less-than' => 'Weniger als', + 'contain' => 'Enthalten', + 'contains' => 'Enthält', + 'does-not-contain' => 'Nicht enthalten', + 'actions' => 'Aktionen', + 'action-type' => 'Aktion Typ', + 'percentage-product-price' => 'Prozentsatz des Produktpreises', + 'fixed-amount' => 'Fester Betrag', + 'fixed-amount-whole-cart' => 'Fester Betrag für gesamten Warenkob', + 'buy-x-get-y-free' => 'Kaufen Sie X, erhalten Sie Y kostenfrei', + 'discount-amount' => 'Rabatt-Betrag', + 'mass-delete-success' => 'Alle ausgewählten Gutscheine wurden erfolgreich gelöscht.', + 'end-other-rules' => 'Ende Andere Regeln', + 'categories' => 'Kategorien', + 'attribute_family' => 'Attributgruppe', ], ], 'error' => @@ -1275,39 +1281,39 @@ return [ 'shipping-methods' => 'Versand-Methoden', 'free-shipping' => 'Kostenloser Versand', 'flate-rate-shipping' => 'Pauschale Versandkosten', - 'shipping' => 'Versand', - 'origin' => 'Herkunft', - 'country' => 'Land', - 'state' => 'Bundesland', - 'zip' => 'Postleitzahl', - 'city' => 'Stadt', - 'street-address' => 'Anschrift', - 'title' => 'Titel', - 'description' => 'Beschreibung', - 'rate' => 'Rate', - 'status' => 'Status', - 'type' => 'Typ', - 'payment-methods' => 'Zahlungsmethoden', - 'cash-on-delivery' => 'Nachnahme', - 'money-transfer' => 'Überweisung', - 'paypal-standard' => 'Paypal-Standard', - 'business-account' => 'Paypal-Geschäftskonto', - 'newsletter' => 'Newsletter-Abonnement', - 'newsletter-subscription' => 'Newsletter-Abonnement erlauben', - 'email' => 'E-Mail-Prüfung', - 'email-verification' => 'E-Mail-Prüfung erlauben', - 'sort_order' => 'Sortierreihenfolge', - 'general' => 'Allgemein', - 'footer' => 'Fußzeile', - 'content' => 'Inhalt', - 'footer-content' => 'Fußzeile Text', - 'footer-toggle' => 'Fußzeile aktiv', - 'locale-options' => 'Einheit-Optionen', - 'weight-unit' => 'Gewichtseinheit', - 'email-settings' => 'E-Mail Einstellungen', - 'email-sender-name' => 'E-Mail-Adresse des Absenders', - 'shop-email-from' => 'E-Mail-Adresse des Shops (bei Bestellungen, etc.)', - 'admin-name' => 'Name des Admins', + 'shipping' => 'Versand', + 'origin' => 'Herkunft', + 'country' => 'Land', + 'state' => 'Bundesland', + 'zip' => 'Postleitzahl', + 'city' => 'Stadt', + 'street-address' => 'Anschrift', + 'title' => 'Titel', + 'description' => 'Beschreibung', + 'rate' => 'Rate', + 'status' => 'Status', + 'type' => 'Typ', + 'payment-methods' => 'Zahlungsmethoden', + 'cash-on-delivery' => 'Nachnahme', + 'money-transfer' => 'Überweisung', + 'paypal-standard' => 'Paypal-Standard', + 'business-account' => 'Paypal-Geschäftskonto', + 'newsletter' => 'Newsletter-Abonnement', + 'newsletter-subscription' => 'Newsletter-Abonnement erlauben', + 'email' => 'E-Mail-Prüfung', + 'email-verification' => 'E-Mail-Prüfung erlauben', + 'sort_order' => 'Sortierreihenfolge', + 'general' => 'Allgemein', + 'footer' => 'Fußzeile', + 'content' => 'Inhalt', + 'footer-content' => 'Fußzeile Text', + 'footer-toggle' => 'Fußzeile aktiv', + 'locale-options' => 'Einheit-Optionen', + 'weight-unit' => 'Gewichtseinheit', + 'email-settings' => 'E-Mail Einstellungen', + 'email-sender-name' => 'E-Mail-Adresse des Absenders', + 'shop-email-from' => 'E-Mail-Adresse des Shops (bei Bestellungen, etc.)', + 'admin-name' => 'Name des Admins', 'admin-email' => 'E-Mail-Adresse des Admins', 'admin-page-limit' => 'Elemente pro Seite (Admin)', 'design' => 'Design', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 76fcf8270..9f4941234 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -320,6 +320,14 @@ return [ 'invoice-btn-title' => 'Invoice', 'info' => 'Information', 'invoices' => 'Invoices', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Shipments', 'order-and-account' => 'Order and Account', 'order-info' => 'Order Information', @@ -1222,7 +1230,7 @@ return [ 'cancel-success' => ':name canceled successfully.', 'cancel-error' => ':name can not be canceled.', 'already-taken' => 'The :name has already been taken.', - 'order-pending' => 'Cannot delete account because some Order(s) are pending or processing state.' + 'order-pending' => 'Cannot delete :name account because some Order(s) are pending or processing state.' ], 'footer' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 6f88bc54e..410af2d47 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -318,6 +318,14 @@ return [ 'invoice-btn-title' => 'صورت حساب', 'info' => 'اطلاعات', 'invoices' => 'صورت حساب ها', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'حمل و نقل ها', 'order-and-account' => 'سفارش و حساب', 'order-info' => 'اطلاعات سفارش', diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index fedd8f3ec..e5ca76946 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -319,6 +319,14 @@ return [ 'invoice-btn-title' => 'Fattura', 'info' => 'Informazoni', 'invoices' => 'Fatture', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Spedizioni', 'order-and-account' => 'Ordine e Account', 'order-info' => 'informazioni Ordine', diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index d1aae1efe..9653de94b 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -319,6 +319,14 @@ return [ 'invoice-btn-title' => 'Factuur', 'info' => 'Informatie', 'invoices' => 'Facturen', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Verzendingen', 'order-and-account' => 'Order and Account', 'order-info' => 'Order Information', diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index a714a24b3..960202a88 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -317,6 +317,14 @@ return [ 'invoice-btn-title' => 'Faktura', 'info' => 'Informacje', 'invoices' => 'Faktury', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Przesyłki', 'order-and-account' => 'Zamówienie i konto', 'order-info' => 'Informacje o zamówieniu', 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 fb31ad0dc..4043e01f3 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -318,6 +318,14 @@ return [ 'invoice-btn-title' => 'Faturar', 'info' => 'Informação', 'invoices' => 'Faturas', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Envios', 'order-and-account' => 'Pedido e Conta', 'order-info' => 'Informação do Pedido', diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index b9bd5afd2..f1c7b8103 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -316,6 +316,14 @@ return [ 'invoice-btn-title' => 'Fatura', 'info' => 'Bilgi', 'invoices' => 'Faturalar', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Kargo', 'order-and-account' => 'Sipariş ve Hesap', 'order-info' => 'Sipariş Bilgisi', diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php index 42b871faf..ef1dd4412 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php @@ -13,10 +13,7 @@
- - - {{ __('admin::app.export.export') }} - + {{ __('admin::app.export.export') }}
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 0666ce986..06fb088b8 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 @@ -1,10 +1,10 @@ -@extends('admin::layouts.master') +@extends('admin::layouts.content') @section('page_title') {{ __('admin::app.sales.invoices.view-title', ['invoice_id' => $invoice->id]) }} @stop -@section('content-wrapper') +@section('content') order; ?> @@ -15,11 +15,18 @@ {!! view_render_event('sales.invoice.title.before', ['order' => $order]) !!} - {{ __('admin::app.sales.invoices.view-title', ['invoice_id' => $invoice->id]) }} {!! view_render_event('sales.invoice.title.after', ['order' => $order]) !!} + + @if($invoice->state == 'paid') + {{ __('admin::app.sales.orders.invoice-status-paid') }} + @elseif($invoice->state == 'pending') + {{ __('admin::app.sales.orders.invoice-status-pending') }} + @else + {{ __('admin::app.sales.orders.invoice-status-overdue') }} + @endif
@@ -29,6 +36,10 @@ {{ __('admin::app.sales.invoices.print') }} + @if($invoice->state == "pending" || $invoice->state == "overdue") + {{ __('admin::app.sales.orders.invoices-change-title') }} + @endif + {!! view_render_event('sales.invoice.page_action.after', ['order' => $order]) !!}
@@ -37,7 +48,7 @@
-
+
@@ -46,10 +57,7 @@
- - {{ __('admin::app.sales.invoices.order-id') }} - - + {{ __('admin::app.sales.invoices.order-id') }} #{{ $order->increment_id }} @@ -58,69 +66,55 @@ {!! view_render_event('sales.invoice.increment_id.after', ['order' => $order]) !!}
- - {{ __('admin::app.sales.orders.order-date') }} - - - - {{ $order->created_at }} - + {{ __('admin::app.sales.orders.order-date') }} + {{ $order->created_at }}
{!! view_render_event('sales.invoice.created_at.after', ['order' => $order]) !!}
- - {{ __('admin::app.sales.orders.order-status') }} - - - - {{ $order->status_label }} - + {{ __('admin::app.sales.orders.order-status') }} + {{ $order->status_label }}
{!! view_render_event('sales.invoice.status_label.after', ['order' => $order]) !!}
- - {{ __('admin::app.sales.orders.channel') }} - - - - {{ $order->channel_name }} - + {{ __('admin::app.sales.orders.channel') }} + {{ $order->channel_name }}
{!! view_render_event('sales.invoice.channel_name.after', ['order' => $order]) !!} + +
+ {{ __('admin::app.sales.orders.payment-method') }} + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
+ +
+ {{ __('admin::app.sales.orders.shipping-method') }} + {{ $order->shipping_title }} +
+ {!! view_render_event('sales.invoice.shipping-method.after', ['order' => $order]) !!}
-
+
{{ __('admin::app.sales.orders.account-info') }}
- - {{ __('admin::app.sales.orders.customer-name') }} - - - - {{ $invoice->address->name }} - + {{ __('admin::app.sales.orders.customer-name') }} + {{ $invoice->address->name }}
{!! view_render_event('sales.invoice.customer_name.after', ['order' => $order]) !!}
- - {{ __('admin::app.sales.orders.email') }} - - - - {{ $invoice->address->email }} - + {{ __('admin::app.sales.orders.email') }} + {{ $invoice->address->email }}
{!! view_render_event('sales.invoice.customer_email.after', ['order' => $order]) !!} @@ -131,14 +125,14 @@ -
+
-
+
{{ __('admin::app.sales.orders.billing-address') }}
-
+
@include ('admin::sales.address', ['address' => $order->billing_address]) {!! view_render_event('sales.invoice.billing_address.after', ['order' => $order]) !!} @@ -146,86 +140,18 @@
@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 - -
- - - -
- -
-
- {{ __('admin::app.sales.orders.payment-info') }} -
- -
-
- - {{ __('admin::app.sales.orders.payment-method') }} - - - - {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} - -
- -
- - {{ __('admin::app.sales.orders.currency') }} - - - - {{ $order->order_currency_code }} - -
- - {!! view_render_event('sales.invoice.payment-method.after', ['order' => $order]) !!} -
-
- - @if ($order->shipping_address) -
-
- {{ __('admin::app.sales.orders.shipping-info') }} -
- -
-
- - {{ __('admin::app.sales.orders.shipping-method') }} - - - - {{ $order->shipping_title }} - -
- -
- - {{ __('admin::app.sales.orders.shipping-price') }} - - - - {{ core()->formatBasePrice($order->base_shipping_amount) }} - -
- - {!! view_render_event('sales.invoice.shipping-method.after', ['order' => $order]) !!} -
-
- @endif
@@ -254,9 +180,7 @@ @foreach ($invoice->items as $item) {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} - - - {{ $item->name }} + {{ $item->name }} @if (isset($item->additional['attributes']))
@@ -264,19 +188,14 @@ @foreach ($item->additional['attributes'] as $attribute) {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
@endforeach -
@endif {{ core()->formatBasePrice($item->base_price) }} - {{ $item->qty }} - {{ core()->formatBasePrice($item->base_total) }} - {{ core()->formatBasePrice($item->base_tax_amount) }} - @if ($invoice->base_discount_amount > 0) {{ core()->formatBasePrice($item->base_discount_amount) }} @endif @@ -284,7 +203,6 @@ {{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }} @endforeach -
@@ -322,12 +240,61 @@ {{ core()->formatBasePrice($invoice->base_grand_total) }} -
-
-
-@stop \ No newline at end of file +
+ + +

{{ __('admin::app.sales.orders.invoices-change-title') }}

+
+ +
+
+@stop + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php index e7923525d..92b8cafeb 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php @@ -157,37 +157,41 @@
- -
+ @if ($order->billing_address || $order->shipping_address) + +
-
-
- {{ __('admin::app.sales.orders.billing-address') }} -
+ @if($order->billing_address) +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
-
- @include ('admin::sales.address', ['address' => $order->billing_address]) +
+ @include ('admin::sales.address', ['address' => $order->billing_address]) + + {!! view_render_event('sales.order.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.order.shipping_address.after', ['order' => $order]) !!} +
+
+ @endif - {!! view_render_event('sales.order.billing_address.after', ['order' => $order]) !!} -
- - @if ($order->shipping_address) -
-
- {{ __('admin::app.sales.orders.shipping-address') }} -
- -
- @include ('admin::sales.address', ['address' => $order->shipping_address]) - - {!! view_render_event('sales.order.shipping_address.after', ['order' => $order]) !!} -
-
- @endif - -
-
+ + @endif
@@ -470,7 +474,15 @@ {{ $invoice->created_at }} #{{ $invoice->order->increment_id }} {{ $invoice->address->name }} - {{ $invoice->status_label }} + + @if($invoice->state == "paid") + {{ __('admin::app.sales.orders.invoice-status-paid') }} + @elseif($invoice->state == "overdue") + {{ __('admin::app.sales.orders.invoice-status-overdue') }} + @else + {{ __('admin::app.sales.orders.invoice-status-pending') }} + @endif + {{ core()->formatBasePrice($invoice->base_grand_total) }} diff --git a/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php index c1d2762f2..8cefd98e8 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php @@ -107,37 +107,41 @@
- -
+ @if ($order->billing_address || $order->shipping_address) + +
-
-
- {{ __('admin::app.sales.orders.billing-address') }} -
+ @if ($order->billing_address) +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
-
+
- @include ('admin::sales.address', ['address' => $order->billing_address]) + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ @endif + + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif -
- - @if ($order->shipping_address) -
-
- {{ __('admin::app.sales.orders.shipping-address') }} -
- -
- - @include ('admin::sales.address', ['address' => $order->shipping_address]) - -
-
- @endif - -
-
+ + @endif
diff --git a/packages/Webkul/BookingProduct/src/Repositories/BookingProductEventTicketRepository.php b/packages/Webkul/BookingProduct/src/Repositories/BookingProductEventTicketRepository.php index ce0a1a7f2..e43dd10f2 100644 --- a/packages/Webkul/BookingProduct/src/Repositories/BookingProductEventTicketRepository.php +++ b/packages/Webkul/BookingProduct/src/Repositories/BookingProductEventTicketRepository.php @@ -2,6 +2,7 @@ namespace Webkul\BookingProduct\Repositories; +use Illuminate\Support\Facades\Event; use Webkul\Core\Eloquent\Repository; use Illuminate\Support\Str; @@ -18,12 +19,16 @@ class BookingProductEventTicketRepository extends Repository } /** - * @param array $data - * @param \Webkul\BookingProduct\Contracts\BookingProduct $bookingProduct + * @param array $data + * @param \Webkul\BookingProduct\Contracts\BookingProduct $bookingProduct + * * @return void + * @throws \Prettus\Validator\Exceptions\ValidatorException */ - public function saveEventTickets($data, $bookingProduct) + public function saveEventTickets($data, $bookingProduct): void { + Event::dispatch('booking_product.booking.event-ticket.save.before', ['data' => $data, 'bookingProduct' => $bookingProduct]); + $previousTicketIds = $bookingProduct->event_tickets()->pluck('id'); if (isset($data['tickets'])) { @@ -54,7 +59,7 @@ class BookingProductEventTicketRepository extends Repository } if (Str::contains($ticketId, 'ticket_')) { - $this->create(array_merge([ + $ticket = $this->create(array_merge([ 'booking_product_id' => $bookingProduct->id, ], $ticketInputs)); } else { @@ -62,13 +67,18 @@ class BookingProductEventTicketRepository extends Repository $previousTicketIds->forget($index); } - $this->update($ticketInputs, $ticketId); + $ticket = $this->update($ticketInputs, $ticketId); } + + $savedTickets[$ticketId]['ticket'] = $ticket; + $savedTickets[$ticketId]['ticketInputs'] = $ticketInputs; } } foreach ($previousTicketIds as $previousTicketId) { $this->delete($previousTicketId); } + + Event::dispatch('booking_product.booking.event-ticket.save.after', ['tickets' => $savedTickets]); } } \ No newline at end of file diff --git a/packages/Webkul/Core/src/Helpers/Laravel5Helper.php b/packages/Webkul/Core/src/Helpers/Laravel5Helper.php index 31d7476ef..e327d76e0 100644 --- a/packages/Webkul/Core/src/Helpers/Laravel5Helper.php +++ b/packages/Webkul/Core/src/Helpers/Laravel5Helper.php @@ -7,8 +7,11 @@ namespace Webkul\Core\Helpers; use Faker\Factory; use Codeception\Module\Laravel5; +use Webkul\BookingProduct\Models\BookingProduct; +use Webkul\BookingProduct\Models\BookingProductEventTicket; use Webkul\Checkout\Models\Cart; use Webkul\Checkout\Models\CartItem; +use Webkul\Customer\Models\Customer; use Webkul\Product\Models\Product; use Webkul\Attribute\Models\Attribute; use Webkul\Checkout\Models\CartAddress; @@ -31,21 +34,19 @@ class Laravel5Helper extends Laravel5 public const SIMPLE_PRODUCT = 1; public const VIRTUAL_PRODUCT = 2; public const DOWNLOADABLE_PRODUCT = 3; + public const BOOKING_EVENT_PRODUCT = 4; /** * Returns the field name of the given attribute in which a value should be saved inside * the 'product_attribute_values' table. Depends on the type. * - * @param string $attribute + * @param string $type * * @return string|null * @part ORM */ public static function getAttributeFieldName(string $type): ?string { - - $attributes = []; - $possibleTypes = [ 'text' => 'text_value', 'select' => 'integer_value', @@ -60,7 +61,7 @@ class Laravel5Helper extends Laravel5 public function prepareCart(array $options = []): array { - $faker = \Faker\Factory::create(); + $faker = Factory::create(); $I = $this; @@ -108,7 +109,7 @@ class Laravel5Helper extends Laravel5 $cartItems = []; - $generatedCartItems = rand(3, 10); + $generatedCartItems = random_int(3, 10); for ($i = 2; $i <= $generatedCartItems; $i++) { $quantity = random_int(1, 10); @@ -178,6 +179,10 @@ class Laravel5Helper extends Laravel5 $I = $this; switch ($productType) { + case self::BOOKING_EVENT_PRODUCT: + $product = $I->haveBookingEventProduct($configs, $productStates); + break; + case self::DOWNLOADABLE_PRODUCT: $product = $I->haveDownloadableProduct($configs, $productStates); break; @@ -205,7 +210,6 @@ class Laravel5Helper extends Laravel5 $productStates = array_merge($productStates, ['simple']); } - /** @var Product $product */ $product = $I->createProduct($configs['productAttributes'] ?? [], $productStates); $I->createAttributeValues($product->id, $configs['attributeValues'] ?? []); @@ -222,7 +226,6 @@ class Laravel5Helper extends Laravel5 $productStates = array_merge($productStates, ['virtual']); } - /** @var Product $product */ $product = $I->createProduct($configs['productAttributes'] ?? [], $productStates); $I->createAttributeValues($product->id, $configs['attributeValues'] ?? []); @@ -239,7 +242,6 @@ class Laravel5Helper extends Laravel5 $productStates = array_merge($productStates, ['downloadable']); } - /** @var Product $product */ $product = $I->createProduct($configs['productAttributes'] ?? [], $productStates); $I->createAttributeValues($product->id, $configs['attributeValues'] ?? []); @@ -249,6 +251,22 @@ class Laravel5Helper extends Laravel5 return $product->refresh(); } + private function haveBookingEventProduct(array $configs = [], array $productStates = []): Product + { + $I = $this; + if (! in_array('booking', $productStates)) { + $productStates = array_merge($productStates, ['booking']); + } + + $product = $I->createProduct($configs['productAttributes'] ?? [], $productStates); + + $I->createAttributeValues($product->id, $configs['attributeValues'] ?? []); + + $I->createBookingEventProduct($product->id); + + return $product->refresh(); + } + private function createProduct(array $attributes = [], array $states = []): Product { return factory(Product::class)->states($states)->create($attributes); @@ -275,6 +293,18 @@ class Laravel5Helper extends Laravel5 ]); } + private function createBookingEventProduct(int $productId): void + { + $I = $this; + $bookingProduct = $I->have(BookingProduct::class, [ + 'product_id' => $productId, + ]); + + $I->have(BookingProductEventTicket::class, [ + 'booking_product_id' => $bookingProduct->id, + ]); + } + private function createAttributeValues(int $productId, array $attributeValues = []): void { $I = $this; @@ -295,7 +325,7 @@ class Laravel5Helper extends Laravel5 } - /** @var array $defaultAttributeValues + /** * Some defaults that should apply to all generated products. * By defaults products will be generated as saleable. * If you do not want this, this defaults can be overriden by $attributeValues. @@ -314,7 +344,7 @@ class Laravel5Helper extends Laravel5 'special_price' => null, 'price' => $faker->randomFloat(2, 1, 1000), 'weight' => '1.00', // necessary for shipping - 'brand' => AttributeOption::firstWhere('attribute_id', $brand->id)->id, + 'brand' => AttributeOption::query()->firstWhere('attribute_id', $brand->id)->id, ]; $attributeValues = array_merge($defaultAttributeValues, $attributeValues); diff --git a/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php b/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php index bd917284b..b33721b83 100755 --- a/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php @@ -82,6 +82,7 @@ class CustomerController extends Controller */ public function update() { + $isPasswordChanged = false; $id = auth()->guard('customer')->user()->id; $this->validate(request(), [ @@ -104,6 +105,7 @@ class CustomerController extends Controller if (isset ($data['oldpassword'])) { if ($data['oldpassword'] != "" || $data['oldpassword'] != null) { if (Hash::check($data['oldpassword'], auth()->guard('customer')->user()->password)) { + $isPasswordChanged = true; $data['password'] = bcrypt($data['password']); } else { session()->flash('warning', trans('shop::app.customer.account.profile.unmatch')); @@ -119,6 +121,10 @@ class CustomerController extends Controller if ($customer = $this->customerRepository->update($data, $id)) { + if ($isPasswordChanged) { + Event::dispatch('user.admin.update-password', $customer); + } + Event::dispatch('customer.update.after', $customer); Session()->flash('success', trans('shop::app.customer.account.profile.edit-success')); @@ -150,7 +156,7 @@ class CustomerController extends Controller $orders = $customerRepository->all_orders->whereIn('status', ['pending', 'processing'])->first(); if ($orders) { - session()->flash('error', trans('admin::app.response.order-pending')); + session()->flash('error', trans('admin::app.response.order-pending', ['name' => 'Customer'])); return redirect()->route($this->_config['redirect']); } else { diff --git a/packages/Webkul/Customer/src/Notifications/CustomerUpdatePassword.php b/packages/Webkul/Customer/src/Notifications/CustomerUpdatePassword.php new file mode 100644 index 000000000..28ce81693 --- /dev/null +++ b/packages/Webkul/Customer/src/Notifications/CustomerUpdatePassword.php @@ -0,0 +1,43 @@ +customer = $customer; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name']) + ->to($this->customer->email, $this->customer->name) + ->subject(trans('shop::app.mail.update-password.subject')) + ->view('shop::emails.customer.update-password', ['user' => $this->customer]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Repositories/CustomerRepository.php b/packages/Webkul/Customer/src/Repositories/CustomerRepository.php index 1dc4c9ea5..1e853476a 100755 --- a/packages/Webkul/Customer/src/Repositories/CustomerRepository.php +++ b/packages/Webkul/Customer/src/Repositories/CustomerRepository.php @@ -16,4 +16,36 @@ class CustomerRepository extends Repository { return 'Webkul\Customer\Contracts\Customer'; } + + /** + * Check if customer has order pending or processing. + * + * @param Webkul\Customer\Models\Customer + * @return boolean + */ + public function checkIfCustomerHasOrderPendingOrProcessing($customer) + { + return $customer->all_orders->pluck('status')->contains(function ($val) { + return $val === 'pending' || $val === 'processing'; + }); + } + + /** + * Check if bulk customers, if they have order pending or processing. + * + * @param array + * @return boolean + */ + public function checkBulkCustomerIfTheyHaveOrderPendingOrProcessing($customerIds) + { + foreach ($customerIds as $customerId) { + $customer = $this->findorFail($customerId); + + if ($this->checkIfCustomerHasOrderPendingOrProcessing($customer)) { + return true; + } + } + + return false; + } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Factories/ProductFactory.php b/packages/Webkul/Product/src/Database/Factories/ProductFactory.php index e07b3169e..d0f4240b8 100644 --- a/packages/Webkul/Product/src/Database/Factories/ProductFactory.php +++ b/packages/Webkul/Product/src/Database/Factories/ProductFactory.php @@ -6,12 +6,8 @@ use Faker\Generator as Faker; use Webkul\Product\Models\Product; $factory->define(Product::class, function (Faker $faker) { - $now = date("Y-m-d H:i:s"); - return [ 'sku' => $faker->uuid, - 'created_at' => $now, - 'updated_at' => $now, 'attribute_family_id' => 1, ]; }); @@ -26,4 +22,8 @@ $factory->state(Product::class, 'virtual', [ $factory->state(Product::class, 'downloadable', [ 'type' => 'downloadable', +]); + +$factory->state(Product::class, 'booking', [ + 'type' => 'booking', ]); \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Configurable.php b/packages/Webkul/Product/src/Type/Configurable.php index 393287536..c148ed62f 100644 --- a/packages/Webkul/Product/src/Type/Configurable.php +++ b/packages/Webkul/Product/src/Type/Configurable.php @@ -2,9 +2,10 @@ namespace Webkul\Product\Type; -use Webkul\Product\Models\ProductAttributeValue; -use Webkul\Product\Models\ProductFlat; use Illuminate\Support\Str; +use Illuminate\Support\Facades\DB; +use Webkul\Product\Models\ProductFlat; +use Webkul\Product\Models\ProductAttributeValue; class Configurable extends AbstractType { @@ -351,14 +352,16 @@ class Configurable extends AbstractType { $minPrices = []; + /* method is calling many time so using variable */ + $tablePrefix = DB::getTablePrefix(); + $result = ProductFlat::join('products', 'product_flat.product_id', '=', 'products.id') ->distinct() ->where('products.parent_id', $this->product->id) - ->selectRaw('IF( product_flat.special_price_from IS NOT NULL - AND product_flat.special_price_to IS NOT NULL , IF( NOW( ) >= product_flat.special_price_from - AND NOW( ) <= product_flat.special_price_to, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) , IF( product_flat.special_price_from IS NULL , IF( product_flat.special_price_to IS NULL , IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , IF( NOW( ) <= product_flat.special_price_to, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) ) , IF( product_flat.special_price_to IS NULL , IF( NOW( ) >= product_flat.special_price_from, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) , product_flat.price ) ) ) AS min_price') + ->selectRaw("IF( {$tablePrefix}product_flat.special_price_from IS NOT NULL + AND {$tablePrefix}product_flat.special_price_to IS NOT NULL , IF( NOW( ) >= {$tablePrefix}product_flat.special_price_from + AND NOW( ) <= {$tablePrefix}product_flat.special_price_to, IF( {$tablePrefix}product_flat.special_price IS NULL OR {$tablePrefix}product_flat.special_price = 0 , {$tablePrefix}product_flat.price, LEAST( {$tablePrefix}product_flat.special_price, {$tablePrefix}product_flat.price ) ) , {$tablePrefix}product_flat.price ) , IF( {$tablePrefix}product_flat.special_price_from IS NULL , IF( {$tablePrefix}product_flat.special_price_to IS NULL , IF( {$tablePrefix}product_flat.special_price IS NULL OR {$tablePrefix}product_flat.special_price = 0 , {$tablePrefix}product_flat.price, LEAST( {$tablePrefix}product_flat.special_price, {$tablePrefix}product_flat.price ) ) , IF( NOW( ) <= {$tablePrefix}product_flat.special_price_to, IF( {$tablePrefix}product_flat.special_price IS NULL OR {$tablePrefix}product_flat.special_price = 0 , {$tablePrefix}product_flat.price, LEAST( {$tablePrefix}product_flat.special_price, {$tablePrefix}product_flat.price ) ) , {$tablePrefix}product_flat.price ) ) , IF( {$tablePrefix}product_flat.special_price_to IS NULL , IF( NOW( ) >= {$tablePrefix}product_flat.special_price_from, IF( {$tablePrefix}product_flat.special_price IS NULL OR {$tablePrefix}product_flat.special_price = 0 , {$tablePrefix}product_flat.price, LEAST( {$tablePrefix}product_flat.special_price, {$tablePrefix}product_flat.price ) ) , {$tablePrefix}product_flat.price ) , {$tablePrefix}product_flat.price ) ) ) AS min_price") ->where('product_flat.channel', core()->getCurrentChannelCode()) - ->where('product_flat.locale', app()->getLocale()) ->get(); foreach ($result as $price) { @@ -382,7 +385,7 @@ class Configurable extends AbstractType $productFlat = ProductFlat::join('products', 'product_flat.product_id', '=', 'products.id') ->distinct() ->where('products.parent_id', $this->product->id) - ->selectRaw('MAX(product_flat.price) AS max_price') + ->selectRaw('MAX('.DB::getTablePrefix().'product_flat.price) AS max_price') ->where('product_flat.channel', core()->getCurrentChannelCode()) ->where('product_flat.locale', app()->getLocale()) ->first(); diff --git a/packages/Webkul/Sales/src/Models/Order.php b/packages/Webkul/Sales/src/Models/Order.php index 32df169f6..8f90a3b55 100755 --- a/packages/Webkul/Sales/src/Models/Order.php +++ b/packages/Webkul/Sales/src/Models/Order.php @@ -277,6 +277,12 @@ class Order extends Model implements OrderContract return false; } + foreach ($this->invoices as $item) { + if ($item->state == "pending" || $item->state == "overdue") { + return false; + } + } + foreach ($this->items as $item) { if ($item->qty_to_refund > 0) { return true; diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php index 8f4f605e6..70a3882ca 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -97,7 +97,7 @@ class InvoiceRepository extends Repository $invoice = $this->model->create([ 'order_id' => $order->id, 'total_qty' => $totalQty, - 'state' => 'paid', + 'state' => 'pending', 'base_currency_code' => $order->base_currency_code, 'channel_currency_code' => $order->channel_currency_code, 'order_currency_code' => $order->order_currency_code, @@ -106,7 +106,7 @@ class InvoiceRepository extends Repository foreach ($data['invoice']['items'] as $itemId => $qty) { if (! $qty) { - continue; + continue; } $orderItem = $this->orderItemRepository->find($itemId); @@ -192,11 +192,8 @@ class InvoiceRepository extends Repository } $this->collectTotals($invoice); - $this->orderRepository->collectTotals($order); - $this->orderRepository->updateOrderStatus($order); - Event::dispatch('sales.invoice.save.after', $invoice); } catch (\Exception $e) { DB::rollBack(); @@ -256,4 +253,16 @@ class InvoiceRepository extends Repository return $invoice; } + + /** + * @param \Webkul\Sales\Contracts\Invoice $invoice + * @return void + */ + public function updateInvoiceState($invoice, $status) + { + $invoice->state = $status; + $invoice->save(); + + return true; + } } \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/lang/ar/app.php b/packages/Webkul/Shop/src/Resources/lang/ar/app.php index e26883627..014e9ce1d 100644 --- a/packages/Webkul/Shop/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/ar/app.php @@ -579,6 +579,15 @@ return [ 'final-summary' => 'شكرا لإظهارك إهتمامك بمتجرنا سنرسل لك رقم التتبع بمجرد شحنه', 'help' => ': support_email إذا كنت بحاجة إلى أي نوع من المساعدة يرجى الاتصال بنا على', 'thanks' => 'شكرا!', + + 'comment' => [ + 'subject' => '#:order_id تمت إضافة تعليق جديد إلى طلبك', + 'dear' => ':customer_name العزيز', + 'final-summary' => 'شكرا لإظهار اهتمامك بمتجرنا', + 'help' => ':support_email إذا كنت بحاجة إلى أي نوع من المساعدة يرجى الاتصال بنا على', + 'thanks' => 'شكر!', + ], + 'cancel' => [ 'subject' => 'تأكيد إلغاء الأمر', 'heading' => 'تم الغاء الأمر او الطلب', @@ -635,6 +644,13 @@ return [ 'thanks' => 'شكرا!' ], + 'update-password' => [ + 'subject' => 'تم تحديث كلمة السر', + 'dear' => ':name عزيزي', + 'info' => 'أنت تتلقى هذا البريد الإلكتروني لأنك قمت بتحديث كلمة المرور الخاصة بك.', + 'thanks' => 'شكرا!' + ], + 'customer' => [ 'new' => [ 'dear' => ':customer_name العزيز', diff --git a/packages/Webkul/Shop/src/Resources/lang/de/app.php b/packages/Webkul/Shop/src/Resources/lang/de/app.php index 52de95e10..087086960 100755 --- a/packages/Webkul/Shop/src/Resources/lang/de/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/de/app.php @@ -573,6 +573,15 @@ return [ 'final-summary' => 'Vielen Dank für Ihr Interesse an unserem Shop. Nach dem Versand senden wir Ihnen die Sendungsverfolgungsnummer', 'help' => 'Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte unter :support_email', 'thanks' => 'Vielen Dank!', + + 'comment' => [ + 'subject' => 'Neuer Kommentar zu Ihrer Bestellung hinzugefügt #:order_id', + 'dear' => 'sehr geehrter :customer_name', + 'final-summary' => 'Vielen Dank für Ihr Interesse an unserem Shop', + 'help' => 'Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte unter :support_email', + 'thanks' => 'Vielen Dank!', + ], + 'cancel' => [ 'subject' => 'Bestätigung der Bestellungsstornierung', 'heading' => 'Bestellung storniert', @@ -629,6 +638,13 @@ return [ 'thanks' => 'Vielen Dank!' ], + 'update-password' => [ + 'subject' => 'Passwort aktualisiert', + 'dear' => 'Sehr geehrte/r :name', + 'info' => 'Sie erhalten diese E-Mail, weil Sie Ihr Passwort aktualisiert haben.', + 'thanks' => 'Vielen Dank!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Sehr geehrte/r :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index e7af54764..ab15f52ad 100755 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -581,7 +581,7 @@ return [ 'thanks' => 'Thanks!', 'comment' => [ - 'subject' => 'New comment added to your order', + 'subject' => 'New comment added to your order #:order_id', 'dear' => 'Dear :customer_name', 'final-summary' => 'Thanks for showing your interest in our store', 'help' => 'If you need any kind of help please contact us at :support_email', @@ -592,7 +592,7 @@ return [ 'subject' => 'Order Cancel Confirmation', 'heading' => 'Order Cancelled', 'dear' => 'Dear :customer_name', - 'greeting' => 'You Order with order id #:order_id placed on :created_at has been cancelled', + 'greeting' => 'Your Order with order id :order_id placed on :created_at has been cancelled', 'summary' => 'Summary of Order', 'shipping-address' => 'Shipping Address', 'billing-address' => 'Billing Address', @@ -644,6 +644,13 @@ return [ 'thanks' => 'Thanks!' ], + 'update-password' => [ + 'subject' => 'Password Updated', + 'dear' => 'Dear :name', + 'info' => 'You are receiving this email because you have updated your password.', + 'thanks' => 'Thanks!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Dear :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/es/app.php b/packages/Webkul/Shop/src/Resources/lang/es/app.php index 3e9ef0f50..01f8e8856 100644 --- a/packages/Webkul/Shop/src/Resources/lang/es/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/es/app.php @@ -538,6 +538,15 @@ return [ 'final-summary' => 'Gracias por tu pedido, te enviaremos el número de seguimiento una vez enviado', 'help' => 'Si necesitas ayuda contacta con nosotros a través de :support_email', 'thanks' => '¡Gracias!', + + 'comment' => [ + 'subject' => 'Nuevo comentario agregado a su pedido #:order_id', + 'dear' => 'Querida :customer_name', + 'final-summary' => 'Gracias por mostrar su interés en nuestra tienda.', + 'help' => 'Si necesita algún tipo de ayuda, contáctenos en :support_email', + 'thanks' => '¡Gracias!', + ], + 'cancel' => [ 'subject' => 'Confirmación de pedido cancelado', 'heading' => 'Pedido cancelado', @@ -582,6 +591,12 @@ return [ 'final-summary' => 'Si no has solicitado cambiar de contraseña, ninguna acción es requerida por tu parte.', 'thanks' => '¡Gracias!' ], + 'update-password' => [ + 'subject' => 'Contraseña actualiza', + 'dear' => 'Estimado/a :name', + 'info' => 'Está recibiendo este correo electrónico porque ha actualizado su contraseña.', + 'thanks' => '¡Gracias!' + ], 'customer' => [ 'new' => [ 'dear' => 'Estimado/a :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/fa/app.php b/packages/Webkul/Shop/src/Resources/lang/fa/app.php index 28e7c5709..02c289228 100644 --- a/packages/Webkul/Shop/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/fa/app.php @@ -578,6 +578,15 @@ return [ 'final-summary' => 'با تشکر از علاقه شما به فروشگاه ما ، شماره حمل و نقل را برای شما ارسال می کنیم', 'help' => 'در صورت نیاز به هر نوع کمک ، لطفا با ما تماس بگیرید :support_email', 'thanks' => 'با تشکر!', + + 'comment' => [ + 'subject' => '#:order_id نظر جدیدی به سفارش شما اضافه شد', + 'dear' => ':customer_name عزیز', + 'final-summary' => 'با تشکر از علاقه شما به فروشگاه ما', + 'help' => ':support_email در صورت نیاز به هر نوع کمک ، لطفا با ما تماس بگیرید', + 'thanks' => 'با تشکر!', + ], + 'cancel' => [ 'subject' => 'تأیید سفارش را لغو کنید', 'heading' => 'سفارش لغو شد', @@ -634,6 +643,13 @@ return [ 'thanks' => 'با تشکر' ], + 'update-password' => [ + 'subject' => 'پسورد آپدیت شد', + 'dear' => ':name عزیز', + 'info' => 'شما این ایمیل را دریافت می کنید زیرا رمز خود را به روز کرده اید.', + 'thanks' => 'با تشکر' + ], + 'customer' => [ 'new' => [ 'dear' => ':customer_name عزیز', diff --git a/packages/Webkul/Shop/src/Resources/lang/it/app.php b/packages/Webkul/Shop/src/Resources/lang/it/app.php index 55716acb2..ef9bb77d1 100644 --- a/packages/Webkul/Shop/src/Resources/lang/it/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/it/app.php @@ -580,7 +580,7 @@ return [ 'thanks' => 'Grazie!', 'comment' => [ - 'subject' => 'Nuovo commento aggiunto al tuo ordine', + 'subject' => 'Nuovo commento aggiunto al tuo ordine #:order_id', 'dear' => ':customer_name', 'final-summary' => 'Grazie per aver mostrato interesse per il nostro store', 'help' => 'Se hai bisogno di aiuto contattaci all\'indirizzo :support_email', @@ -643,6 +643,13 @@ return [ 'thanks' => 'Grazie!' ], + 'update-password' => [ + 'subject' => 'Password aggiornata', + 'dear' => 'Cara :name', + 'info' => 'Ricevi questa email perché hai aggiornato la password.', + 'thanks' => 'Grazie!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Gentile :customer_name', @@ -675,7 +682,7 @@ return [ 'subject' => 'Email Iscrizione', 'greeting' => ' Benvenuto ' . config('app.name') . ' - Email Iscrizione', 'unsubscribe' => 'Cancellati', - 'summary' => 'Grazie per avere scelto di ricevere le nostre email. È passato un po\' di tempo da quando hai letto le email di ' . config('app.name') . '. Non è un nostro desidero inondare la tua casella email con le nostre comunicazioni. Se desideri comunque + 'summary' => 'Grazie per avere scelto di ricevere le nostre email. È passato un po\' di tempo da quando hai letto le email di ' . config('app.name') . '. Non è un nostro desidero inondare la tua casella email con le nostre comunicazioni. Se desideri comunque non ricevere più le nostre news clicca il bottone qui sotto.' ] ] diff --git a/packages/Webkul/Shop/src/Resources/lang/ja/app.php b/packages/Webkul/Shop/src/Resources/lang/ja/app.php index e4a461ae5..319779f83 100644 --- a/packages/Webkul/Shop/src/Resources/lang/ja/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/ja/app.php @@ -529,7 +529,16 @@ return [ 'grand-total' => '合計', 'final-summary' => '発送手続き完了後、お知らせメールを配信いたしますので、今しばらくお待ちください。', 'help' => 'お問合せなどは下記メールアドレスへご連絡ください。:support_email', - 'thanks' => 'Gracias!', + 'thanks' => 'ありがとう!', + + 'comment' => [ + 'subject' => '注文に新しいコメントが追加されました #:order_id', + 'dear' => '親愛な :customer_name', + 'final-summary' => '当店へのご関心をお寄せいただきありがとうございます', + 'help' => '何か助けが必要な場合は、私たちに連絡してください :support_email', + 'thanks' => 'ありがとう!', + ], + 'cancel' => [ 'subject' => '注文がキャンセルされました', 'heading' => '注文がキャンセルされました', @@ -548,7 +557,7 @@ return [ 'grand-total' => '合計', 'final-summary' => '私たちのお店にお越しいただき、ありがとうございます。', 'help' => 'お問合せなどは下記メールアドレスへご連絡ください。 :support_email', - 'thanks' => 'Gracias!', + 'thanks' => 'ありがとう!', ] ], 'invoice' => [ @@ -574,6 +583,12 @@ return [ 'final-summary' => 'Si no has solicitado cambiar de contraseña, ninguna acción es requerida por tu parte.', 'thanks' => 'ありがとうございます。' ], + 'update-password' => [ + 'subject' => 'パスワードが更新されました', + 'dear' => '様 :name', + 'info' => 'パスワードを更新したため、このメールをお送りしています。', + 'thanks' => 'ありがとうございます。' + ], 'customer' => [ 'new' => [ 'dear' => '様 :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/nl/app.php b/packages/Webkul/Shop/src/Resources/lang/nl/app.php index 624d2ef56..781c3d476 100644 --- a/packages/Webkul/Shop/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/nl/app.php @@ -582,7 +582,16 @@ return [ 'grand-total' => 'Eindtotaal', 'final-summary' => 'Bedankt voor het tonen van uw interesse in onze winkel.We sturen u een trackingnummer zodra het is verzonden', 'help' => 'Als u hulp nodig heeft, neem dan contact met ons op via :support_email', - 'thanks' => 'Thanks!', + 'thanks' => 'Bedankt!', + + 'comment' => [ + 'subject' => 'Nieuwe opmerking toegevoegd aan uw bestelling #:order_id', + 'dear' => 'Lieve :customer_name', + 'final-summary' => 'Bedankt voor het tonen van uw interesse in onze winkel', + 'help' => 'Als u hulp nodig heeft, neem dan contact met ons op via :support_email', + 'thanks' => 'Bedankt!', + ], + 'cancel' => [ 'subject' => 'Order Annuleren Bevestiging', 'heading' => 'Bestelling geannuleerd', @@ -639,6 +648,13 @@ return [ 'thanks' => 'Bedankt!' ], + 'update-password' => [ + 'subject' => 'Wachtwoord bijgewerkt', + 'dear' => 'Lieve :name', + 'info' => 'Je ontvangt deze e-mail omdat je je wachtwoord hebt bijgewerkt.', + 'thanks' => 'Bedankt!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Lieve :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/pl/app.php b/packages/Webkul/Shop/src/Resources/lang/pl/app.php index 8681d7adb..c16c22ce8 100644 --- a/packages/Webkul/Shop/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/pl/app.php @@ -577,6 +577,15 @@ return [ 'final-summary' => 'TDziękujemy za zainteresowanie naszym sklepem, a po podsumowaniu wyślemy ci numer śledzenia', 'help' => 'Jeśli potrzebujesz jakiejkolwiek pomocy, skontaktuj się z nami pod adresem :support_email', 'thanks' => 'Dzięki!', + + 'comment' => [ + 'subject' => 'Dodano nowy komentarz do Twojego zamówienia #:order_id', + 'dear' => 'Drogi :customer_name', + 'final-summary' => 'Dziękujemy za zainteresowanie naszym sklepem', + 'help' => 'Jeśli potrzebujesz pomocy, skontaktuj się z nami pod adresem :support_email', + 'thanks' => 'Dzięki!', + ], + 'cancel' => [ 'subject' => 'Potwierdź anulowanie zamówienia', 'heading' => 'Zamówienie anulowane', @@ -633,6 +642,13 @@ return [ 'thanks' => 'Dzięki!' ], + 'update-password' => [ + 'subject' => 'Hasło zaktualizowane', + 'dear' => 'Drogi/a :name', + 'info' => 'Otrzymujesz tę wiadomość e-mail, ponieważ zaktualizowałeś swoje hasło.', + 'thanks' => 'Dzięki!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Drogi/a :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php index 7857f8336..266ec6e97 100755 --- a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php @@ -554,6 +554,15 @@ return [ 'final-summary' => 'Obrigado por mostrar o seu interesse em nossa loja nós lhe enviaremos o número de rastreamento assim que for despachado', 'help' => 'Se você precisar de algum tipo de ajuda, por favor entre em contato conosco :support_email', 'thanks' => 'Muito Obrigado!', + + 'comment' => [ + 'subject' => 'Novo comentário adicionado ao seu pedido #: order_id', + 'dear' => 'Prezado :customer_name', + 'final-summary' => 'Obrigado por mostrar seu interesse em nossa loja', + 'help' => 'Se você precisar de algum tipo de ajuda, entre em contato conosco :support_email', + 'thanks' => 'Obrigada!', + ], + 'cancel' => [ 'subject' => 'Confirmação de Cancelamento de Pedido', 'heading' => 'Pedido Cancelado', @@ -607,6 +616,13 @@ return [ 'thanks' => 'Obrigado!' ], + 'update-password' => [ + 'subject' => 'Senha atualizada', + 'dear' => 'Caro :name', + 'info' => 'Você está recebendo este e-mail porque atualizou sua senha.', + 'thanks' => 'Obrigado!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Caro :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/lang/tr/app.php b/packages/Webkul/Shop/src/Resources/lang/tr/app.php index 91379b8ac..a6926e4ad 100644 --- a/packages/Webkul/Shop/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/tr/app.php @@ -574,9 +574,9 @@ return [ 'final-summary' => 'Bizi tercih ettiğiniz için teşekkür ederiz. Ürün kargoya teslim edildikten sonra takip numarası iletilecektir.', 'help' => 'Soru ve görüşleriniz için lütfen bizimle iletişime geçiniz: :support_email', 'thanks' => 'Teşekkürler!', - + 'comment' => [ - 'subject' => 'Siparişinize yeni yorum yapıldı.', + 'subject' => 'Siparişinize #:order_id yeni yorum yapıldı.', 'dear' => 'Sayın :customer_name', 'final-summary' => 'Bizi tercih ettiğiniz için teşekkür ederiz.', 'help' => 'Soru ve görüşleriniz için lütfen bizimle iletişime geçiniz: :support_email', @@ -639,6 +639,13 @@ return [ 'thanks' => 'Teşekkürler!' ], + 'update-password' => [ + 'subject' => 'Şifre güncellendi', + 'dear' => 'Sayın :name', + 'info' => 'Bu e-postayı, şifrenizi güncellediğiniz için alıyorsunuz.', + 'thanks' => 'Teşekkürler!' + ], + 'customer' => [ 'new' => [ 'dear' => 'Sayın :customer_name', diff --git a/packages/Webkul/Shop/src/Resources/views/emails/admin/update-password.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/admin/update-password.blade.php new file mode 100755 index 000000000..f1759daed --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/admin/update-password.blade.php @@ -0,0 +1,25 @@ +@component('shop::emails.layouts.master') + + +
+

+ {{ __('shop::app.mail.update-password.dear', ['name' => $user->name]) }}, +

+ +

+ {{ __('shop::app.mail.update-password.info') }} +

+ +

+ {{ __('shop::app.mail.update-password.thanks') }} +

+
+@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/customer/update-password.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/customer/update-password.blade.php new file mode 100755 index 000000000..4d616875f --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/customer/update-password.blade.php @@ -0,0 +1,21 @@ +@component('shop::emails.layouts.master') + + +
+

+ {{ __('shop::app.mail.update-password.dear', ['name' => $user->name]) }}, +

+ +

+ {{ __('shop::app.mail.update-password.info') }} +

+ +

+ {{ __('shop::app.mail.update-password.thanks') }} +

+
+@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/order-cancel-admin.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/order-cancel-admin.blade.php new file mode 100644 index 000000000..b768036de --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/order-cancel-admin.blade.php @@ -0,0 +1,212 @@ +@component('shop::emails.layouts.master') + + +
+
+ + {{ __('shop::app.mail.order.cancel.heading') }} +
+ +

+ {{ __('shop::app.mail.order.cancel.dear', ['customer_name' => config('mail.from.name')]) }}, +

+ +

+ {!! __('shop::app.mail.order.cancel.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

+
+ +
+ {{ __('shop::app.mail.order.cancel.summary') }} +
+ +
+
+
+ {{ __('shop::app.mail.order.cancel.shipping-address') }} +
+ +
+ {{ $order->shipping_address->company_name ?? '' }} +
+ +
+ {{ $order->shipping_address->name }} +
+ +
+ {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
+ +
+ {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
+ +
---
+ +
+ {{ __('shop::app.mail.order.cancel.contact') }} : {{ $order->shipping_address->phone }} +
+ +
+ {{ __('shop::app.mail.order.cancel.shipping') }} +
+ +
+ {{ $order->shipping_title }} +
+
+ +
+
+ {{ __('shop::app.mail.order.cancel.billing-address') }} +
+ +
+ {{ $order->billing_address->company_name ?? '' }} +
+ +
+ {{ $order->billing_address->name }} +
+ +
+ {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
+ +
+ {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
+ +
---
+ +
+ {{ __('shop::app.mail.order.cancel.contact') }} : {{ $order->billing_address->phone }} +
+ +
+ {{ __('shop::app.mail.order.cancel.payment') }} +
+ +
+ {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
+
+
+ +
+
+ + + + + + + + + + + + @foreach ($order->items as $item) + + + + + + + + + + @endforeach + +
{{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
+ {{ $item->child ? $item->child->sku : $item->sku }} + + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
+ {{ core()->formatPrice($item->price, $order->order_currency_code) }} + + {{ $item->qty_canceled }} +
+
+
+ +
+
+ {{ __('shop::app.mail.order.cancel.subtotal') }} + + {{ core()->formatPrice($order->sub_total, $order->order_currency_code) }} + +
+ +
+ {{ __('shop::app.mail.order.cancel.shipping-handling') }} + + {{ core()->formatPrice($order->shipping_amount, $order->order_currency_code) }} + +
+ + @foreach (Webkul\Tax\Helpers\Tax::getTaxRatesWithAmount($order, false) as $taxRate => $taxAmount ) +
+ {{ __('shop::app.mail.order.cancel.tax') }} {{ $taxRate }} % + + {{ core()->formatPrice($taxAmount, $order->order_currency_code) }} + +
+ @endforeach + + @if ($order->discount_amount > 0) +
+ {{ __('shop::app.mail.order.cancel.discount') }} + + {{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }} + +
+ @endif + +
+ {{ __('shop::app.mail.order.cancel.grand-total') }} + + {{ core()->formatPrice($order->grand_total, $order->order_currency_code) }} + +
+
+ +
+

+ {!! + __('shop::app.mail.order.cancel.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

+ +

+ {{ __('shop::app.mail.order.cancel.thanks') }} +

+
+
+@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/guest/compare/compare-products.blade.php b/packages/Webkul/Shop/src/Resources/views/guest/compare/compare-products.blade.php index 6867c0b9f..c00754dda 100644 --- a/packages/Webkul/Shop/src/Resources/views/guest/compare/compare-products.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/guest/compare/compare-products.blade.php @@ -91,6 +91,13 @@ : '{{ __('velocity::app.shop.general.no') }}'" > @break; + @case('file') + + + + + __ + @break; @default @break; diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php index e6c2259ea..1f2b36dcc 100644 --- a/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php @@ -10,22 +10,24 @@ {{ __('shop::app.products.qty') }} @foreach ($product->grouped_products as $groupedProduct) -
  • - - {{ $groupedProduct->associated_product->name }} + @if($groupedProduct->associated_product->getTypeInstance()->isSaleable()) +
  • + + {{ $groupedProduct->associated_product->name }} - @include ('shop::products.price', ['product' => $groupedProduct->associated_product]) - + @include ('shop::products.price', ['product' => $groupedProduct->associated_product]) + - - - - -
  • + + + + + + @endif @endforeach
    diff --git a/packages/Webkul/Ui/src/DataGrid/DataGrid.php b/packages/Webkul/Ui/src/DataGrid/DataGrid.php index 6e2bc6350..dde0da5ef 100644 --- a/packages/Webkul/Ui/src/DataGrid/DataGrid.php +++ b/packages/Webkul/Ui/src/DataGrid/DataGrid.php @@ -202,6 +202,12 @@ abstract class DataGrid unset($parsedUrl['page']); } + if (isset($parsedUrl['grand_total'])) { + foreach ($parsedUrl['grand_total'] as $key => $value) { + $parsedUrl['grand_total'][$key] = str_replace(',', '.', $parsedUrl['grand_total'][$key]); + } + } + $this->itemsPerPage = isset($parsedUrl['perPage']) ? $parsedUrl['perPage']['eq'] : $this->itemsPerPage; unset($parsedUrl['perPage']); diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php index d3ffb38ba..b1875d9a9 100644 --- a/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php @@ -8,22 +8,9 @@ @push('scripts')