update marketing
All checks were successful
All checks were successful
This commit is contained in:
@@ -1,53 +1,72 @@
|
||||
@if(isset($cart_contents))
|
||||
@php
|
||||
$modules = product_setting()->modules ?? [];
|
||||
@endphp
|
||||
|
||||
@foreach($cart_contents as $cart)
|
||||
<tr data-row_id="{{ $cart->rowId }}" data-batch_no="{{ $cart->options->batch_no ?? '' }}"
|
||||
data-stock_id="{{ $cart->options->stock_id ?? '' }}"
|
||||
data-update_route="{{ route('business.carts.update', $cart->rowId) }}"
|
||||
data-destroy_route="{{ route('business.carts.destroy', $cart->rowId) }}">
|
||||
<td>
|
||||
<img class="table-img" src="{{ asset($cart->options->product_image ?? 'assets/images/products/box.svg') }}">
|
||||
</td>
|
||||
<td>{{ $cart->name }}</td>
|
||||
<td>{{ $cart->options->product_code }}</td>
|
||||
<td>{{ $cart->options->batch_no ?? '' }}</td>
|
||||
<td>{{ $cart->options->product_unit_name }}</td>
|
||||
<td>
|
||||
<input class="text-center sales-input cart-price" type="number" step="any" min="0" value="{{ $cart->price }}"
|
||||
placeholder="0">
|
||||
</td>
|
||||
@if ($modules['allow_product_discount'] ?? false)
|
||||
<td>
|
||||
<input class="text-center sales-input cart-discount" type="number" step="any" min="0"
|
||||
value="{{ $cart->options->discount ?? 0 }}" placeholder="0">
|
||||
</td>
|
||||
@endif
|
||||
<td class="cart-vat-percent text-center">
|
||||
{{ $cart->options->vat_percent ?? 0 }}%
|
||||
<input type="hidden" class="cart-vat-percent-input" value="{{ $cart->options->vat_percent ?? 0 }}">
|
||||
</td>
|
||||
<td class="cart-vat-value text-center">
|
||||
{{ currency_format(($cart->price * $cart->qty) * ($cart->options->vat_percent ?? 0) / 100, currency: business_currency()) }}
|
||||
</td>
|
||||
<td class="large-td">
|
||||
<div class="d-flex gap-2 align-items-center">
|
||||
<button class="incre-decre minus-btn">
|
||||
<i class="fas fa-minus icon"></i>
|
||||
</button>
|
||||
<input type="number" step="any" value="{{ $cart->qty }}" class="dynamic-width cart-qty "
|
||||
placeholder="{{ __('0') }}">
|
||||
<button class="incre-decre plus-btn">
|
||||
<i class="fas fa-plus icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<td class="cart-subtotal">
|
||||
{{ currency_format(($cart->price - ($cart->options->discount ?? 0)) * $cart->qty, currency: business_currency()) }}
|
||||
</td>
|
||||
<td>
|
||||
<button class='x-btn remove-btn'>
|
||||
<img src="{{ asset('assets/images/icons/x.svg') }}" alt="">
|
||||
<tr
|
||||
data-row_id="{{ $cart->rowId }}"
|
||||
data-product_id="{{ $cart->id }}"
|
||||
data-product_name="{{ $cart->name }}"
|
||||
data-product_code="{{ $cart->options->product_code ?? '' }}"
|
||||
data-product_unit_id="{{ $cart->options->product_unit_id ?? '' }}"
|
||||
data-product_unit_name="{{ $cart->options->product_unit_name ?? '' }}"
|
||||
data-product_image="{{ $cart->options->product_image ?? '' }}"
|
||||
data-product_type="{{ $cart->options->product_type ?? '' }}"
|
||||
data-has_serial="{{ $cart->options->has_serial ?? 0 }}"
|
||||
data-serials='@json($cart->options->serial_numbers ?? [])'
|
||||
data-batch_no="{{ $cart->options->batch_no ?? '' }}"
|
||||
data-stock_id="{{ $cart->options->stock_id ?? '' }}"
|
||||
data-update_route="{{ route('business.carts.update', $cart->rowId) }}"
|
||||
data-destroy_route="{{ route('business.carts.destroy', $cart->rowId) }}">
|
||||
<td>
|
||||
<img class="table-img" src="{{ asset($cart->options->product_image ?? 'assets/images/products/box.svg') }}">
|
||||
</td>
|
||||
<td>{{ $cart->name }}</td>
|
||||
<td>{{ $cart->options->product_code }}</td>
|
||||
<td>{{ $cart->options->batch_no ?? '' }}</td>
|
||||
<td>{{ $cart->options->product_unit_name }}</td>
|
||||
<td>
|
||||
<input class="text-center sales-input cart-price" type="number" step="any" min="0" value="{{ round($cart->price, 2) }}" placeholder="0">
|
||||
</td>
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
<td class="serial-cell serial-option">
|
||||
<button type="button" class="serial-cell-button mx-auto" @if(($cart->options->has_serial ?? 0) != 1) disabled @endif data-bs-toggle="modal" data-bs-target="#serialModal">
|
||||
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4 7H18" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M23 7H23.0105" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M23 14H23.0105" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M23 21H23.0105" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M4 14H18" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M4 21H18" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
@if ($modules['allow_product_discount'] ?? false)
|
||||
<td>
|
||||
<input class="text-center sales-input cart-discount" type="number" step="any" min="0" value="{{ $cart->options->discount ?? 0 }}" placeholder="0">
|
||||
</td>
|
||||
@endif
|
||||
<td class="large-td">
|
||||
<div class="d-flex gap-2 align-items-center justify-content-center">
|
||||
<button class="incre-decre minus-btn">
|
||||
<i class="fas fa-minus icon"></i>
|
||||
</button>
|
||||
<input type="number" step="any" value="{{ $cart->qty }}" class="dynamic-width cart-qty " placeholder="{{ __('0') }}" >
|
||||
<button class="incre-decre plus-btn">
|
||||
<i class="fas fa-plus icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<td class="cart-subtotal">
|
||||
{{ currency_format(round(($cart->price - ($cart->options->discount ?? 0)) * $cart->qty, 2), currency: business_currency()) }}
|
||||
</td>
|
||||
<td>
|
||||
<button class='x-btn remove-btn'>
|
||||
<img src="{{ asset('assets/images/icons/x.svg') }}" alt="">
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
@section('main_content')
|
||||
<div class="container-fluid">
|
||||
<div class="grid row sales-main-container p-lr">
|
||||
<div class="grid row sales-main-container p-lr">
|
||||
<div class="sales-container">
|
||||
<!-- Quick Action Section -->
|
||||
<div class="quick-act-header">
|
||||
@@ -24,26 +24,22 @@
|
||||
<h4 class='quick-act-title'>{{ __('Quick Action') }}</h4>
|
||||
</div>
|
||||
<div class="quick-actions-container">
|
||||
<a href="{{ route('business.products.index') }}"
|
||||
class='save-product-btn d-flex align-items-center gap-1'>
|
||||
<a href="{{ route('business.products.index') }}" class='save-product-btn d-flex align-items-center gap-1'>
|
||||
<img src="{{ asset('assets/images/icons/product.svg') }}" alt="">
|
||||
{{ __('Product List') }}
|
||||
</a>
|
||||
|
||||
<a href="{{ route('business.sales.index', ['today' => true]) }}"
|
||||
class='sales-btn d-flex align-items-center gap-1'>
|
||||
<a href="{{ route('business.sales.index', ['today' => true]) }}" class='sales-btn d-flex align-items-center gap-1'>
|
||||
<img src="{{ asset('assets/images/icons/sales.svg') }}" alt="">
|
||||
{{ __('Today Sales') }}
|
||||
</a>
|
||||
|
||||
<button data-bs-toggle="modal" data-bs-target="#calculatorModal"
|
||||
class='calculator-btn d-flex align-items-center gap-1'>
|
||||
<button data-bs-toggle="modal" data-bs-target="#calculatorModal" class='calculator-btn d-flex align-items-center gap-1'>
|
||||
<img src="{{ asset('assets/images/icons/calculator.svg') }}" alt="">
|
||||
{{ __('Calculator') }}
|
||||
</button>
|
||||
|
||||
<a href="{{ route('business.dashboard.index') }}"
|
||||
class='dashboard-btn d-flex align-items-center gap-1'>
|
||||
<a href="{{ route('business.dashboard.index') }}" class='dashboard-btn d-flex align-items-center gap-1'>
|
||||
<img src="{{ asset('assets/images/icons/dashboard.svg') }}" alt="">
|
||||
{{ __('Dashboard') }}
|
||||
</a>
|
||||
@@ -56,8 +52,7 @@ class='dashboard-btn d-flex align-items-center gap-1'>
|
||||
<div class="row g-3">
|
||||
<!-- First Row -->
|
||||
<div class="col-12 col-md-6">
|
||||
<input type="text" name="invoiceNumber" value="{{ $invoice_no }}" class="form-control"
|
||||
placeholder="{{ __('Invoice no') }}." readonly>
|
||||
<input type="text" name="invoiceNumber" value="{{ $invoice_no }}" class="form-control" placeholder="{{ __('Invoice no') }}." readonly>
|
||||
</div>
|
||||
<!-- Second Row -->
|
||||
<div class="col-12 col-md-6">
|
||||
@@ -78,12 +73,12 @@ class='dashboard-btn d-flex align-items-center gap-1'>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<a type="button" href="#customer-create-modal" data-bs-toggle="modal"
|
||||
class="btn btn-danger square-btn d-flex justify-content-center align-items-center">
|
||||
<a type="button" href="#customer-create-modal" data-bs-toggle="modal" class="btn btn-danger square-btn d-flex justify-content-center align-items-center">
|
||||
<img src="{{ asset('assets/images/icons/plus-square.svg') }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@if(moduleCheck('WarehouseAddon'))
|
||||
<div class="col-6">
|
||||
<div class="d-flex align-items-center">
|
||||
<select required name="warehouse_id" class="form-select choices-select warehouse_id" aria-label="Select Customer">
|
||||
@@ -94,6 +89,7 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="cart-payment">
|
||||
@@ -107,17 +103,18 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<th class="border table-background">{{ __('Batch') }}</th>
|
||||
<th class="border table-background">{{ __('Unit') }}</th>
|
||||
<th class="border table-background">{{ __('Sale Price') }}</th>
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
<th class="border table-background serial-option">{{ __('Serial') }}</th>
|
||||
@endif
|
||||
@if ($modules['allow_product_discount'] ?? false)
|
||||
<th class="border table-background">{{ __('Discount') }}</th>
|
||||
@endif
|
||||
<th class="border table-background">{{ __('Vat %') }}</th>
|
||||
<th class="border table-background">{{ __('Vat Value') }}</th>
|
||||
<th class="border table-background">{{ __('Qty') }}</th>
|
||||
<th class="border table-background">{{ __('Sub Total') }}</th>
|
||||
<th class="border table-background">{{ __('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="cart-list">
|
||||
<tbody id="sale_cart_list">
|
||||
@include('business::sales.cart-list')
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -133,13 +130,11 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<div class="amount-info-container">
|
||||
<div class="row amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title">{{ __('Receive Amount') }}</h6>
|
||||
<input name="receive_amount" type="number" step="any" id="receive_amount"
|
||||
min="0" class="form-control receive_amount" placeholder="0">
|
||||
<input name="receive_amount" type="number" step="any" id="receive_amount" min="0" class="form-control receive_amount" placeholder="0">
|
||||
</div>
|
||||
<div class="row amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title">{{ __('Change Amount') }}</h6>
|
||||
<input type="number" step="any" id="change_amount" class="form-control"
|
||||
placeholder="0" readonly>
|
||||
<input type="number" step="any" id="change_amount" class="form-control" placeholder="0" readonly>
|
||||
</div>
|
||||
<div class="row amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title">{{ __('Due Amount') }}</h6>
|
||||
@@ -165,13 +160,21 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<h6 class="fw-bold" id="sub_total">
|
||||
{{ currency_format(0, currency: business_currency()) }}</h6>
|
||||
</div>
|
||||
<div class="mb-2 d-flex align-items-center justify-content-between">
|
||||
<h6>{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<h6 class="fw-bold" id="vat_amount_txt">
|
||||
{{ currency_format(0, currency: business_currency()) }}</h6>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="discount_type" class="form-select discount_type" id='form-ware'>
|
||||
<option value="flat">{{ __('Flat') }}
|
||||
({{ business_currency()->symbol }})
|
||||
</option>
|
||||
<option value="percent">{{ __('Percent (%)') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="discountAmount" id="discount_amount" min="0" class="form-control right-start-input" placeholder="{{ __('0') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2 d-none">
|
||||
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
@@ -185,26 +188,7 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="vat_amount" id="vat_amount"
|
||||
min="0" class="form-control right-start-input"
|
||||
placeholder="{{ __('0') }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="discount_type" class="form-select discount_type"
|
||||
id='form-ware'>
|
||||
<option value="flat">{{ __('Flat') }}
|
||||
({{ business_currency()->symbol }})
|
||||
</option>
|
||||
<option value="percent">{{ __('Percent (%)') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="discountAmount"
|
||||
id="discount_amount" min="0"
|
||||
class="form-control right-start-input" placeholder="{{ __('0') }}">
|
||||
<input type="number" step="any" name="vat_amount" id="vat_amount" min="0" class="form-control right-start-input" placeholder="{{ __('0') }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-2 shopping-crg-grid">
|
||||
@@ -286,6 +270,7 @@ class="btn btn-brand w-100">{{ __('Brand') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$rounding_amount_option = sale_rounding();
|
||||
@endphp
|
||||
@@ -301,9 +286,17 @@ class="btn btn-brand w-100">{{ __('Brand') }}</a>
|
||||
<input type="hidden" id="asset_base_url" value="{{ asset('') }}">
|
||||
<input type="hidden" id="get_stock_prices" value="{{ route('business.products.stocks-prices') }}">
|
||||
<input type="hidden" id="warehouse_module_exist" value="{{ moduleCheck('WarehouseAddon') ? 1 : 0 }}">
|
||||
@endsection
|
||||
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
|
||||
<input type="hidden" id="check-serial-exist" value="{{ route('business.products.check-serial') }}">
|
||||
<input type="hidden" id="get-product-serials" value="{{ route('business.products.get-serials') }}">
|
||||
<input type="hidden" id="is-inventory-page" value="0">
|
||||
|
||||
@endsection
|
||||
|
||||
@push('modal')
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
@include('serialcodeaddon::select-serial-modal')
|
||||
@endif
|
||||
@include('business::sales.calculator')
|
||||
@include('business::sales.category-search')
|
||||
@include('business::sales.brand-search')
|
||||
|
||||
@@ -7,20 +7,17 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="personal-info">
|
||||
<form action="{{ route('business.sales.store.customer') }}" method="post" enctype="multipart/form-data"
|
||||
class="ajaxform_instant_reload">
|
||||
<form action="{{ route('business.sales.store.customer') }}" method="post" enctype="multipart/form-data" class="ajaxform_instant_reload">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Name') }}</label>
|
||||
<input type="text" name="name" required class="form-control" placeholder="{{ __('Enter Name') }}">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Phone') }}</label>
|
||||
<input type="number" name="phone" class="form-control" placeholder="{{ __('Enter phone number') }}">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{__('Party Type')}}</label>
|
||||
<div class="gpt-up-down-arrow position-relative">
|
||||
@@ -32,7 +29,6 @@ class="ajaxform_instant_reload">
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Email') }}</label>
|
||||
<input type="email" name="email" class="form-control" placeholder="{{ __('Enter Email') }}">
|
||||
@@ -45,14 +41,22 @@ class="ajaxform_instant_reload">
|
||||
<label>{{ __('Due') }}</label>
|
||||
<input type="number" name="due" step="any" class="form-control" placeholder="{{ __('Enter Due') }}">
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="row">
|
||||
<div class="col-10">
|
||||
<label class="img-label">{{ __('Image') }}</label>
|
||||
<input type="file" accept="image/*" name="image" class="form-control file-input-change" data-id="image">
|
||||
</div>
|
||||
<div class="col-1 align-self-center mt-3">
|
||||
<img src="{{ asset('assets/images/icons/upload.png') }}" id="image" class="table-img">
|
||||
<div class="col-lg-6">
|
||||
<label class="img-label">{{ __('Image') }}</label>
|
||||
<div class="custom-upload-wrapper">
|
||||
<div class="custom-image-box">
|
||||
<div class="custom-image-content">
|
||||
<svg width="30" height="30" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18.3327 7.5026V12.5026C18.3327 14.8596 18.3327 16.0381 17.6004 16.7704C16.8682 17.5026 15.6897 17.5026 13.3327 17.5026H6.66602C4.309 17.5026 3.13048 17.5026 2.39825 16.7704C1.66602 16.0381 1.66602 14.8596 1.66602 12.5026V9.21404C1.66602 8.39729 1.66602 7.98892 1.76053 7.65502C1.99698 6.81974 2.64982 6.1669 3.48509 5.93046C3.819 5.83594 4.22736 5.83594 5.04409 5.83594C5.34907 5.83594 5.50157 5.83594 5.64361 5.81118C5.99556 5.74983 6.31847 5.577 6.56476 5.3182C6.66415 5.21375 6.91352 4.8397 7.08268 4.58594C7.413 4.09048 7.57815 3.84275 7.80393 3.67233C7.94181 3.56826 8.09502 3.48627 8.25809 3.42927C8.52512 3.33594 8.82287 3.33594 9.41837 3.33594H10.8327" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M13.3327 11.2474C13.3327 13.0883 11.8403 14.5807 9.99937 14.5807C8.1584 14.5807 6.66602 13.0883 6.66602 11.2474C6.66602 9.40641 8.1584 7.91406 9.99937 7.91406C11.8403 7.91406 13.3327 9.40641 13.3327 11.2474Z" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M13.334 4.58333H17.5007M15.4173 6.66667V2.5" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<span class="custom-upload-text">{{ __('Add Image') }}</span>
|
||||
</div>
|
||||
|
||||
<!-- Preview image -->
|
||||
<img class="preview-image d-none" id="image" src="" alt="Preview">
|
||||
<input type="file" name="image" class="preview-image-input" data-id="#image" accept="image/*">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -65,52 +65,87 @@
|
||||
<i class="far fa-ellipsis-v"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
|
||||
@usercan('sales.read')
|
||||
<li>
|
||||
<a target="_blank" href="{{ route('business.sales.invoice', $sale->id) }}">
|
||||
<img src="{{ asset('assets/images/icons/Invoic.svg') }}" alt="">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2.66602 12.4331V5.37211C2.66602 3.46944 2.66602 2.5181 3.2518 1.92702C3.83759 1.33594 4.7804 1.33594 6.66602 1.33594H9.33268C11.2183 1.33594 12.1611 1.33594 12.7469 1.92702C13.3327 2.5181 13.3327 3.46944 13.3327 5.37211V12.4331C13.3327 13.4409 13.3327 13.9448 13.0247 14.1431C12.5214 14.4673 11.7434 13.7875 11.3521 13.5408C11.0287 13.3369 10.8671 13.2349 10.6877 13.2291C10.4938 13.2227 10.3293 13.3205 9.97995 13.5408L8.70602 14.3442C8.36235 14.5609 8.19055 14.6693 7.99935 14.6693C7.80815 14.6693 7.63635 14.5609 7.29268 14.3442L6.01877 13.5408C5.69545 13.3369 5.53379 13.2349 5.35437 13.2291C5.1605 13.2227 4.99597 13.3205 4.6466 13.5408C4.25532 13.7875 3.47726 14.4673 2.97398 14.1431C2.66602 13.9448 2.66602 13.4409 2.66602 12.4331Z" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10.6673 4H5.33398" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M6.66732 6.66406H5.33398" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M9.66602 6.58333C9.11375 6.58333 8.66602 6.97507 8.66602 7.45833C8.66602 7.9416 9.11375 8.33333 9.66602 8.33333C10.2183 8.33333 10.666 8.72507 10.666 9.20833C10.666 9.6916 10.2183 10.0833 9.66602 10.0833M9.66602 6.58333C10.1014 6.58333 10.4718 6.8268 10.6091 7.16667M9.66602 6.58333V6M9.66602 10.0833C9.23062 10.0833 8.86022 9.83987 8.72295 9.5M9.66602 10.0833V10.6667" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ __('Invoice') }}
|
||||
</a>
|
||||
</li>
|
||||
@endusercan
|
||||
@if ($sale->details->sum('quantities') != 0)
|
||||
@usercan('sale-returns.read')
|
||||
|
||||
@usercan('sales.read')
|
||||
@php
|
||||
$useTaxInvoice = moduleCheck('TaxInvoiceAddon') && invoice_setting($sale->business_id) == 'standard_a4';
|
||||
@endphp
|
||||
|
||||
@if($useTaxInvoice)
|
||||
<li>
|
||||
<a
|
||||
href="{{ route('business.sale-returns.create', ['sale_id' => $sale->id]) }}">
|
||||
<i class="fal fa-undo-alt"></i>
|
||||
{{ __('Sales Return') }}
|
||||
<a target="_blank" href="{{ route('business.sales.tax.invoice', $sale->id) }}">
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_40008374_151568)">
|
||||
<path d="M15.012 1.5C14.177 1.5 13.5 3.51472 13.5 6H15.012C15.7407 6 16.105 6 16.3306 5.74841C16.5562 5.49682 16.5169 5.1655 16.4384 4.50286C16.2311 2.75357 15.6707 1.5 15.012 1.5Z" stroke="#4D4D4D" stroke-width="1.25"/>
|
||||
<path d="M13.5 6.0407V13.9844C13.5 15.1181 13.5 15.685 13.1535 15.9081C12.5873 16.2728 11.7121 15.5081 11.2718 15.2305C10.9081 15.0011 10.7263 14.8864 10.5244 14.8798C10.3063 14.8726 10.1212 14.9826 9.72817 15.2305L8.295 16.1343C7.90838 16.3781 7.7151 16.5 7.5 16.5C7.28491 16.5 7.09159 16.3781 6.705 16.1343L5.27185 15.2305C4.90811 15.0011 4.72624 14.8864 4.5244 14.8798C4.30629 14.8726 4.1212 14.9826 3.72815 15.2305C3.28796 15.5081 2.41265 16.2728 1.84646 15.9081C1.5 15.685 1.5 15.1181 1.5 13.9844V6.0407C1.5 3.90019 1.5 2.82994 2.15901 2.16497C2.81802 1.5 3.87868 1.5 6 1.5H15" stroke="#4D4D4D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M7.5 6C6.67157 6 6 6.50368 6 7.125C6 7.7463 6.67157 8.25 7.5 8.25C8.32845 8.25 9 8.7537 9 9.375C9 9.9963 8.32845 10.5 7.5 10.5M7.5 6C8.1531 6 8.7087 6.31305 8.91465 6.75M7.5 6V5.25M7.5 10.5C6.84689 10.5 6.29127 10.1869 6.08535 9.75M7.5 10.5V11.25" stroke="#4D4D4D" stroke-width="1.25" stroke-linecap="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_40008374_151568">
|
||||
<rect width="18" height="18" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
{{ __('Tax Invoice') }}
|
||||
</a>
|
||||
</li>
|
||||
@endusercan
|
||||
@endif
|
||||
@endusercan
|
||||
|
||||
@if ($sale->details->sum('quantities') != 0)
|
||||
@usercan('sale-returns.read')
|
||||
<li>
|
||||
<a
|
||||
href="{{ route('business.sale-returns.create', ['sale_id' => $sale->id]) }}">
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2.25 9.75V6H15.75V9.75C15.75 12.5784 15.75 13.9927 14.8713 14.8713C13.9927 15.75 12.5784 15.75 9.75 15.75H8.25C5.42157 15.75 4.00736 15.75 3.12868 14.8713C2.25 13.9927 2.25 12.5784 2.25 9.75Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M2.25 6L2.89904 4.55769C3.40241 3.4391 3.65408 2.87981 4.16423 2.5649C4.67438 2.25 5.32875 2.25 6.6375 2.25H11.3625C12.6712 2.25 13.3256 2.25 13.8358 2.5649C14.3459 2.87981 14.5976 3.4391 15.1009 4.55769L15.75 6" stroke="#4B5563" stroke-linecap="round"/>
|
||||
<path d="M9 6V2.25" stroke="#4B5563" stroke-linecap="round"/>
|
||||
<path d="M6.375 10.125H10.5C11.3284 10.125 12 10.7966 12 11.625C12 12.4534 11.3284 13.125 10.5 13.125H9.75M7.5 8.625L6 10.125L7.5 11.625" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
||||
{{ __('Sales Return') }}
|
||||
</a>
|
||||
</li>
|
||||
@endusercan
|
||||
@endif
|
||||
|
||||
<li>
|
||||
<a href="#" class="view-payment-btn"
|
||||
data-url="{{ route('business.view-payment', ['type' => 'sale', 'id' => $sale->id]) }}"
|
||||
data-bs-toggle="modal" data-bs-target="#view-payment-modal">
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M3 13.9844V6.0407C3 3.90019 3 2.82994 3.65901 2.16497C4.31802 1.5 5.37868 1.5 7.5 1.5H10.5C12.6213 1.5 13.6819 1.5 14.341 2.16497C15 2.82994 15 3.90019 15 6.0407V13.9844C15 15.1181 15 15.685 14.6535 15.9081C14.0873 16.2728 13.2121 15.5081 12.7718 15.2305C12.4081 15.0011 12.2263 14.8864 12.0244 14.8798C11.8063 14.8726 11.6212 14.9826 11.2282 15.2305L9.795 16.1343C9.40838 16.3781 9.2151 16.5 9 16.5C8.7849 16.5 8.59162 16.3781 8.205 16.1343L6.77185 15.2305C6.40811 15.0011 6.22624 14.8864 6.0244 14.8798C5.80629 14.8726 5.6212 14.9826 5.22815 15.2305C4.78796 15.5081 3.91265 16.2728 3.34646 15.9081C3 15.685 3 15.1181 3 13.9844Z"
|
||||
stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M12 4.5H6" stroke="#4B5563" stroke-linecap="round"
|
||||
stroke-linejoin="round" />
|
||||
<path d="M7.5 7.5H6" stroke="#4B5563" stroke-linecap="round"
|
||||
stroke-linejoin="round" />
|
||||
<path
|
||||
d="M10.875 7.40625C10.2537 7.40625 9.75 7.84695 9.75 8.39063C9.75 8.9343 10.2537 9.375 10.875 9.375C11.4963 9.375 12 9.8157 12 10.3594C12 10.9031 11.4963 11.3438 10.875 11.3438M10.875 7.40625C11.3648 7.40625 11.7815 7.68015 11.936 8.0625M10.875 7.40625V6.75M10.875 11.3438C10.3852 11.3438 9.96847 11.0699 9.81405 10.6875M10.875 11.3438V12"
|
||||
stroke="#4B5563" stroke-linecap="round" />
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3 13.9844V6.0407C3 3.90019 3 2.82994 3.65901 2.16497C4.31802 1.5 5.37868 1.5 7.5 1.5H10.5C12.6213 1.5 13.6819 1.5 14.341 2.16497C15 2.82994 15 3.90019 15 6.0407V13.9844C15 15.1181 15 15.685 14.6535 15.9081C14.0873 16.2728 13.2121 15.5081 12.7718 15.2305C12.4081 15.0011 12.2263 14.8864 12.0244 14.8798C11.8063 14.8726 11.6212 14.9826 11.2282 15.2305L9.795 16.1343C9.40838 16.3781 9.2151 16.5 9 16.5C8.7849 16.5 8.59162 16.3781 8.205 16.1343L6.77185 15.2305C6.40811 15.0011 6.22624 14.8864 6.0244 14.8798C5.80629 14.8726 5.6212 14.9826 5.22815 15.2305C4.78796 15.5081 3.91265 16.2728 3.34646 15.9081C3 15.685 3 15.1181 3 13.9844Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12 4H6" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M11 7H6" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M9 10H6" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</i> {{ __('View Payment') }}
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
@if (!in_array($sale->id, $salesWithReturns))
|
||||
@usercan('sales.update')
|
||||
<li>
|
||||
<a href="{{ route('business.sales.edit', $sale->id) }}">
|
||||
<i class="fal fa-edit"></i>
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.1606 3.73679L13.2119 2.68547C13.7925 2.10484 14.7339 2.10484 15.3145 2.68547C15.8951 3.2661 15.8951 4.20748 15.3145 4.78811L14.2632 5.83943M12.1606 3.73679L8.23515 7.66222C7.4512 8.4462 7.05919 8.83815 6.79228 9.31582C6.52535 9.7935 6.2568 10.9214 6 12C7.07857 11.7432 8.2065 11.4746 8.68418 11.2077C9.16185 10.9408 9.5538 10.5488 10.3378 9.76485L14.2632 5.83943M12.1606 3.73679L14.2632 5.83943" stroke="#4B5563" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M15.75 9C15.75 12.1819 15.75 13.773 14.7615 14.7615C13.773 15.75 12.1819 15.75 9 15.75C5.81802 15.75 4.22703 15.75 3.23851 14.7615C2.25 13.773 2.25 12.1819 2.25 9C2.25 5.81802 2.25 4.22703 3.23851 3.23851C4.22703 2.25 5.81802 2.25 9 2.25" stroke="#4B5563" stroke-width="1.2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ __('Edit') }}
|
||||
</a>
|
||||
</li>
|
||||
@@ -119,7 +154,12 @@
|
||||
<li>
|
||||
<a href="{{ route('business.sales.destroy', $sale->id) }}"
|
||||
class="confirm-action" data-method="DELETE">
|
||||
<i class="fal fa-trash-alt"></i>
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14.625 4.125L14.1602 11.6438C14.0414 13.5648 13.9821 14.5253 13.5006 15.2159C13.2625 15.5573 12.956 15.8455 12.6005 16.062C11.8816 16.5 10.9192 16.5 8.99452 16.5C7.06734 16.5 6.10372 16.5 5.38429 16.0612C5.0286 15.8443 4.722 15.5556 4.48401 15.2136C4.00266 14.5219 3.94459 13.5601 3.82846 11.6364L3.375 4.125" stroke="#4B5563" stroke-width="1.2" stroke-linecap="round"/>
|
||||
<path d="M6.75 8.79688H11.25" stroke="#4B5563" stroke-width="1.2" stroke-linecap="round"/>
|
||||
<path d="M7.875 11.7422H10.125" stroke="#4B5563" stroke-width="1.2" stroke-linecap="round"/>
|
||||
<path d="M2.25 4.125H15.75M12.0416 4.125L11.5297 3.0688C11.1896 2.3672 11.0195 2.01639 10.7261 1.79761C10.6611 1.74908 10.5922 1.7059 10.5201 1.66852C10.1953 1.5 9.80542 1.5 9.02572 1.5C8.22645 1.5 7.82685 1.5 7.49662 1.67559C7.42343 1.71451 7.35359 1.75943 7.28783 1.80988C6.99109 2.03753 6.82533 2.40116 6.49381 3.12844L6.03955 4.125" stroke="#4B5563" stroke-width="1.2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ __('Delete') }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
@csrf
|
||||
@method('put')
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="row ">
|
||||
<div class="col-lg-4">
|
||||
<label>{{ __('Customer') }}</label>
|
||||
<div class="input-group">
|
||||
@@ -58,7 +58,7 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
@foreach ($products as $product)
|
||||
@if (!empty($product->stocks) && $product->stocks->count() > 1)
|
||||
{{-- when multiple stock --}}
|
||||
<div class="product-option-item single-product {{ $product->id }}" data-product_id="{{ $product->id }}" data-default_price="{{ $product->productSalePrice }}" data-route="{{ route('business.carts.store') }}" data-product_name="{{ $product->productName }}" data-product_code="{{ $product->productCode }}" data-product_unit_id="{{ $product->unit_id }}" data-product_unit_name="{{ $product->unit->unitName ?? '' }}" data-purchase_price="{{ $product->productPurchasePrice }}" data-product_image="{{ $product->productPicture }}" data-vat_percent="{{ $product->vat->rate ?? 0 }}">
|
||||
<div class="product-option-item single-product {{ $product->id }}" data-product_id="{{ $product->id }}" data-default_price="{{ $product->productSalePrice }}" data-route="{{ route('business.carts.store') }}" data-product_name="{{ $product->productName }}" data-product_code="{{ $product->productCode }}" data-product_unit_id="{{ $product->unit_id }}" data-product_unit_name="{{ $product->unit->unitName ?? '' }}" data-purchase_price="{{ $product->productPurchasePrice }}" data-product_image="{{ $product->productPicture }}">
|
||||
<div class="product-left">
|
||||
<img src="{{ asset($product->productPicture ?? 'assets/images/products/box.svg') }}" alt="">
|
||||
<div class="product-text">
|
||||
@@ -79,11 +79,10 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
data-product_unit_name="{{ $product->unit->unitName ?? '' }}"
|
||||
data-purchase_price="{{ $product->productPurchasePrice }}"
|
||||
data-product_image="{{ $product->productPicture }}"
|
||||
data-route="{{ route('business.carts.store') }}"
|
||||
data-vat_percent="{{ $product->vat->rate ?? 0 }}">
|
||||
data-route="{{ route('business.carts.store') }}">
|
||||
<div class="product-des">
|
||||
{{ __('Batch') }}: {{ $stock->batch_no ?? 'N/A' }}
|
||||
{{ $product->color ? ', Color: ' . $product->color : '' }}
|
||||
{{ $product->color ? ', Color: ' . $product->color : '' }}, Code : {{ $product->productCode }}
|
||||
<span class="product-in-stock">{{ __('In Stock') }}: {{ $stock->productStock }}</span>
|
||||
</div>
|
||||
<div class="product-price product_price">
|
||||
@@ -109,8 +108,7 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
data-product_image="{{ $product->productPicture }}"
|
||||
data-product_batch_no="{{ $stock->batch_no ?? '' }}"
|
||||
data-product_expire_date="{{ $stock->expire_date ?? '' }}"
|
||||
data-route="{{ route('business.carts.store') }}"
|
||||
data-vat_percent="{{ $product->vat->rate ?? 0 }}">
|
||||
data-route="{{ route('business.carts.store') }}">
|
||||
<div class="product-left">
|
||||
<img src="{{ asset($product->productPicture ?? 'assets/images/products/box.svg') }}" alt="">
|
||||
<div class="product-text">
|
||||
@@ -120,7 +118,7 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between w-100">
|
||||
<div class="product-des">
|
||||
{{ __('Batch') }}: {{ $stock->batch_no ?? 'N/A' }}
|
||||
{{ __('Batch') }}: {{ $stock->batch_no ?? 'N/A' }}, {{ __('Code') }}: {{ $product->productCode }}
|
||||
{{ $product->color ? ', Color: ' . $product->color : '' }}
|
||||
<span class="product-in-stock">{{ __('In Stock') }}: {{ $stock->productStock ?? 0 }}</span>
|
||||
</div>
|
||||
@@ -159,23 +157,23 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<th class="border p-2 table-background">{{ __('Batch') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Unit') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Sale Price') }}</th>
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
<th class="border table-background serial-option">{{ __('Serial') }}</th>
|
||||
@endif
|
||||
@if ($modules['allow_product_discount'] ?? false)
|
||||
<th class="border p-2 table-background">{{ __('Discount') }}</th>
|
||||
@endif
|
||||
<th class="border p-2 table-background">{{ __('Vat %') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Vat Value') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Qty') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Sub Total') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="cart-list">
|
||||
<tbody id="sale_cart_list">
|
||||
@include('business::sales.cart-list')
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-12 col-md-6 col-lg-6 mt-5">
|
||||
<div class="amount-info-container inventory-amount-info-container">
|
||||
<div class="row amount-container align-items-center mb-2">
|
||||
@@ -209,25 +207,6 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<h6 class="fw-bold" id="sub_total">
|
||||
{{ currency_format(0, currency: business_currency()) }}</h6>
|
||||
</div>
|
||||
<div class="mb-2 d-flex align-items-center justify-content-between">
|
||||
<h6>{{ __('Vat') }}</h6>
|
||||
<h6 class="fw-bold" id="vat_amount_txt">
|
||||
{{ currency_format(($sale->vat_amount ?? 0) != 0 ? $sale->vat_amount : (($sale->vat_percent ?? 0) != 0 ? $sale->vat_percent : 0), currency: business_currency()) }}</h6>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2 d-none">
|
||||
<h6 class="payment-title col-6">{{ __('Vat') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="vat_id" class="form-select vat_select" id='form-ware'>
|
||||
<option value="">{{ __('Select') }}</option>
|
||||
@foreach($vats as $vat)
|
||||
<option value="{{ $vat->id }}" data-rate="{{ $vat->rate }}" @selected($sale->vat_id == $vat->id)>{{ $vat->name }} ({{ $vat->rate }}%)</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="vat_amount" id="vat_amount" value="{{ ($sale->vat_amount ?? 0) != 0 ? $sale->vat_amount : (($sale->vat_percent ?? 0) != 0 ? $sale->vat_percent : 0) }}" min="0" class="form-control right-start-input" placeholder="{{ __('0') }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
@@ -240,6 +219,20 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<input type="number" step="any" name="discountAmount" value="{{ $sale->discount_type == 'percent' ? $sale->discount_percent : $sale->discountAmount }}" id="discount_amount" min="0" class="right-start-input form-control" placeholder="{{ __('0') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="vat_id" class="form-select vat_select" id='form-ware'>
|
||||
<option value="">{{ __('Select') }}</option>
|
||||
@foreach($vats as $vat)
|
||||
<option value="{{ $vat->id }}" data-rate="{{ $vat->rate }}" @selected($sale->vat_id == $vat->id)>{{ $vat->name }} ({{ $vat->rate }}%)</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="vat_amount" id="vat_amount" value="{{ ($sale->vat_amount ?? 0) != 0 ? $sale->vat_amount : (($sale->vat_percent ?? 0) != 0 ? $sale->vat_percent : 0) }}" min="0" class="form-control right-start-input" placeholder="{{ __('0') }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Shipping Charge') }}</h6>
|
||||
<div class="col-12 ">
|
||||
@@ -293,9 +286,16 @@ class="theme-btn border-btn m-2">{{__('Cancel')}}
|
||||
<input type="hidden" id="selectedProductValue" name="selectedProductValue">
|
||||
<input type="hidden" id="asset_base_url" value="{{ asset('') }}">
|
||||
<input type="hidden" id="get_stock_prices" value="{{ route('business.products.stocks-prices') }}">
|
||||
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
|
||||
<input type="hidden" id="check-serial-exist" value="{{ route('business.products.check-serial') }}">
|
||||
<input type="hidden" id="get-product-serials" value="{{ route('business.products.get-serials') }}"> <input type="hidden" id="is-inventory-page" value="1">
|
||||
|
||||
@endsection
|
||||
|
||||
@push('modal')
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
@include('serialcodeaddon::select-serial-modal')
|
||||
@endif
|
||||
@include('business::sales.calculator')
|
||||
@include('business::sales.customer-create')
|
||||
@endpush
|
||||
|
||||
@@ -78,6 +78,7 @@ class="ajaxform">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@if(moduleCheck('WarehouseAddon'))
|
||||
<div class="col-6">
|
||||
<div class="d-flex align-items-center">
|
||||
<select required name="warehouse_id" class="form-select choices-select warehouse_id" aria-label="Select Customer">
|
||||
@@ -88,6 +89,7 @@ class="ajaxform">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="cart-payment">
|
||||
@@ -101,17 +103,18 @@ class="ajaxform">
|
||||
<th class="border table-background">{{ __('Batch') }}</th>
|
||||
<th class="border table-background">{{ __('Unit') }}</th>
|
||||
<th class="border table-background">{{ __('Sale Price') }}</th>
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
<th class="border table-background serial-option">{{ __('Serial') }}</th>
|
||||
@endif
|
||||
@if ($modules['allow_product_discount'] ?? false)
|
||||
<th class="border table-background">{{ __('Discount') }}</th>
|
||||
@endif
|
||||
<th class="border table-background">{{ __('Vat %') }}</th>
|
||||
<th class="border table-background">{{ __('Vat Value') }}</th>
|
||||
<th class="border table-background">{{ __('Qty') }}</th>
|
||||
<th class="border table-background">{{ __('Sub Total') }}</th>
|
||||
<th class="border table-background">{{ __('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class='text-start' id="cart-list">
|
||||
<tbody class='text-start' id="sale_cart_list">
|
||||
@include('business::sales.cart-list')
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -165,12 +168,25 @@ class="form-control" placeholder="{{ __('Type note...') }}">
|
||||
<h6 class="fw-bold" id="sub_total">
|
||||
{{ currency_format(0, currency: business_currency()) }}</h6>
|
||||
</div>
|
||||
<div class="mb-2 d-flex align-items-center justify-content-between">
|
||||
<h6>{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<h6 class="fw-bold" id="vat_amount_txt">
|
||||
{{ currency_format(($sale->vat_amount ?? 0) != 0 ? $sale->vat_amount : (($sale->vat_percent ?? 0) != 0 ? $sale->vat_percent : 0), currency: business_currency()) }}</h6>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="discount_type" class="form-select discount_type" id='form-ware'>
|
||||
<option value="flat" @selected($sale->discount_type == 'flat')>{{ __('Flat') }}
|
||||
({{ business_currency()->symbol }})
|
||||
</option>
|
||||
<option value="percent" @selected($sale->discount_type == 'percent')>{{ __('Percent (%)') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="discountAmount"
|
||||
value="{{ $sale->discount_type == 'percent' ? $sale->discount_percent : $sale->discountAmount }}"
|
||||
id="discount_amount" min="0" class="right-start-input form-control"
|
||||
placeholder="{{ __('0') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2 d-none">
|
||||
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
@@ -191,24 +207,6 @@ class="form-control" placeholder="{{ __('Type note...') }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="discount_type" class="form-select discount_type" id='form-ware'>
|
||||
<option value="flat" @selected($sale->discount_type == 'flat')>{{ __('Flat') }}
|
||||
({{ business_currency()->symbol }})
|
||||
</option>
|
||||
<option value="percent" @selected($sale->discount_type == 'percent')>{{ __('Percent (%)') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="discountAmount"
|
||||
value="{{ $sale->discount_type == 'percent' ? $sale->discount_percent : $sale->discountAmount }}"
|
||||
id="discount_amount" min="0" class="right-start-input form-control"
|
||||
placeholder="{{ __('0') }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="shopping-crg-grid mb-2">
|
||||
<h6 class="payment-title">{{ __('Shipping Charge') }}</h6>
|
||||
<div class="">
|
||||
@@ -255,7 +253,7 @@ class="form-control right-start-input" placeholder="0">
|
||||
<form action="{{ route('business.sales.product-filter') }}" method="post" class="product-filter product-filter-form" table="#products-list">
|
||||
@csrf
|
||||
<div class="d-flex">
|
||||
<input type="text" name="search" class="form-control search-input"
|
||||
<input type="text" name="search" id="sale_product_search" class="form-control search-input"
|
||||
placeholder="{{ __('Search product...') }}">
|
||||
<button class="btn btn-search">
|
||||
<i class="far fa-search"></i>
|
||||
@@ -303,10 +301,16 @@ class="btn btn-category w-100">{{ __('Category') }}</a>
|
||||
<input type="hidden" id="asset_base_url" value="{{ asset('') }}">
|
||||
<input type="hidden" id="get_stock_prices" value="{{ route('business.products.stocks-prices') }}">
|
||||
<input type="hidden" id="warehouse_module_exist" value="{{ moduleCheck('WarehouseAddon') ? 1 : 0 }}">
|
||||
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
|
||||
<input type="hidden" id="check-serial-exist" value="{{ route('business.products.check-serial') }}">
|
||||
<input type="hidden" id="get-product-serials" value="{{ route('business.products.get-serials') }}">
|
||||
|
||||
@endsection
|
||||
|
||||
@push('modal')
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
@include('serialcodeaddon::select-serial-modal')
|
||||
@endif
|
||||
@include('business::sales.calculator')
|
||||
@include('business::sales.category-search')
|
||||
@include('business::sales.brand-search')
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
{{ __('Sales List') }}
|
||||
@endsection
|
||||
|
||||
@php
|
||||
$modules = product_setting()->modules ?? [];
|
||||
@endphp
|
||||
|
||||
@section('main_content')
|
||||
<div class="erp-table-section">
|
||||
<div class="container-fluid">
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
<h4>{{ __('Inventory Sales') }}</h4>
|
||||
</div>
|
||||
<div class="order-form-section p-16">
|
||||
<form action="{{ route('business.sales.store') }}" method="post" enctype="multipart/form-data"
|
||||
class="ajaxform">
|
||||
<form action="{{ route('business.sales.store') }}" method="post" enctype="multipart/form-data" class="ajaxform" inventory-sale="1">
|
||||
|
||||
@csrf
|
||||
<input type="hidden" name="type" value="inventory">
|
||||
<div class="row mt-3">
|
||||
<div class="row ">
|
||||
<div class="col-lg-4">
|
||||
<label>{{ __('Customer') }}</label>
|
||||
<div class="input-group">
|
||||
@@ -67,7 +67,7 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
</div>
|
||||
|
||||
<div class="dropdown-search hidden" id="searchContainer">
|
||||
<input type="text" id="productSearch" placeholder="Search product..." />
|
||||
<input type="text" id="productSearch" placeholder="{{__('Search product...')}}" />
|
||||
</div>
|
||||
|
||||
<div class="product-dropdown-options" id="dropdownList">
|
||||
@@ -98,17 +98,18 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<th class="border p-2 table-background">{{ __('Batch') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Unit') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Sale Price') }}</th>
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
<th class="border table-background serial-option">{{ __('Serial') }}</th>
|
||||
@endif
|
||||
@if ($modules['allow_product_discount'] ?? false)
|
||||
<th class="border p-2 table-background">{{ __('Discount') }}</th>
|
||||
@endif
|
||||
<th class="border p-2 table-background">{{ __('Vat %') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Vat Value') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Qty') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Sub Total') }}</th>
|
||||
<th class="border p-2 table-background">{{ __('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="cart-list">
|
||||
<tbody id="sale_cart_list">
|
||||
@include('business::sales.cart-list')
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -149,12 +150,23 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
<h6 class="fw-bold" id="sub_total">
|
||||
{{ currency_format(0, currency: business_currency()) }}</h6>
|
||||
</div>
|
||||
<div class="mb-2 d-flex align-items-center justify-content-between">
|
||||
<h6>{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<h6 class="fw-bold" id="vat_amount_txt">
|
||||
{{ currency_format(0, currency: business_currency()) }}</h6>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="discount_type" class="form-select discount_type"
|
||||
id='form-ware'>
|
||||
<option value="flat">{{ __('Flat') }}
|
||||
({{ business_currency()->symbol }})</option>
|
||||
<option value="percent">{{ __('Percent (%)') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="discountAmount" id="discount_amount"
|
||||
min="0" class="form-control right-start-input"
|
||||
placeholder="{{ __('0') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2 d-none">
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ get_business_option('business-settings')['vat_name'] ?? 'Vat' }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
@@ -173,22 +185,6 @@ class="btn btn-danger square-btn d-flex justify-content-center align-items-cente
|
||||
placeholder="{{ __('0') }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row save-amount-container align-items-center mb-2">
|
||||
<h6 class="payment-title col-6">{{ __('Discount') }}</h6>
|
||||
<div class="col-6 w-100 d-flex justify-content-between gap-2">
|
||||
<div class="d-flex d-flex align-items-center gap-2">
|
||||
<select name="discount_type" class="form-select discount_type"
|
||||
id='form-ware'>
|
||||
<option value="flat">{{ __('Flat') }}
|
||||
({{ business_currency()->symbol }})</option>
|
||||
<option value="percent">{{ __('Percent (%)') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="number" step="any" name="discountAmount" id="discount_amount"
|
||||
min="0" class="form-control right-start-input"
|
||||
placeholder="{{ __('0') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="shopping-crg-grid mb-2">
|
||||
<h6 class="payment-title">{{ __('Shipping Charge') }}</h6>
|
||||
<div class="">
|
||||
@@ -247,10 +243,16 @@ class="theme-btn border-btn m-2">{{__('Cancel')}}
|
||||
<input type="hidden" id="selectedProductValue" name="selectedProductValue">
|
||||
<input type="hidden" id="asset_base_url" value="{{ url('/') }}">
|
||||
<input type="hidden" id="get_stock_prices" value="{{ route('business.products.stocks-prices') }}">
|
||||
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
|
||||
<input type="hidden" id="check-serial-exist" value="{{ route('business.products.check-serial') }}">
|
||||
<input type="hidden" id="get-product-serials" value="{{ route('business.products.get-serials') }}">
|
||||
|
||||
@endsection
|
||||
|
||||
@push('modal')
|
||||
@if (moduleCheck('SerialCodeAddon'))
|
||||
@include('serialcodeaddon::select-serial-modal')
|
||||
@endif
|
||||
@include('business::sales.calculator')
|
||||
@include('business::sales.customer-create')
|
||||
@endpush
|
||||
|
||||
@@ -5,9 +5,11 @@
|
||||
@endsection
|
||||
|
||||
@section('main_content')
|
||||
@if (invoice_setting() == '3_inch_80mm' && moduleCheck('ThermalPrinterAddon'))
|
||||
@if (invoice_setting($sale->business_id) == '3_inch_80mm' && moduleCheck('ThermalPrinterAddon'))
|
||||
|
||||
@include('thermalprinteraddon::sales.3_inch_80mm')
|
||||
@else
|
||||
@include('business::sales.invoices.a4-size')
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,10 @@
|
||||
@extends('layouts.business.pdf.pdf_layout')
|
||||
|
||||
@section('pdf_title')
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-family: notosansarmenian, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000;
|
||||
}
|
||||
@@ -11,6 +12,8 @@
|
||||
.invoice-container {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
direction: {{ app()->getLocale() == 'ar' ? 'rtl' : 'ltr' }};
|
||||
text-align: {{ app()->getLocale() == 'ar' ? 'right' : 'left' }};
|
||||
}
|
||||
|
||||
.border-none {
|
||||
@@ -148,10 +151,36 @@
|
||||
@include('business::pdf.fonts-css')
|
||||
<style>
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-family: notosansarmenian, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
:root {
|
||||
--clr-primary: var(--dynamic-primary, #c52127);
|
||||
--secondary-color: var(--dynamic-secondary, #0071bc);
|
||||
--sidebar-color: var(--dynamic-sidebar, #201415);
|
||||
--accent-color: var(--dynamic-accent, #fef0f1);
|
||||
--clr-white: #fff;
|
||||
--clr-white2: #f9f9f9;
|
||||
--clr-white3: #f3f7ff;
|
||||
--clr-black: #01040d;
|
||||
--clr-black2: #171717;
|
||||
--clr-black3: #344054;
|
||||
--clr-gray: #525252;
|
||||
--clr-gray1: #737373;
|
||||
--clr-gray2: #d4d4d4;
|
||||
--clr-gray3: #f5f5f5;
|
||||
--clr-gray4: #f4f5f7;
|
||||
--clr-gray5: #a3a3a3;
|
||||
--clr-violet: rgba(130, 49, 211, 1);
|
||||
--clr-violet-light: rgba(130, 49, 211, 0.12);
|
||||
--clr-green: #01b81a;
|
||||
--clr-green-light: rgba(1, 184, 26, 0.12);
|
||||
--clr-orange: #ff6565;
|
||||
--clr-orange-light: rgba(255, 116, 62, 0.12);
|
||||
--clr-red: #ef4444;
|
||||
--ff: "Inter", sans-serif;
|
||||
}
|
||||
.header-table {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
@@ -211,6 +240,10 @@
|
||||
font-size: 11px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.invoice-badge{
|
||||
background-color: #c52127 !important;
|
||||
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
@endsection
|
||||
@@ -230,7 +263,7 @@
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div class="invoice-container">
|
||||
<div class="invoice-container" dir="{{ app()->getLocale() == 'ar' ? 'rtl' : 'ltr' }}">
|
||||
{{-- Header --}}
|
||||
<table class="header-table">
|
||||
<tr>
|
||||
@@ -278,12 +311,12 @@
|
||||
</table>
|
||||
|
||||
{{-- INVOICE BADGE --}}
|
||||
<h3
|
||||
<h3 class="invoice-badge"
|
||||
style="
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
color: white;
|
||||
background-color: #c52127;
|
||||
|
||||
padding: 5px 12px;
|
||||
border-radius: 30px;
|
||||
margin: 0;
|
||||
@@ -300,14 +333,14 @@
|
||||
{{-- Customer & Invoice Info --}}
|
||||
<table class="header-table">
|
||||
<tr>
|
||||
<td style="width:50%; text-align:{{ app()->getLocale() == 'ar' ? 'left' : 'left' }};">
|
||||
<td style="width:50%; text-align:{{ app()->getLocale() == 'ar' ? 'right' : 'left' }};">
|
||||
<div>{{ __('Customer') }} : {{ $sale->party->name ?? __('Guest') }}</div>
|
||||
<div>{{ __('Address') }} : {{ $sale->party->address ?? '' }}</div>
|
||||
<div>{{ __('Phone') }} : {{ $sale->party->phone ?? __('Guest') }}</div>
|
||||
<div>{{ __('Remarks') }} : {{ $sale->meta['note'] ?? 'N/A' }}</div>
|
||||
</td>
|
||||
|
||||
<td style="width:50%; text-align:{{ app()->getLocale() == 'ar' ? 'right' : 'right' }};">
|
||||
<td style="width:50%; text-align:{{ app()->getLocale() == 'ar' ? 'left' : 'right' }};">
|
||||
<div>{{ __('Invoice No') }} : {{ $sale->invoiceNumber ?? '' }}</div>
|
||||
<div>{{ __('Date') }} : {{ formatted_date($sale->saleDate ?? '') }}</div>
|
||||
<div>{{ __('Time') }} : {{ formatted_time($sale->saleDate ?? '') }}</div>
|
||||
@@ -370,7 +403,7 @@
|
||||
</table>
|
||||
|
||||
|
||||
<table width="100%" style="margin-top:15px;">
|
||||
<table class="table-summery" width="100%" style="margin-top:15px;">
|
||||
<tr>
|
||||
<!-- LEFT SIDE -->
|
||||
<td width="60%" valign="top">
|
||||
|
||||
@@ -2,15 +2,25 @@
|
||||
@php
|
||||
$firstStock = $product->stocks->first();
|
||||
$purchasePrice = $firstStock->productPurchasePrice ?? 0;
|
||||
$salePrice = $product->product_type === 'combo' ? ($product->productSalePrice ?? 0) : ($firstStock->productSalePrice ?? 0);
|
||||
$salePrice = $product->product_type === 'combo' ? ($product->productSalePrice ?? 0): ($firstStock->productSalePrice ?? 0);
|
||||
$price_without_tax = $product->product_type === 'combo' ? ($product->price_without_tax ?? 0): ($firstStock->exclusive_price ?? 0);
|
||||
@endphp
|
||||
<div class="single-product {{ $product->id }}" data-product_id="{{ $product->id }}"
|
||||
data-product_type="{{ $product->product_type }}" data-default_price="{{ $salePrice }}"
|
||||
data-product_code="{{ $product->productCode }}" data-product_unit_id="{{ $product->unit->id ?? null }}"
|
||||
data-product_unit_name="{{ $product->unit->unitName ?? null }}" data-product_image="{{ $product->productPicture }}"
|
||||
data-product_name="{{ $product->productName }}" data-purchase_price="{{ $purchasePrice }}"
|
||||
data-batch_count="{{ $product->stocks->count() }}" data-stocks='@json($product->stocks)'
|
||||
data-route="{{ route('business.carts.store') }}" data-vat_percent="{{ $product->vat->rate ?? 0 }}">
|
||||
<div class="single-product {{ $product->id }}"
|
||||
data-product_id="{{ $product->id }}"
|
||||
data-product_type="{{ $product->product_type }}"
|
||||
data-has_serial="{{ $product->has_serial }}"
|
||||
data-default_price="{{ $salePrice }}"
|
||||
data-product_code="{{ $product->productCode }}"
|
||||
data-product_unit_id="{{ $product->unit->id ?? null }}"
|
||||
data-product_unit_name="{{ $product->unit->unitName ?? null }}"
|
||||
data-product_image="{{ $product->productPicture }}"
|
||||
data-product_name="{{ $product->productName }}"
|
||||
data-purchase_price="{{ $purchasePrice }}"
|
||||
data-batch_count="{{ $product->stocks->count() }}"
|
||||
data-price_without_tax="{{ $price_without_tax }}"
|
||||
data-stocks='@json($product->stocks)'
|
||||
data-route="{{ route('business.carts.store') }}"
|
||||
>
|
||||
<div class="pro-img w-100">
|
||||
<img src="{{ asset($product->productPicture ?? 'assets/images/products/box.svg') }}" alt="">
|
||||
</div>
|
||||
@@ -24,6 +34,6 @@
|
||||
</div>
|
||||
@empty
|
||||
<div class="alert alert-danger not-found mt-1" role="alert">
|
||||
No product found
|
||||
{{ __('No product found') }}
|
||||
</div>
|
||||
@endforelse
|
||||
@endforelse
|
||||
|
||||
Reference in New Issue
Block a user