Merge branch 'master' into google-captcha

This commit is contained in:
devansh bawari 2021-06-28 09:37:47 +05:30
commit 93a789134e
49 changed files with 345 additions and 115 deletions

View File

@ -48,6 +48,11 @@ return [
'root' => storage_path('app'),
],
'private' => [
'driver' => 'local',
'root' => storage_path('app/private'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),

View File

@ -1442,20 +1442,24 @@ return [
'order-number-length' => 'طول رقم الطلب',
'order-number-suffix' => 'لاحقة رقم الطلب',
'order-number-generator-class' => 'مولد رقم الطلب',
'minimum-order' => 'الحد الأدنى من إعدادات الطلب',
'minimum-order-amount' => 'الحد الأدنى للطلب',
'invoice-settings' => 'إعدادات الفاتورة',
'invoice-number' => 'إعدادات رقم الفاتورة',
'invoice-number-prefix' => 'بادئة رقم الفاتورة',
'invoice-number-length' => 'طول رقم الفاتورة',
'invoice-number-suffix' => 'لاحقة رقم الفاتورة',
'invoice-number-generator-class' => 'مولد رقم الفاتورة',
'minimum-order' => 'الحد الأدنى من إعدادات الطلب',
'minimum-order-amount' => 'الحد الأدنى للطلب',
'payment-terms' => 'شروط الدفع',
'due-duration' => 'مدة الاستحقاق',
'due-duration-day' => ':due-duration يوم',
'due-duration-days' => ':due-duration أيام',
'invoice-slip-design' => 'تصميم قسيمة الفاتورة',
'logo' => 'شعار',
'default' => 'إفتراضي',
'sandbox' => 'صندوق الرمل',
'all-channels' => 'الكل',
'all-locales' => 'الكل',
'invoice-slip-design' => 'تصميم قسيمة الفاتورة',
'logo' => 'شعار',
'storefront' => 'واجهة المحل',
'default-list-mode' => 'وضع القائمة الافتراضي',
'grid' => 'جريد',

View File

@ -1450,20 +1450,24 @@ return [
'order-number-length' => 'Auftragsnummer Länge',
'order-number-suffix' => 'Auftragsnummer Suffix',
'order-number-generator-class' => 'Bestell nummern generator',
'minimum-order' => 'Einstellungen für die Mindestbestellmenge',
'minimum-order-amount' => 'Mindestbestellmenge',
'invoice-settings' => 'Rechnungseinstellungen',
'invoice-number' => 'Rechnungsnummerneinstellungen',
'invoice-number-prefix' => 'Rechnungsnummer-Präfix',
'invoice-number-length' => 'Länge der Rechnungsnummer',
'invoice-number-suffix' => 'Rechnungsnummer-Suffix',
'invoice-number-generator-class' => 'Rechnungsnummerngenerator',
'minimum-order' => 'Einstellungen für die Mindestbestellmenge',
'minimum-order-amount' => 'Mindestbestellmenge',
'payment-terms' => 'Zahlungsbedingungen',
'due-duration' => 'Fälligkeitsdauer',
'due-duration-day' => ':due-duration Tag',
'due-duration-days' => ':due-duration Tage',
'invoice-slip-design' => 'Rechnungsdesign',
'logo' => 'Logo',
'default' => 'Standard',
'sandbox' => 'Sandbox',
'all-channels' => 'Alle',
'all-locales' => 'Alle',
'invoice-slip-design' => 'Rechnungsdesign',
'logo' => 'Logo',
'store-name' => 'Geschäftsname',
'vat-number' => 'Umsatzsteuer-Identifikationsnummer',
'contact-number' => 'Kontakt Nummer',

View File

@ -202,7 +202,7 @@ return [
'channel-name' => 'Channel Name',
'billed-to' => 'Billed To',
'shipped-to' => 'Shipped To',
'order-id' => 'Order Id',
'order-id' => 'Order ID',
'invoice-id' => 'Invoice number',
'invoice-date' => 'Invoice Date',
'total-qty' => 'Total Qty',
@ -252,7 +252,7 @@ return [
'update-status' => 'Update Status',
'subject' => 'Subject',
'date' => 'Date',
'transaction-id' => 'Transaction Id',
'transaction-id' => 'Transaction ID',
'transaction-date' => 'Transaction Date',
],
@ -411,11 +411,11 @@ return [
'invoices' => [
'title' => 'Invoices',
'id' => 'Id',
'id' => 'ID',
'invoice' => 'Invoice',
'invoice-id' => 'Invoice Id',
'invoice-id' => 'Invoice ID',
'date' => 'Invoice Date',
'order-id' => 'Order Id',
'order-id' => 'Order ID',
'customer-name' => 'Customer Name',
'status' => 'Status',
'amount' => 'Amount',
@ -439,9 +439,9 @@ return [
'shipments' => [
'title' => 'Shipments',
'id' => 'Id',
'id' => 'ID',
'date' => 'Shipment Date',
'order-id' => 'Order Id',
'order-id' => 'Order ID',
'order-date' => 'Order date',
'customer-name' => 'Customer Name',
'total-qty' => 'Total Qty',
@ -466,10 +466,10 @@ return [
'refunds' => [
'title' => 'Refunds',
'id' => 'Id',
'id' => 'ID',
'add-title' => 'Create Refund',
'save-btn-title' => 'Refund',
'order-id' => 'Order Id',
'order-id' => 'Order ID',
'qty-ordered' => 'Qty Ordered',
'qty-to-refund' => 'Qty To Refund',
'refund-shipping' => 'Refund Shipping',
@ -491,15 +491,15 @@ return [
'transactions' => [
'title' => 'Transactions',
'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'id' => 'ID',
'transaction-id' => 'Transaction ID',
'payment-method' => 'Payment method',
'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
'invoice-id' => 'Invoice Id',
'order-id' => 'Order ID',
'invoice-id' => 'Invoice ID',
'status' => 'Status',
'created-at' => 'Created At',
'transaction-details' => 'Transaction Details',
@ -956,7 +956,7 @@ return [
'addresses' => [
'title' => ':customer_name\'s Addresses List',
'vat_id' => 'Vat id',
'vat_id' => 'Vat ID',
'create-title' => 'Create Customer\'s Address',
'edit-title' => 'Update Customer\'s Address',
'title-orders' => ':customer_name\'s Orders List',
@ -1459,21 +1459,25 @@ return [
'order-number-length' => 'Order Number Length',
'order-number-suffix' => 'Order Number Suffix',
'order-number-generator-class' => 'Order Number Generator',
'minimum-order' => 'Minimum Order Settings',
'minimum-order-amount' => 'Minimum Order Amount',
'invoice-settings' => 'Invoice Settings',
'invoice-number' => 'Invoice Number Settings',
'invoice-number-prefix' => 'Invoice Number Prefix',
'invoice-number-length' => 'Invoice Number Length',
'invoice-number-suffix' => 'Invoice Number Suffix',
'invoice-number-generator-class' => 'Invoice Number Generator',
'minimum-order' => 'Minimum Order Settings',
'minimum-order-amount' => 'Minimum Order Amount',
'payment-terms' => 'Payment Terms',
'due-duration' => 'Due Duration',
'due-duration-day' => ':due-duration Day',
'due-duration-days' => ':due-duration Days',
'invoice-slip-design' => 'Invoice Slip Design',
'logo' => 'Logo',
'default' => 'Default',
'sandbox' => 'Sandbox',
'all-channels' => 'All Channels',
'all-locales' => 'All Locales',
'all-customer-groups' => 'All Customer groups',
'invoice-slip-design' => 'Invoice Slip Design',
'logo' => 'Logo',
'storefront' => 'Storefront',
'default-list-mode' => 'Default List Mode',
'grid' => 'Grid',
@ -1509,7 +1513,7 @@ return [
'custom-css' => 'Custom CSS',
'custom-javascript' => 'Custom Javascript',
'paypal-smart-button' => 'PayPal',
'client-id' => 'Client Id',
'client-id' => 'Client ID',
'client-id-info' => 'Use "sb" for testing.',
'client-secret' => 'Client Secret',
'client-secret-info' => 'Add your secret key here',

View File

@ -1454,21 +1454,25 @@ return [
'order-number-length' => 'Largo para Pedido #',
'order-number-suffix' => 'Sufijo para Pedido #',
'order-number-generator-class' => 'Generado de Números de Pedido',
'minimum-order' => 'Configuración de Pedido Mínimo',
'minimum-order-amount' => 'Cantidad Mínima de Pedido',
'invoice-settings' => 'Configuración de facturas',
'invoice-number' => 'Configuración del número de factura',
'invoice-number-prefix' => 'Prefijo de número de factura',
'invoice-number-length' => 'Longitud del número de factura',
'invoice-number-suffix' => 'Sufijo de número de factura',
'invoice-number-generator-class' => 'Generador de números de facturas',
'minimum-order' => 'Configuración de Pedido Mínimo',
'minimum-order-amount' => 'Cantidad Mínima de Pedido',
'payment-terms' => 'Términos de pago',
'due-duration' => 'Duración debida',
'due-duration-day' => ':due-duration Día',
'due-duration-days' => ':due-duration Días',
'invoice-slip-design' => 'Diseño de Comprobande de Factura',
'logo' => 'Logo',
'default' => 'Predeterminado',
'sandbox' => 'Sandbox',
'all-channels' => 'Todos los Canales',
'all-locales' => 'Todos los Idiomas',
'all-customer-groups' => 'Todos los grupos de Clientes',
'invoice-slip-design' => 'Diseño de Comprobande de Factura',
'logo' => 'Logo',
'storefront' => 'Storefront',
'default-list-mode' => 'Modo de Lista Predeterminado',
'grid' => 'Cuadrícula',

View File

@ -1413,15 +1413,15 @@ return [
'locale-options' => 'گزینه های واحد',
'weight-unit' => 'واحد وزن',
'admin-page-limit' => 'موارد پیش فرض در هر صفحه (مدیر)',
'email-settings' => 'Email Settings',
'email-sender-name' => 'Email Sender Name',
'email-sender-name-tip' => 'This name will be displayed in the customers inbox',
'shop-email-from' => 'Shop Email Address',
'shop-email-from-tip' => 'The email address of this channel to send emails to your customers',
'admin-name' => 'Admin Name',
'admin-name-tip' => 'This name will be displayed in all admin emails',
'admin-email' => 'Admin Email',
'admin-email-tip' => 'The email address of the admin for this channel to receive emails',
'email-settings' => 'تنظیمات ایمیل',
'email-sender-name' => 'نام فرستنده ایمیل',
'email-sender-name-tip' => 'این نام در صندوق ورودی مشتریان نمایش داده می شود',
'shop-email-from' => 'آدرس ایمیل خرید کنید',
'shop-email-from-tip' => 'آدرس ایمیل این کانال برای ارسال ایمیل به مشتریان شما',
'admin-name' => 'نام مدیر',
'admin-name-tip' => 'این نام در همه ایمیل های سرپرست نمایش داده می شود',
'admin-email' => 'ایمیل مدیر',
'admin-email-tip' => 'آدرس ایمیل مدیر این کانال برای دریافت ایمیل',
'design' => 'طراحی',
'admin-logo' => 'لوگو مدیر',
'logo-image' => 'تصویر لوگو',
@ -1434,24 +1434,28 @@ return [
'order-number-length' => 'طول شماره سفارش',
'order-number-suffix' => 'تعداد کافی شماره سفارش',
'order-number-generator-class' => 'تولید کننده شماره سفارش',
'minimum-order' => 'حداقل تنظیمات سفارش',
'minimum-order-amount' => 'حداقل مقدار سفارش',
'invoice-settings' => 'تنظیمات فاکتور',
'invoice-number' => 'تنظیمات شماره فاکتور',
'invoice-number-prefix' => 'پیش شماره شماره فاکتور',
'invoice-number-length' => 'طول شماره فاکتور',
'invoice-number-suffix' => 'پسوند شماره فاکتور',
'invoice-number-generator-class' => 'تولید کننده شماره فاکتور',
'minimum-order' => 'حداقل تنظیمات سفارش',
'minimum-order-amount' => 'حداقل مقدار سفارش',
'payment-terms' => 'شرایط پرداخت',
'due-duration' => 'مدت زمان مقرر',
'due-duration-day' => ':due-duration روز',
'due-duration-days' => ':due-duration روزها',
'invoice-slip-design' => 'طرح لغزش فاکتور',
'logo' => 'لوگو',
'default' => 'پیش فرض',
'sandbox' => 'Sandbox',
'sandbox' => 'جعبه شنی',
'all-channels' => 'همه',
'all-locales' => 'همه',
'invoice-slip-design' => 'Invoice Slip Design',
'logo' => 'Logo',
'storefront' => 'Storefront',
'default-list-mode' => 'Default List Mode',
'grid' => 'Grid',
'list' => 'List',
'storefront' => 'ویترین',
'default-list-mode' => 'حالت لیست پیش فرض',
'grid' => 'توری',
'list' => 'لیست کنید',
'products-per-page' => 'Products Per Page',
'sort-by' => 'Sort By',
'from-z-a' => 'From Z-A',

View File

@ -1442,21 +1442,25 @@ return [
'order-number-length' => 'Lunghezza Numero Ordine',
'order-number-suffix' => 'Suffisso Numero Ordine',
'order-number-generator-class' => 'Generatore di numeri dordine',
'minimum-order' => 'Impostazioni dell\'ordine minimo',
'minimum-order-amount' => 'Importo minimo dell\'ordine',
'invoice-settings' => 'Impostazioni fattura',
'invoice-number' => 'Impostazioni numero fattura',
'invoice-number-prefix' => 'Prefisso numero fattura',
'invoice-number-length' => 'Lunghezza numero fattura',
'invoice-number-suffix' => 'Suffisso numero fattura',
'invoice-number-generator-class' => 'Generatore di numeri di fattura',
'minimum-order' => 'Impostazioni dell\'ordine minimo',
'minimum-order-amount' => 'Importo minimo dell\'ordine',
'payment-terms' => 'Termini di pagamento',
'due-duration' => 'Durata dovuta',
'due-duration-day' => ':due-duration Giorno',
'due-duration-days' => ':due-duration giorni',
'invoice-slip-design' => 'Design della Fattura',
'logo' => 'Logo',
'default' => 'Default',
'sandbox' => 'Sandbox',
'all-channels' => 'Tutti',
'all-locales' => 'Tutti',
'all-customer-groups' => 'tutti i Gruppi di Clienti',
'invoice-slip-design' => 'Design della Fattura',
'logo' => 'Logo',
'storefront' => 'Storefront',
'default-list-mode' => 'Modalità predefinita elenchiDefault List Mode',
'grid' => 'Griglia',

View File

@ -1436,20 +1436,24 @@ return [
'order-number-length' => 'Bestelnummer Lengte',
'order-number-suffix' => 'Achtervoegsel bestelnummer',
'order-number-generator-class' => 'Ordernummer Generator',
'minimum-order' => 'Minimale bestelling instellen',
'minimum-order-amount' => 'Minimaal bedrag van de bestelling',
'invoice-settings' => 'Factuurinstellingen',
'invoice-number' => 'Instellingen factuurnummer',
'invoice-number-prefix' => 'Voorvoegsel factuurnummer',
'invoice-number-length' => 'Lengte factuurnummer',
'invoice-number-suffix' => 'Achtervoegsel factuurnummer',
'invoice-number-generator-class' => 'Factuurnummergenerator',
'minimum-order' => 'Minimale bestelling instellen',
'minimum-order-amount' => 'Minimaal bedrag van de bestelling',
'payment-terms' => 'Betaalvoorwaarden',
'due-duration' => 'Vervaltijd:',
'due-duration-day' => ':due-duration Dag',
'due-duration-days' => ':due-duration dagen',
'invoice-slip-design' => 'Invoice Slip Design',
'logo' => 'Logo',
'default' => 'Standaard',
'sandbox' => 'Sandbox',
'all-channels' => 'Alles',
'all-locales' => 'Alles',
'invoice-slip-design' => 'Invoice Slip Design',
'logo' => 'Logo',
'storefront' => 'Storefront',
'default-list-mode' => 'Standaard product weergavemodus',
'grid' => 'Raster',

View File

@ -1439,21 +1439,25 @@ return [
'order-number-length' => 'Długość numeru zamówienia',
'order-number-suffix' => 'Sufiks numeru zamówienia”',
'order-number-generator-class' => 'Generator numeru zamówienia',
'minimum-order' => 'Minimalne ustawienia zamówienia',
'minimum-order-amount' => 'Minimalna kwota zamówienia',
'invoice-settings' => 'Ustawienia faktury',
'invoice-number' => 'Ustawienia numeru faktury',
'invoice-number-prefix' => 'Prefiks numeru faktury',
'invoice-number-length' => 'Długość numeru faktury',
'invoice-number-suffix' => 'Sufiks numeru faktury',
'invoice-number-generator-class' => 'Generator numerów faktur',
'minimum-order' => 'Minimalne ustawienia zamówienia',
'minimum-order-amount' => 'Minimalna kwota zamówienia',
'payment-terms' => 'Zasady płatności',
'due-duration' => 'Wymagany czas trwania',
'due-duration-day' => ':due-duration Dzień',
'due-duration-days' => ':due-duration Dni',
'invoice-slip-design' => 'Wzór wydruku faktury',
'logo' => 'Logo',
'default' => 'Domyślna',
'sandbox' => 'Piaskownica',
'all-channels' => 'Wszystkie kanały',
'all-locales' => 'Wszystkie ustawienia regionalne',
'all-customer-groups' => 'Wszystkie grupy klientów',
'invoice-slip-design' => 'Wzór wydruku faktury',
'logo' => 'Logo',
'favicon' => 'Favicon',
'seo' => 'SEO',
'rich-snippets' => 'Rich Snippets',

View File

@ -1440,21 +1440,25 @@ return [
'order-number-length' => 'Tamanho do Número do Pedido',
'order-number-suffix' => 'Sufixo do Número de Pedido',
'order-number-generator-class' => 'Gerador de número de pedido',
'minimum-order' => 'Configurações de pedido mínimo ',
'minimum-order-amount' => 'Quantidade Mínima do Pedido',
'invoice-settings' => 'Configurações de fatura',
'invoice-number' => 'Configurações de número de fatura',
'invoice-number-prefix' => 'Prefixo do número da fatura',
'invoice-number-length' => 'Comprimento do número da fatura',
'invoice-number-suffix' => 'Sufixo do número da fatura',
'invoice-number-generator-class' => 'Gerador de número de fatura',
'minimum-order' => 'Configurações de pedido mínimo ',
'minimum-order-amount' => 'Quantidade Mínima do Pedido',
'payment-terms' => 'Termos de pagamento',
'due-duration' => 'Duração devida',
'due-duration-day' => ':due-duration Dia',
'due-duration-days' => ':due-duration Dias',
'invoice-slip-design' => 'Design da Nota do Pedido',
'logo' => 'Logotipo',
'default' => 'Padrão',
'sandbox' => 'Sandbox',
'all-channels' => 'Todos',
'all-locales' => 'Todos',
'sandbox' => 'Sandbox',
'invoice-slip-design' => 'Design da Nota do Pedido',
'logo' => 'Logo',
'storefront' => 'Storefront',
'default-list-mode' => 'Default List Mode',
'grid' => 'Grid',

View File

@ -1426,20 +1426,24 @@ return [
'order-number-length' => 'Numara Uzunluğu',
'order-number-suffix' => 'Numara Son Eki',
'order-number-generator-class' => 'Sipariş Numarası Üreticisi',
'minimum-order' => 'Minimum Sipariş Ayarları',
'minimum-order-amount' => 'Minimum Sipariş Tutarı',
'invoice-settings' => 'Fatura Ayarları',
'invoice-number' => 'Fatura Numarası Ayarları',
'invoice-number-prefix' => 'Fatura Numarası Ön Eki',
'invoice-number-length' => 'Fatura Numarası Uzunluğu',
'invoice-number-suffix' => 'Fatura Numarası Eki',
'invoice-number-generator-class' => 'Fatura Numarası Oluşturucu',
'minimum-order' => 'Minimum Sipariş Ayarları',
'minimum-order-amount' => 'Minimum Sipariş Tutarı',
'payment-terms' => 'Ödeme şartları',
'due-duration' => 'Vade Süresi',
'due-duration-day' => ':due-duration Gün',
'due-duration-days' => ':due-duration Günler',
'invoice-slip-design' => 'Fatura Tasarımı',
'logo' => 'logo',
'default' => 'Varsayılan',
'sandbox' => 'Havuz',
'all-channels' => 'Tümü',
'all-locales' => 'Tümü',
'invoice-slip-design' => 'Fatura Tasarımı',
'logo' => 'logo',
'storefront' => 'Mağaza Arayüzü',
'default-list-mode' => 'Varsayılan Listeleme Modu',
'grid' => 'Tablo',

View File

@ -160,16 +160,28 @@
<span class="value">#{{ $invoice->increment_id ?? $invoice->id }}</span>
</div>
<div class="row">
<span class="label">{{ __('admin::app.sales.invoices.date') }} -</span>
<span class="value">{{ core()->formatDate($invoice->created_at, 'd-m-Y') }}</span>
</div>
<div class="row">
<span class="label">{{ __('admin::app.sales.invoices.order-id') }} -</span>
<span class="value">#{{ $invoice->order->increment_id }}</span>
</div>
<div class="row">
<span class="label">{{ __('admin::app.sales.invoices.order-date') }} </span>
<span class="label">{{ __('admin::app.sales.invoices.order-date') }} -</span>
<span class="value">{{ $invoice->created_at->format('d-m-Y') }}</span>
</div>
@if ($invoice->hasPaymentTerm())
<div class="row">
<span class="label">{{ __('admin::app.admin.system.payment-terms') }} -</span>
<span class="value">{{ $invoice->getFormattedPaymentTerm() }}</span>
</div>
@endif
<div class="table address">
<table>
<thead>

View File

@ -3,22 +3,24 @@
namespace Webkul\Product\Repositories;
use Illuminate\Support\Facades\Storage;
use Webkul\Core\Eloquent\Repository;
use Illuminate\Support\Str;
use Webkul\Core\Eloquent\Repository;
class ProductDownloadableLinkRepository extends Repository
{
/**
* Specify Model class name
* Specify model class name.
*
* @return string
*/
function model()
public function model()
{
return 'Webkul\Product\Contracts\ProductDownloadableLink';
}
/**
* Upload.
*
* @param array $data
* @param integer $productId
* @return array
@ -28,7 +30,7 @@ class ProductDownloadableLinkRepository extends Repository
foreach ($data as $type => $file) {
if (request()->hasFile($type)) {
return [
$type => $path = request()->file($type)->store('product_downloadable_links/' . $productId),
$type => $path = request()->file($type)->store('product_downloadable_links/' . $productId, 'private'),
$type . '_name' => $file->getClientOriginalName(),
$type . '_url' => Storage::url($path),
];
@ -39,8 +41,10 @@ class ProductDownloadableLinkRepository extends Repository
}
/**
* Save links.
*
* @param array $data
* @param \Webkul\Product\Contracts\Product $product
* @param \Webkul\Product\Models\Product $product
* @return void
*/
public function saveLinks(array $data, $product)

View File

@ -107,6 +107,19 @@ return [
'locale_based' => true,
],
]
], [
'key' => 'sales.invoice_setttings.payment_terms',
'name' => 'admin::app.admin.system.payment-terms',
'sort' => 1,
'fields' => [
[
'name' => 'due_duration',
'title' => 'admin::app.admin.system.due-duration',
'type' => 'text',
'validation' => 'numeric',
'channel_based' => true,
],
]
], [
'key' => 'sales.invoice_setttings.invoice_slip_design',
'name' => 'admin::app.admin.system.invoice-slip-design',

View File

@ -4,11 +4,24 @@ namespace Webkul\Sales\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Sales\Contracts\Invoice as InvoiceContract;
use Webkul\Sales\Traits\PaymentTerm;
class Invoice extends Model implements InvoiceContract
{
use PaymentTerm;
/**
* The attributes that aren't mass assignable.
*
* @var string[]|bool
*/
protected $guarded = ['id', 'created_at', 'updated_at'];
/**
* Invoice status.
*
* @var array
*/
protected $statusLabel = [
'pending' => 'Pending',
'paid' => 'Paid',
@ -16,7 +29,7 @@ class Invoice extends Model implements InvoiceContract
];
/**
* Returns the status label from status code
* Returns the status label from status code.
*/
public function getStatusLabelAttribute()
{

View File

@ -3,8 +3,8 @@
namespace Webkul\Sales\Repositories;
use Illuminate\Container\Container as App;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Event;
use Webkul\Core\Eloquent\Repository;
use Webkul\Sales\Contracts\Invoice;
use Webkul\Sales\Generators\InvoiceSequencer;
@ -12,28 +12,28 @@ use Webkul\Sales\Generators\InvoiceSequencer;
class InvoiceRepository extends Repository
{
/**
* OrderRepository object
* Order repository instance.
*
* @var \Webkul\Sales\Repositories\OrderRepository
*/
protected $orderRepository;
/**
* OrderItemRepository object
* Order's item repository instance.
*
* @var \Webkul\Sales\Repositories\OrderItemRepository
*/
protected $orderItemRepository;
/**
* InvoiceItemRepository object
* Invoice's item repository instance.
*
* @var \Webkul\Sales\Repositories\InvoiceItemRepository
*/
protected $invoiceItemRepository;
/**
* DownloadableLinkPurchasedRepository object
* Downloadable link purchased repository instance.
*
* @var \Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository
*/
@ -54,8 +54,7 @@ class InvoiceRepository extends Repository
InvoiceItemRepository $invoiceItemRepository,
DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository,
App $app
)
{
) {
$this->orderRepository = $orderRepository;
$this->orderItemRepository = $orderItemRepository;
@ -70,17 +69,18 @@ class InvoiceRepository extends Repository
}
/**
* Specify Model class name
* Specify model class name.
*
* @return string
*/
function model()
public function model()
{
return Invoice::class;
}
/**
* Create invoice.
*
* @param array $data
* @param string $invoiceState
* @param string $orderState
@ -170,7 +170,8 @@ class InvoiceRepository extends Repository
'additional' => $childOrderItem->additional,
]);
if ($childOrderItem->product
if (
$childOrderItem->product
&& ! $childOrderItem->getTypeInstance()->isStockable()
&& $childOrderItem->getTypeInstance()->showQuantityBox()
) {
@ -184,7 +185,8 @@ class InvoiceRepository extends Repository
$this->orderItemRepository->collectTotals($childOrderItem);
}
} elseif ($orderItem->product
} elseif (
$orderItem->product
&& ! $orderItem->getTypeInstance()->isStockable()
&& $orderItem->getTypeInstance()->showQuantityBox()
) {
@ -234,8 +236,10 @@ class InvoiceRepository extends Repository
}
/**
* @param \Webkul\Sales\Contracts\Invoice $invoice
* @return \Webkul\Sales\Contracts\Invoice
* Collect totals.
*
* @param \Webkul\Sales\Models\Invoice $invoice
* @return \Webkul\Sales\Models\Invoice
*/
public function collectTotals($invoice)
{

View File

@ -0,0 +1,51 @@
<?php
namespace Webkul\Sales\Traits;
trait PaymentTerm
{
/**
* Wether the core config have payment term or not.
*
* @return bool
*/
public function hasPaymentTerm()
{
return $this->getPaymentTerm()
? true : false;
}
/**
* Get payment term from the core config in days.
*
* @return int
*/
public function getPaymentTerm()
{
static $dueDuration = 0;
if ($dueDuration) {
return $dueDuration;
}
return $dueDuration = (int) core()->getConfigData('sales.invoice_setttings.payment_terms.due_duration');
}
/**
* Formatted payment terms for invoice. Handled singular and plural case also.
*
* @return string
*/
public function getFormattedPaymentTerm()
{
$dueDuration = $this->getPaymentTerm();
if ($dueDuration > 1) {
return __('admin::app.admin.system.due-duration-days', ['due-duration' => $dueDuration]);
}
return $dueDuration
? __('admin::app.admin.system.due-duration-day', ['due-duration' => $dueDuration])
: __('admin::app.admin.system.due-duration-day', ['due-duration' => 0]);
}
}

View File

@ -89,7 +89,11 @@ class DownloadableProductController extends Controller
}
if ($downloadableLinkPurchased->type == 'file') {
return Storage::download($downloadableLinkPurchased->file);
$privateDisk = Storage::disk('private');
return $privateDisk->exists($downloadableLinkPurchased->file)
? $privateDisk->download($downloadableLinkPurchased->file)
: abort(404);
} else {
$fileName = $name = substr($downloadableLinkPurchased->url, strrpos($downloadableLinkPurchased->url, '/') + 1);;

View File

@ -96,7 +96,11 @@ class ProductController extends Controller
$productDownloadableLink = $this->productDownloadableLinkRepository->findOrFail(request('id'));
if ($productDownloadableLink->sample_type == 'file') {
return Storage::download($productDownloadableLink->sample_file);
$privateDisk = Storage::disk('private');
return $privateDisk->exists($productDownloadableLink->sample_file)
? $privateDisk->download($productDownloadableLink->sample_file)
: abort(404);
} else {
$fileName = $name = substr($productDownloadableLink->sample_url, strrpos($productDownloadableLink->sample_url, '/') + 1);

View File

@ -330,6 +330,8 @@ return [
'invoice-id' => 'رقم الفاتورة',
'order-id' => 'ترتيب ',
'order-date' => 'تاريخ الطلب',
'invoice-date' => 'تاريخ الفاتورة',
'payment-terms' => 'شروط الدفع',
'bill-to' => 'الفاتورة إلى',
'ship-to' => 'يشحن إلى',
'contact' => 'معلومات الإتصال',

View File

@ -330,6 +330,8 @@ return [
'invoice-id' => 'Rechnungsnummer',
'order-id' => 'Auftragsnummer',
'order-date' => 'Bestelldatum',
'invoice-date' => 'Rechnungsdatum',
'payment-terms' => 'Zahlungsbedingungen',
'bill-to' => 'Rechnung an',
'ship-to' => 'Versenden an',
'contact' => 'Kontakt',

View File

@ -331,6 +331,8 @@ return [
'invoice-id' => 'Invoice Id',
'order-id' => 'Order Id',
'order-date' => 'Order Date',
'invoice-date' => 'Invoice Date',
'payment-terms' => 'Payment Terms',
'bill-to' => 'Bill to',
'ship-to' => 'Ship to',
'contact' => 'Contact',

View File

@ -330,6 +330,8 @@ return [
'invoice-id' => 'Factura Id',
'order-id' => 'Pedido Id',
'order-date' => 'Fecha pedido',
'invoice-date' => 'Fecha de la factura',
'payment-terms' => 'Términos de pago',
'bill-to' => 'Facturar a',
'ship-to' => 'Envío a',
'contact' => 'Contacto',

View File

@ -327,6 +327,8 @@ return [
'invoice-id' => 'شناسه فاکتور',
'order-id' => 'شماره سفارش',
'order-date' => 'تاریخ سفارش',
'invoice-date' => 'تاریخ فاکتور',
'payment-terms' => 'شرایط پرداخت',
'bill-to' => 'بیل به',
'ship-to' => 'حمل به',
'contact' => 'تماس',

View File

@ -328,6 +328,8 @@ return [
'invoice-id' => 'Fattura Nro',
'order-id' => 'Ordine Nro',
'order-date' => 'Ordine Data',
'invoice-date' => 'Data fattura',
'payment-terms' => 'Termini di pagamento',
'bill-to' => 'Fatturato a',
'ship-to' => 'Spedito a',
'contact' => 'Contatto',

View File

@ -310,6 +310,8 @@ return [
'invoice-id' => '領収書番号',
'order-id' => '注文番号',
'order-date' => '注文日',
'invoice-date' => '請求書の日付',
'payment-terms' => '支払い条件',
'bill-to' => '請求先',
'ship-to' => '送り先',
'contact' => '連絡先',

View File

@ -335,6 +335,8 @@ return [
'invoice-id' => 'Factuur-id',
'order-id' => 'Order ID',
'order-date' => 'Besteldatum',
'invoice-date' => 'Factuur datum',
'payment-terms' => 'Betaalvoorwaarden',
'bill-to' => 'Rekening naar',
'ship-to' => 'Verzend naar',
'contact' => 'Contact',

View File

@ -328,6 +328,8 @@ return [
'invoice-id' => 'Identyfikator faktury',
'order-id' => 'Identyfikator zamówienia',
'order-date' => 'Data zamówienia',
'invoice-date' => 'Data wystawienia faktury',
'payment-terms' => 'Zasady płatności',
'bill-to' => 'Bill to',
'ship-to' => 'Dostawa do',
'contact' => 'Kontakt',

View File

@ -323,6 +323,8 @@ return [
'invoice-id' => 'Fatura Id',
'order-id' => 'Pedido Id',
'order-date' => 'Pedido Date',
'invoice-date' => 'Data da fatura',
'payment-terms' => 'Termos de pagamento',
'bill-to' => 'Cobrança de',
'ship-to' => 'Enviar para',
'contact' => 'Contato',

View File

@ -327,6 +327,8 @@ return [
'invoice-id' => 'Fatura No',
'order-id' => 'Sipariş No',
'order-date' => 'Sipariş Tarihi',
'invoice-date' => 'Fatura tarihi',
'payment-terms' => 'Ödeme şartları',
'bill-to' => 'Fatura Edilen',
'ship-to' => 'Teslim Edilen',
'contact' => 'İletişim',

View File

@ -163,6 +163,11 @@
<span class="value">#{{ $invoice->increment_id ?? $invoice->id }}</span>
</div>
<div class="row">
<span class="label">{{ __('shop::app.customer.account.order.view.invoice-date') }} -</span>
<span class="value">{{ core()->formatDate($invoice->created_at, 'd-m-Y') }}</span>
</div>
<div class="row">
<span class="label">{{ __('shop::app.customer.account.order.view.order-id') }} -</span>
<span class="value">#{{ $invoice->order->increment_id }}</span>
@ -173,6 +178,13 @@
<span class="value">{{ core()->formatDate($invoice->order->created_at, 'd-m-Y') }}</span>
</div>
@if ($invoice->hasPaymentTerm())
<div class="row">
<span class="label">{{ __('shop::app.customer.account.order.view.payment-terms') }} -</span>
<span class="value">{{ $invoice->getFormattedPaymentTerm() }}</span>
</div>
@endif
<div class="table address">
<table>
<thead>

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/ui.js": "/js/ui.js?id=1a2a11fc54d0a5962a66",
"/js/ui.js": "/js/ui.js?id=3e481e3d97031123114f",
"/css/ui.css": "/css/ui.css?id=87c15a3e7af4ab272377"
}

View File

@ -121,6 +121,10 @@ trait ProvideDataGridPlus
'allLocales' => __('admin::app.admin.system.all-locales'),
'allCustomerGroups' => __('admin::app.admin.system.all-customer-groups'),
'search' => __('ui::app.datagrid.search'),
'searchTitle' => __('ui::app.datagrid.search-title'),
'channel' => __('ui::app.datagrid.channel'),
'locale' => __('ui::app.datagrid.locale'),
'customerGroup' => __('ui::app.datagrid.customer-group'),
'itemsPerPage' => __('ui::app.datagrid.items-per-page'),
'filter' => __('ui::app.datagrid.filter'),
'column' => __('ui::app.datagrid.column'),

View File

@ -987,7 +987,7 @@
},
searchCollection: function(searchValue) {
this.formURL("search", "all", searchValue, "Search");
this.formURL("search", "all", searchValue, this.translations.searchTitle);
},
setParamsAndUrl: function() {
@ -1289,10 +1289,10 @@
switch (obj.column) {
case "search":
obj.label = "Search";
obj.label = this.translations.searchTitle;
break;
case "channel":
obj.label = "Channel";
obj.label = this.translations.channel;
if ("channels" in this.extraFilters) {
obj.prettyValue = this.extraFilters[
"channels"
@ -1304,7 +1304,7 @@
}
break;
case "locale":
obj.label = "Locale";
obj.label = this.translations.locale;
if ("locales" in this.extraFilters) {
obj.prettyValue = this.extraFilters["locales"].find(
locale => locale.code === obj.val
@ -1316,7 +1316,7 @@
}
break;
case "customer_group":
obj.label = "Customer Group";
obj.label = this.translations.customerGroup;
if ("customer_groups" in this.extraFilters) {
obj.prettyValue = this.extraFilters[
"customer_groups"

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'بعض الحقل المطلوب هو لاغ ، رجاء تفقد عمود ، حالة و قيمة صحيح',
'click_on_action' => 'هل تريد حقا أن تؤدي هذا العمل؟',
'search' => '...ابحث هنا',
'search-title' => 'يبحث',
'channel' => 'قناة',
'locale' => 'لغة',
'customer-group' => 'مجموعة العملاء',
'filter' => 'منقي',
'column' => 'حدد العمود',
'condition' => 'حدد الشرط',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Einige der erforderlichen Felder sind null. Überprüfen Sie Spalte, Zustand und Wert ordnungsgemäß',
'click_on_action' => 'Möchten Sie diese Aktion wirklich ausführen?',
'search' => 'Suchen ...',
'search-title' => 'Suche',
'channel' => 'Kanal',
'locale' => 'Gebietsschema',
'customer-group' => 'Kundengruppe',
'filter' => 'Filter',
'column' => 'Wählen Sie eine Spalte',
'condition' => 'Wählen Sie eine Bedingung',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Some of the required field is null, please check column, condition and value properly',
'click_on_action' => 'Do you really want to perform this action?',
'search' => 'Search Here...',
'search-title' => 'Search',
'channel' => 'Channel',
'locale' => 'Locale',
'customer-group' => 'Customer Group',
'filter' => 'Filter',
'column' => 'Select Column',
'condition' => 'Select Condition',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Algunos de los campos obligatorios son nulos, verifique la columna, la condición y el valor correctamente',
'click_on_action' => '¿De verdad quieres realizar esta acción?',
'search' => 'Busque Aquí...',
'search-title' => 'Buscar',
'channel' => 'Canal',
'locale' => 'Lugar',
'customer-group' => 'grupo de clientes',
'filter' => 'Filtrar',
'column' => 'Seleccione la columna',
'condition' => 'Seleccionar condición',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'برخی از زمینه های مورد نیاز خالی است ، لطفا ستون ، شرایط و ارزش را به درستی بررسی کنید',
'click_on_action' => 'آیا واقعاً می خواهید این عمل را انجام دهید؟',
'search' => 'جستجو در اینجا ...',
'search-title' => 'جستجو کردن',
'channel' => 'کانال',
'locale' => 'محلی',
'customer-group' => 'گروه مشتریان',
'filter' => 'فیلتر',
'column' => 'انتخاب ستون',
'condition' => 'انتخاب شرایط',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Alcuni dei campi obbligatori sono nulli, per favore verificare le colonne, le condizioni e i valori inseriti',
'click_on_action' => 'Vuoi davvero effettuare questa azione?',
'search' => 'Cerca qui...',
'search-title' => 'Gruppo di clienti',
'channel' => 'Canale',
'locale' => 'Locale',
'customer-group' => 'Gruppo di clienti',
'filter' => 'Filtro',
'column' => 'Seleziona Colonna',
'condition' => 'Seleziona Condizione',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Some of the required field is null, please check column, condition and value properly',
'click_on_action' => 'Wilt u deze actie echt uitvoeren?',
'search' => 'Zoek hier...',
'search-title' => 'Zoeken',
'channel' => 'Kanaal',
'locale' => 'Lokaal',
'customer-group' => 'Klantengroep',
'filter' => 'Filter',
'column' => 'Selecteer kolom',
'condition' => 'Selecteer voorwaarde',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Niektóre wymagane pola są puste, proszę sprawdzić kolumnę, warunek i wartość poprawnie',
'click_on_action' => 'Czy naprawdę chcesz wykonać tę akcję?',
'search' => 'Tutaj wyszukasz...',
'search-title' => 'Szukaj',
'channel' => 'Kanał',
'locale' => 'Widownia',
'customer-group' => 'Grupa klientów',
'filter' => 'Filtr',
'column' => 'Wybierz kolumnę',
'condition' => 'Wybierz warunek',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Alguns dos campos obrigatórios são nulos, por favor verifique coluna, condição e valor corretamente',
'click_on_action' => 'Você realmente quer realizar esta ação?',
'search' => 'Busque Aqui...',
'search-title' => 'Procurar',
'channel' => 'Canal',
'locale' => 'Localidade',
'customer-group' => 'Grupo de Clientes',
'filter' => 'Filtrar',
'column' => 'Selecione a coluna',
'condition' => 'Selecione Condição',

View File

@ -22,6 +22,10 @@ return [
'filter-fields-missing' => 'Zorunlu alanlardan bazıları boş, lütfen sütun, durum ve değeri doğru şekilde kontrol edin',
'click_on_action' => 'Bu işlemi gerçekleştirmek istediğinizden emin misiniz?',
'search' => 'Arama Yapın...',
'search-title' => 'Arama',
'channel' => 'Kanal',
'locale' => 'yerel',
'customer-group' => 'müşteri grubu',
'filter' => 'Filtrele',
'column' => 'Sütun Seç',
'condition' => 'Durum Seç',

View File

@ -460,7 +460,7 @@
},
searchCollection: function (searchValue) {
this.formURL("search", 'all', searchValue, 'Search');
this.formURL("search", 'all', searchValue, '{{ __('ui::app.datagrid.search-title') }}');
},
// function triggered to check whether the query exists or not and then call the make filters from the url
@ -725,10 +725,10 @@
switch (obj.column) {
case "search":
obj.label = "Search";
obj.label = "{{ __('ui::app.datagrid.search-title') }}";
break;
case "channel":
obj.label = "Channel";
obj.label = "{{ __('ui::app.datagrid.channel') }}";
if ('channels' in this.extraFilters) {
obj.prettyValue = this.extraFilters['channels'].find(channel => channel.code == obj.val);
@ -738,7 +738,7 @@
}
break;
case "locale":
obj.label = "Locale";
obj.label = "{{ __('ui::app.datagrid.locale') }}";
if ('locales' in this.extraFilters) {
obj.prettyValue = this.extraFilters['locales'].find(locale => locale.code === obj.val);
@ -748,7 +748,7 @@
}
break;
case "customer_group":
obj.label = "Customer Group";
obj.label = "{{ __('ui::app.datagrid.customer-group') }}";
if ('customer_groups' in this.extraFilters) {
obj.prettyValue = this.extraFilters['customer_groups'].find(customer_group => customer_group.id === parseInt(obj.val, 10));

View File

@ -1,3 +1,4 @@
*
!private/
!public/
!.gitignore

2
storage/app/private/.gitignore vendored Executable file
View File

@ -0,0 +1,2 @@
*
!.gitignore

View File

@ -1,3 +1,2 @@
*
!public/
!.gitignore