update marketing
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 5m14s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
Build, Push and Deploy / deploy-staging (push) Successful in 41s
Build, Push and Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-05-14 11:55:22 +07:00
parent f80fcc4c1b
commit 05fd3230b8
448 changed files with 17545 additions and 5128 deletions

View File

@@ -76,17 +76,17 @@
<div class="table-top-btn-group d-print-none p-2">
<ul>
<li>
<a href="{{ route('business.balance-sheet.excel') }}">
<a class="export-btn" href="{{ route('business.balance-sheet.excel') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.balance-sheet.csv') }}">
<a class="export-btn" href="{{ route('business.balance-sheet.csv') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.balance-sheet.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.balance-sheet.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -6,6 +6,19 @@
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;">
{{ __('Balance Sheet Report') }}
</h4>
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection

View File

@@ -53,7 +53,7 @@
</div>
<!-- Button -->
<div><span class="more-field-btn">{{__('+ Add more fields')}}</span></div>
<div><span class="more-field-btn">+ {{__('Add More Fields')}}</span></div>
<div class="form-check mt-2">
<input type="hidden" name="show_in_invoice" value="0">
<input type="checkbox" name="show_in_invoice" class="form-check-input multi-delete" id="bankDetails" value="1">

View File

@@ -60,7 +60,7 @@
</div>
<!-- Button -->
<div><span class="more-field-btn">{{__('+ Add more fields')}}</span></div>
<div><span class="more-field-btn">+ {{__('Add More Fields')}}</span></div>
<div class="form-check mt-2">
<input type="hidden" name="show_in_invoice" value="0">
<input type="checkbox" name="show_in_invoice" id="show_in_invoice" class="form-check-input multi-delete" value="1">

View File

@@ -13,7 +13,7 @@
@csrf
<label>{{ __('Select Product') }}</label>
<div class="search-container">
<input type="text" id="product-search" placeholder="Search..." class="form-control" />
<input type="text" id="product-search" placeholder="{{__('Search...')}}" class="form-control" />
<ul id="search-results" class="barcode-dropdown search-hidden"></ul>
</div>
<div class="table-responsive mt-3 barcode-table">

View File

@@ -110,17 +110,17 @@
<div class="table-top-btn-group d-print-none p-2">
<ul>
<li>
<a href="{{ route('business.bill-wise-profits.csv') }}">
<a class="export-btn" href="{{ route('business.bill-wise-profits.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.bill-wise-profits.excel') }}">
<a class="export-btn" href="{{ route('business.bill-wise-profits.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.bill-wise-profits.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.bill-wise-profits.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Bill Wise Profit & Loss') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection

View File

@@ -20,13 +20,21 @@ class="ajaxform_instant_reload">
<div class="col-lg-12">
<label>{{ __('Icon') }}</label>
<div class="border rounded upload-img-container">
<label class="upload-v4">
<div class="img-wrp">
<img src="{{ asset('assets/images/icons/upload-icon.svg') }}" alt="Brand" id="brand-img">
<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 Icon') }}</span>
</div>
<input type="file" name="icon" class="d-none" onchange="document.getElementById('brand-img').src = window.URL.createObjectURL(this.files[0])" accept="image/*">
</label>
<!-- Preview image -->
<img class="preview-image d-none" id="image" src="" alt="Preview">
<input type="file" name="icon" class="preview-image-input" data-id="#image" accept="image/*">
</div>
</div>
</div>

View File

@@ -52,7 +52,7 @@ class="table-product-img">
<a href="#brand-edit-modal" data-bs-toggle="modal" class="brand-edit-btn"
data-url="{{ route('business.brands.update', $brand->id) }}"
data-brands-name="{{ $brand->brandName }}"
data-brands-icon="{{ asset($brand->icon ?? 'assets/images/icons/upload-icon.svg') }}"
data-brands-icon="{{ asset($brand->icon) }}"
data-brands-description="{{ $brand->description }}"><i
class="fal fa-pencil-alt"></i>{{ __('Edit') }}</a>
@endusercan

View File

@@ -20,13 +20,21 @@ class="ajaxform_instant_reload brandUpdateForm">
<div class="col-lg-12 mb-2">
<label>{{ __("Icon") }}</label>
<div class="border rounded upload-img-container">
<label class="upload-v4">
<div class="img-wrp">
<img src="" alt="user" id="edit_icon">
<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 Icon') }}</span>
</div>
<input type="file" name="icon" class="d-none" onchange="document.getElementById('edit_icon').src = window.URL.createObjectURL(this.files[0])" accept="image/*">
</label>
<!-- Preview image -->
<img class="preview-image d-none" id="edit_icon" src="" alt="Preview">
<input type="file" name="icon" class="preview-image-input" data-id="#edit_icon" accept="image/*">
</div>
</div>
</div>

View File

@@ -9,22 +9,33 @@
<div class="container-fluid">
<div class="border-0">
<div class="card-bodys">
<form action="{{ route('business.bulk-uploads.store') }}" method="post" enctype="multipart/form-data"
class="ajaxform_instant_reload">
<form action="{{ route('business.bulk-uploads.store') }}" method="post" enctype="multipart/form-data" class="ajaxform_instant_reload">
<div class="bulk-upload-container">
<div class="d-flex justify-content-between align-items-center ">
<div class="bulk-input">
<input class="form-control" type="file" name="file" required>
<div class="row align-items-center">
<div class="col-lg-6">
<div class="custom-upload-wrapper">
<div class="custom-file-box">
<div class="custom-file-content">
<svg width="30" height="30" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 5V19M5 12H19" stroke="#4B5563" stroke-width="2.0" stroke-linecap="round"/>
</svg>
<span class="custom-upload-text">{{ __('Add File') }}</span>
</div>
<p class="preview-file d-none"></p>
<input type="file" name="file" class="preview-file-input" required>
</div>
</div>
</div>
</div>
<div class="d-flex align-items-center justify-content-between">
<div class="d-flex align-items-center justify-content-between mt-3">
@usercan('bulk-uploads.create')
<button type="submit" class="add-order-btn rounded-2 border-0 submit-btn mt-3">{{__('Submit')}}</button>
<button type="submit" class="add-order-btn rounded-2 border-0 submit-btn">{{ __('Submit') }}</button>
@endusercan
<a href="{{ asset('assets/bulk-products-upload.xlsx') }}"
download="bulk-products-upload.xlsx"
class="download-file-btn mt-3">
<i class="fas fa-download"></i> {{__('Download File')}}
<a href="{{ asset('assets/bulk-products-upload.xlsx') }}" download class="download-file-btn">
<i class="fas fa-download"></i> {{ __('Download File') }}
</a>
</div>
</div>

View File

@@ -60,11 +60,11 @@
<td class="text-start d-print-none">{{ ucwords(str_replace('_', ' ', $cash_flow->platform)) }}</td>
<td class="text-center {{ $cash_flow->type === 'credit' ? 'text-success' : '' }}">
{{ $cash_flow->type === 'credit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0, currency: business_currency()) }}
{{ $cash_flow->type === 'credit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0) }}
</td>
<td class="text-center {{ $cash_flow->type === 'debit' ? 'text-danger' : '' }}">
{{ $cash_flow->type === 'debit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0, currency: business_currency()) }}
{{ $cash_flow->type === 'debit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0) }}
</td>
<td class="text-center {{ $runningCash < 0 ? 'text-danger' : 'text-success' }}">
@@ -92,10 +92,8 @@
<td class="d-print-none"></td>
<td></td>
<td class="d-print-none text-start"></td>
<td class="text-center text-success">{{ currency_format($page_cash_in, currency: business_currency()) }}
</td>
<td class="text-center text-danger">{{ currency_format($page_cash_out, currency: business_currency()) }}
</td>
<td class="text-center text-success">{{ currency_format($page_cash_in, currency: business_currency()) }}</td>
<td class="text-center text-danger">{{ currency_format($page_cash_out, currency: business_currency()) }}</td>
<td class="text-center {{ $page_running_cash < 0 ? 'text-danger' : 'text-success' }}">
{{ currency_format($page_running_cash, currency: business_currency()) }}
</td>
@@ -108,4 +106,4 @@
<div class="mt-3">
{{ $cash_flows->links('vendor.pagination.bootstrap-5') }}
</div>
</div>

View File

@@ -44,17 +44,15 @@
<td class="text-start">{{ ucwords(str_replace('_', ' ', $cash_flow->platform)) }}</td>
@if ($cash_flow->type === 'credit')
<td class="text-start text-success">{{ currency_format($cash_flow->amount, currency: business_currency()) }}
</td>
<td class="text-start text-success">{{ currency_format($cash_flow->amount, currency: business_currency()) }}</td>
@else
<td class="text-start">{{ currency_format(0, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format(0) }}</td>
@endif
@if ($cash_flow->type === 'debit')
<td class="text-start text-danger">{{ currency_format($cash_flow->amount, currency: business_currency()) }}
</td>
<td class="text-start text-danger">{{ currency_format($cash_flow->amount, currency: business_currency()) }}</td>
@else
<td class="text-start">{{ currency_format(0, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format(0) }}</td>
@endif
<td class="text-start {{ $runningCash < 0 ? 'text-danger' : 'text-success' }}">
@@ -83,10 +81,8 @@
<td class="d-print-none"></td>
<td></td>
<td class="d-print-none text-start"></td>
<td class="text-center text-success">{{ currency_format($page_cash_in, currency: business_currency()) }}
</td>
<td class="text-center text-danger">{{ currency_format($page_cash_out, currency: business_currency()) }}
</td>
<td class="text-center text-success">{{ currency_format($page_cash_in, currency: business_currency()) }}</td>
<td class="text-center text-danger">{{ currency_format($page_cash_out, currency: business_currency()) }}</td>
<td class="text-center {{ $page_running_cash < 0 ? 'text-danger' : 'text-success' }}">
{{ currency_format($page_running_cash, currency: business_currency()) }}
</td>
@@ -94,4 +90,4 @@
</tr>
</tfoot>
@endif
</table>
</table>

View File

@@ -23,19 +23,19 @@
<div class="col-lg-2 col-md-6">
<div class="profit-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Cash In') }}</p>
<p class="stat-value">{{ currency_format($total_cash_in, 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="cashflow_cash_in">{{ currency_format($cashflow_cash_in, 'icon', 2, business_currency()) }}</p>
</div>
</div>
<div class="col-lg-2 col-md-6 ">
<div class="sales-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Cash Out') }}</p>
<p class="stat-value">{{ currency_format($total_cash_out, 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="cashflow_cash_out">{{ currency_format($cashflow_cash_out, 'icon', 2, business_currency()) }}</p>
</div>
</div>
<div class="col-lg-2 col-md-12 ">
<div class="loss-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Running Cash') }}</p>
<p class="stat-value">{{ currency_format($total_running_cash, 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="total_running_cash">{{ currency_format($total_running_cash, 'icon', 2, business_currency()) }}</p>
</div>
</div>
</div>
@@ -114,17 +114,17 @@
<div class="table-top-btn-group d-print-none p-2">
<ul>
<li>
<a href="{{ route('business.cash-flow-reports.csv') }}">
<a class="export-btn" href="{{ route('business.cash-flow-reports.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.cash-flow-reports.excel') }}">
<a class="export-btn" href="{{ route('business.cash-flow-reports.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.cash-flow-reports.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.cash-flow-reports.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -1,15 +1,27 @@
@extends('layouts.business.pdf.pdf_layout')
@section('pdf_title')
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;">{{ __('Cash Flow Report List') }}</h4>
</div>
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;">{{ __('Cash Flow Report List') }}</h4>
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection
@section('pdf_content')
<table width="100%" cellpadding="6" cellspacing="0"
style="border-collapse: collapse; border: 1px solid gainsboro; font-size:12px;">
<table width="100%" cellpadding="6" cellspacing="0" style="border-collapse: collapse; border: 1px solid gainsboro; font-size:12px;">
<thead>
<tr style="background-color: #C52127; color: white;">
<th style="border:1px solid gainsboro; color:white;" class="text-start">{{ __('Date') }}</th>
@@ -36,39 +48,30 @@
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->invoice_no }}</td>
@if ($cash_flow->platform == 'sale')
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->sale?->party?->name ?? 'Guest' }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->sale?->party?->name ?? 'Guest' }}</td>
@elseif ($cash_flow->platform == 'sale_return')
<td style="border:1px solid gainsboro; text-align:center;">
{{ $cash_flow->saleReturn?->sale?->party?->name ?? 'Guest' }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->saleReturn?->sale?->party?->name ?? 'Guest' }}</td>
@elseif ($cash_flow->platform == 'purchase')
<td style="border:1px solid gainsboro; text-align:center;">
{{ $cash_flow->purchase?->party?->name ?? 'Guest' }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->purchase?->party?->name ?? 'Guest' }}</td>
@elseif ($cash_flow->platform == 'purchase_return')
<td style="border:1px solid gainsboro; text-align:center;">
{{ $cash_flow->purchaseReturn?->purchase?->party?->name ?? 'Guest' }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->purchaseReturn?->purchase?->party?->name ?? 'Guest' }}</td>
@elseif ($cash_flow->platform == 'due_collect' || $cash_flow->platform == 'due_pay')
<td style="border:1px solid gainsboro; text-align:center;">
{{ $cash_flow->dueCollect?->party?->name ?? 'Guest' }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ $cash_flow->dueCollect?->party?->name ?? 'Guest' }}</td>
@else
<td style="border:1px solid gainsboro; text-align:center;">N/A</td>
@endif
<td style="border:1px solid gainsboro; text-align:center;">
{{ ucwords(str_replace('_', ' ', $cash_flow->platform)) }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ ucwords(str_replace('_', ' ', $cash_flow->platform)) }}</td>
<td
style="border:1px solid gainsboro; text-align:center; {{ $cash_flow->type === 'credit' ? 'color:green;' : '' }}">
{{ $cash_flow->type === 'credit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0, currency: business_currency()) }}
<td style="border:1px solid gainsboro; text-align:center; {{ $cash_flow->type === 'credit' ? 'color:green;' : '' }}">
{{ $cash_flow->type === 'credit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0) }}
</td>
<td
style="border:1px solid gainsboro; text-align:center; {{ $cash_flow->type === 'debit' ? 'color:red;' : '' }}">
{{ $cash_flow->type === 'debit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0, currency: business_currency()) }}
<td style="border:1px solid gainsboro; text-align:center; {{ $cash_flow->type === 'debit' ? 'color:red;' : '' }}">
{{ $cash_flow->type === 'debit' ? currency_format($cash_flow->amount, currency: business_currency()) : currency_format(0) }}
</td>
<td
style="border:1px solid gainsboro; text-align:center; {{ $runningCash < 0 ? 'color:red;' : 'color:green;' }}">
<td style="border:1px solid gainsboro; text-align:center; {{ $runningCash < 0 ? 'color:red;' : 'color:green;' }}">
{{ currency_format($runningCash, currency: business_currency()) }}
</td>
</tr>
@@ -84,8 +87,7 @@
@if ($cash_flows->count() > 0)
<tfoot>
<tr style="background-color:#C52127; color:white; font-weight:bold;">
<td style="border:1px solid gainsboro; text-align:center; color: white; font-weight: 600;">{{__('Total')}}
</td>
<td style="border:1px solid gainsboro; text-align:center; color: white; font-weight: 600;">{{__('Total')}}</td>
<td style="border:1px solid gainsboro;"></td>
<td style="border:1px solid gainsboro;"></td>
<td style="border:1px solid gainsboro;"></td>
@@ -102,4 +104,4 @@
</tfoot>
@endif
</table>
@endsection
@endsection

View File

@@ -1,8 +1,23 @@
@if ($filter_from_date && $filter_to_date)
<div class="mb-2 text-center fw-bold duration-display">
<strong>{{ __('Duration:') }}</strong>
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</div>
@endif
<div class="responsive-table m-0">
<table class="table" id="datatable">
<thead>
<tr>
<th class="w-60">
<th class="w-60 d-print-none">
<div class="d-flex align-items-center gap-3">
<input type="checkbox" class="select-all-delete multi-delete">
</div>
@@ -13,15 +28,16 @@
<th>{{ __('Payment') }}</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Amount') }}</th>
<th class="text-center">{{ __('Action') }}</th>
<th class="text-center d-print-none">{{ __('Action') }}</th>
</tr>
</thead>
<tbody>
@foreach ($cashes as $cash)
<tr>
<td class="w-60 checkbox">
<input type="checkbox" name="ids[]" class="delete-checkbox-item multi-delete"
value="{{ $cash->id }}">
<td class="w-60 checkbox d-print-none">
@if($cash->platform === 'cash' && in_array($cash->transaction_type, ['cash_to_bank','adjust_cash']))
<input type="checkbox" name="ids[]" class="delete-checkbox-item multi-delete" value="{{ $cash->id }}">
@endif
</td>
<td>{{ ($cashes->currentPage() - 1) * $cashes->perPage() + $loop->iteration }}</td>
@@ -39,7 +55,7 @@
</td>
<td>
<div class="dropdown table-action">
<div class="dropdown table-action d-print-none">
<button type="button" data-bs-toggle="dropdown">
<i class="far fa-ellipsis-v"></i>
</button>
@@ -100,10 +116,10 @@
$editConfig = ['url' => route('business.sales.index')];
} elseif ($cash->platform === 'purchase') {
$editConfig = ['url' => route('business.purchases.index')];
} elseif ($cash->platform === 'income' && $cash->reference_id) {
$editConfig = ['url' => route('business.incomes.edit', $cash->reference_id)];
}elseif ($cash->platform === 'expense' && $cash->reference_id) {
$editConfig = ['url' => route('business.expenses.edit', $cash->reference_id)];
} elseif ($cash->platform === 'income') {
$editConfig = ['url' => route('business.incomes.index')];
}elseif ($cash->platform === 'expense') {
$editConfig = ['url' => route('business.expenses.index')];
}elseif ($cash->platform === 'sale_return') {
$editConfig = ['url' => route('business.sale-returns.index')];
}elseif ($cash->platform === 'purchase_return') {
@@ -138,12 +154,14 @@
{{-- Delete --}}
@usercan('cashes.delete')
@if($cash->platform === 'cash' && in_array($cash->transaction_type, ['cash_to_bank','adjust_cash']))
<li>
<a href="{{ route('business.cashes.destroy', $cash->id) }}"
class="confirm-action" data-method="DELETE">
<i class="fal fa-trash-alt"></i> {{ __('Delete') }}
</a>
</li>
@endif
@endusercan
</ul>
@@ -155,6 +173,6 @@ class="confirm-action" data-method="DELETE">
</table>
</div>
<div>
<div class="d-print-none">
{{ $cashes->links('vendor.pagination.bootstrap-5') }}
</div>

View File

@@ -0,0 +1,30 @@
<table class="table" id="datatable">
<thead>
<tr>
<th>{{ __('SL') }}.</th>
<th>{{ __('Date') }}</th>
<th>{{ __('Type') }}</th>
<th>{{ __('Payment') }}</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Amount') }}</th>
</tr>
</thead>
<tbody>
@foreach ($cashes as $cash)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ formatted_date($cash->date) }}</td>
<td>{{ ucwords(str_replace('_', ' ', $cash->platform)) }}</td>
<td>{{ ucwords(str_replace('_', ' ', $cash->transaction_type)) }}</td>
<td>{{ $cash->user->name ?? '' }}</td>
<td>
@if ($cash->type == 'credit' || $cash->transaction_type == 'bank_to_cash')
{{ currency_format($cash->amount, currency: business_currency()) }}
@elseif ($cash->type == 'debit' || $cash->transaction_type == 'cash_to_bank')
{{ currency_format(-$cash->amount, currency: business_currency()) }}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>

View File

@@ -14,13 +14,13 @@
<div class="col-lg-2 col-md-6 ">
<div class="profit-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Balance') }}</p>
<p class="stat-value">{{ currency_format(cash_balance(), 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="cash_balance">{{ currency_format($cash_balance, 'icon', 2, business_currency()) }}</p>
</div>
</div>
</div>
</div>
<div class="table-header p-16">
<div class="table-header p-16 d-print-none">
<h4>{{ __('Cash In Hand') }}</h4>
<div class="d-flex align-items-center gap-3">
@@ -35,8 +35,14 @@
</a>
</div>
</div>
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 class="mt-2">{{ __('Cash In Hand') }}</h4>
</div>
<div class="table-top-form p-16-0">
<form action="{{ route('business.cashes.index') }}" method="GET" class="filter-form" table="#cashes-data">
<form action="{{ route('business.cashes.index') }}" method="GET" class="report-filter-form d-print-none" table="#cashes-data">
<div class="table-top-left d-flex gap-3 margin-l-16">
<div class="gpt-up-down-arrow position-relative">
@@ -92,6 +98,30 @@
</div>
</div>
</form>
<div class="table-top-btn-group d-print-none me-2">
<ul>
<li>
<a class="export-btn" class="export-btn" href="{{ route('business.cashes.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a class="export-btn" class="export-btn" href="{{ route('business.cashes.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a class="export-btn" class="export-btn" target="_blank" href="{{ route('business.cashes.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>
<li>
<a onclick="window.print()" class="print-window">
<img src="{{ asset('assets/images/logo/printer.svg') }}" alt="">
</a>
</li>
</ul>
</div>
</div>
</div>

View File

@@ -0,0 +1,76 @@
@extends('layouts.business.pdf.pdf_layout')
@section('pdf_title')
<div class="table-header justify-content-center border-0 d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;">
{{ __('Cash Balance List') }}
</h4>
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection
@section('pdf_content')
<table width="100%" cellpadding="6" cellspacing="0"
style="border-collapse: collapse; border:1px solid gainsboro; font-size:12px;">
<thead>
<tr style="background-color: #C52127; color:white;">
<th style="font-size:12px; border:1px solid gainsboro; color: white">
{{ __('Date') }}
</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white">
{{ __('Type') }}
</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white">
{{ __('Payment') }}
</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white">
{{ __('Name') }}
</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white">
{{ __('Amount') }}
</th>
</tr>
</thead>
<tbody>
@foreach($cashes as $cash)
<tr style="background-color: {{ $loop->even ? '#F5F5F5' : '#FFFFFF' }};">
<td style="border:1px solid gainsboro; text-align:center;">
{{ formatted_date($cash->date) }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ ucwords(str_replace('_', ' ', $cash->platform)) }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ ucwords(str_replace('_', ' ', $cash->transaction_type)) }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $cash->user->name ?? '' }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
@if ($cash->type == 'credit' || $cash->transaction_type == 'bank_to_cash')
{{ currency_format($cash->amount, currency: business_currency()) }}
@elseif ($cash->type == 'debit' || $cash->transaction_type == 'cash_to_bank')
{{ currency_format(-$cash->amount, currency: business_currency()) }}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
@endsection

View File

@@ -18,16 +18,24 @@
<div class="mt-3 col-lg-12">
<label>{{ __('Icon') }}</label>
<div class="border rounded upload-img-container">
<label class="upload-v4">
<div class="img-wrp">
<img src="{{ asset('assets/images/icons/upload-icon.svg') }}" alt="Brand" id="brand-img">
<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 Icon') }}</span>
</div>
<input type="file" name="icon" class="d-none" onchange="document.getElementById('brand-img').src = window.URL.createObjectURL(this.files[0])" accept="image/*">
</label>
<!-- Preview image -->
<img class="preview-image d-none" id="image" src="" alt="Preview">
<input type="file" name="icon" class="preview-image-input" data-id="#image" accept="image/*">
</div>
</div>
</div>
</div>
<div class="offcanvas-footer mt-3">
<div class="button-group text-center mt-5">

View File

@@ -51,7 +51,7 @@ class="table-product-img">
<a href="#category-edit-modal" class="category-edit-btn" data-bs-toggle="modal"
data-url="{{ route('business.categories.update', $category->id) }}"
data-category-name="{{ $category->categoryName }}"
data-category-icon="{{ asset($category->icon ?? 'assets/images/icons/upload-icon.svg') }}">
data-category-icon="{{ $category->icon ? asset($category->icon) : '' }}">
<i class="fal fa-pencil-alt"></i>{{ __('Edit') }}
</a>
@endusercan

View File

@@ -18,13 +18,21 @@ class="ajaxform_instant_reload categoryEditForm">
</div>
<div class="col-lg-12 mb-2">
<label>{{ __("Icon") }}</label>
<div class="border rounded upload-img-container">
<label class="upload-v4">
<div class="img-wrp">
<img src="" alt="user" id="category_icon">
<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 Icon') }}</span>
</div>
<input type="file" name="icon" class="d-none" onchange="document.getElementById('category_icon').src = window.URL.createObjectURL(this.files[0])" accept="image/*">
</label>
<!-- Preview image -->
<img class="preview-image d-none" id="category_icon" src="" alt="Preview">
<input type="file" name="icon" class="preview-image-input" data-id="#category_icon" accept="image/*">
</div>
</div>
</div>

View File

@@ -62,7 +62,7 @@ class="filter-form" table="#set-commission-data">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.balance-sheet.pdf') }}">
<a target="_blank" href="{{ route('business.balance-sheet.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>
@@ -127,4 +127,4 @@ class="filter-form" table="#set-commission-data">
</div>
</div>
</div>
@endpush
@endpush

View File

@@ -4,30 +4,31 @@
{{-- Check only for Sale, Income & Due collect --}}
@if(!in_array($context ?? '', ['purchase', 'expense', 'due_pay']))
<option value="cheque">{{ __('Cheque') }}</option>
<option value="cheque">{{ __('Cheque') }}</option>
@endif
{{-- Wallet only for Sale, Purchase, Due (party exist) --}}
@if(!in_array($context ?? '', ['income', 'expense', 'guest_due']))
<option value="wallet">{{ __('Wallet') }}</option>
<option value="wallet">{{ __('Wallet') }}</option>
@endif
@foreach ($payment_types as $type)
<option value="{{ $type->id }}">{{ $type->name }}</option>
<option value="{{ $type->id }}">{{ $type->name }}</option>
@endforeach
</select>
{{-- hidden cheque input field --}}
<div class="cheque-input mt-2 d-none" disabled>
<input type="text" name="payments[main][cheque_number]" class="form-control" placeholder="Enter Cheque Number"
disabled>
<input type="text" name="payments[main][cheque_number]" class="form-control" placeholder="Enter Cheque Number" disabled>
</div>
{{-- Dynamic payments (optional data for edit) --}}
<div class="payment-main-container" @if(!empty($transactions)) data-existing-transactions='@json($transactions)'
data-change-amount="{{ $sale->change_amount ?? 0 }}" @endif>
<div class="payment-main-container"
@if(!empty($transactions))
data-existing-transactions='@json($transactions)'
@endif>
{{-- Dynamic payments will appear here --}}
</div>
<button type="button" class="add-payment-button">+ {{ __('Add Payment') }}</button>
</div>
</div>

View File

@@ -0,0 +1,67 @@
<div class="modal fade" id="shareModalDues" tabindex="-1" aria-labelledby="shareModalDuesLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="shareModalDuesLabel">{{ __('Share Invoice') }}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
@if(empty($copy) && empty($facebook) && empty($twitter) && empty($whatsapp))
<div class="text-center py-4">
<div class="mb-3">
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="#dc3545" stroke-width="2"/>
<path d="M12 8V12M12 16H12.01" stroke="#dc3545" stroke-width="2" stroke-linecap="round"/>
</svg>
</div>
<p class="text-muted mb-1" style="font-size: 14px; color: #6c757d;">Unable to share invoice</p>
<p class="m-0" style="font-size: 13px; color: #6c757d;">There is no unique ID or customer phone number available. You cannot share the invoice without a customer phone or a unique ID.</p>
</div>
@else
<input type="text" id="copyUrlInput" value="{{ $copy }}" readonly style="position:absolute; left:-9999px;">
<div class="share-options d-flex justify-content-center gap-4 flex-wrap">
@if($copy)
<a href="javascript:void(0)" class="share-option text-center" id="copyLinkBtn">
<svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="72" height="72" rx="36" fill="#EBEBEB" />
<path d="M48 31.5H34.5C32.8431 31.5 31.5 32.8431 31.5 34.5V48C31.5 49.6569 32.8431 51 34.5 51H48C49.6569 51 51 49.6569 51 48V34.5C51 32.8431 49.6569 31.5 48 31.5Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
<path d="M25.5 40.5H24C23.2044 40.5 22.4413 40.1839 21.8787 39.6213C21.3161 39.0587 21 38.2956 21 37.5V24C21 23.2044 21.3161 22.4413 21.8787 21.8787C22.4413 21.3161 23.2044 21 24 21H37.5C38.2956 21 39.0587 21.3161 39.6213 21.8787C40.1839 22.4413 40.5 23.2044 40.5 24V25.5" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
</svg>
<span class="d-block mt-2">Copy Link</span>
</a>
@endif
@if($facebook)
<a href="{{ $facebook }}" target="_blank" class="share-option text-center">
<svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="72" height="72" rx="36" fill="#EBEBEB" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.2727 33.5C25.8061 33.5 25.5 33.7878 25.5 35.1666V37.6667C25.5 39.0456 25.8061 39.3333 27.2727 39.3333H30.8182V49.3334C30.8182 50.7122 31.1243 51 32.5909 51H36.1364C37.6031 51 37.9091 50.7122 37.9091 49.3334V39.3333H41.8901C43.0025 39.3333 43.2891 39.1301 43.5947 38.1246L44.3544 35.6246C44.8778 33.9021 44.5553 33.5 42.6498 33.5H37.9091V29.3333C37.9091 28.4129 38.7027 27.6667 39.6818 27.6667H44.7273C46.1938 27.6667 46.5 27.3789 46.5 26V22.6667C46.5 21.2878 46.1938 21 44.7273 21H39.6818C34.7865 21 30.8182 24.731 30.8182 29.3333V33.5H27.2727Z" fill="#0F4AFF" />
</svg>
<span class="d-block mt-2">Facebook</span>
</a>
@endif
@if($twitter)
<a href="{{ $twitter }}" target="_blank" class="share-option text-center">
<svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="72" height="72" rx="36" fill="#EBEBEB" />
<path d="M22.5 49.5L33.8226 38.1774L22.5 49.5ZM49.5 22.5L38.1774 33.8226L49.5 22.5ZM38.1774 33.8226L30 22.5H22.5L33.8226 38.1774M38.1774 33.8226L49.5 49.5H42L33.8226 38.1774" fill="#121535" />
<path d="M22.5 49.5L33.8226 38.1774M38.1774 33.8226L49.5 49.5H42L33.8226 38.1774L22.5 22.5H30L38.1774 33.8226ZM49.5 22.5L38.1774 33.8226" stroke="#121535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
</svg>
<span class="d-block mt-2">X</span>
</a>
@endif
@if($whatsapp)
<a href="{{ $whatsapp }}" target="_blank" class="share-option text-center">
<svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="72" height="72" rx="36" fill="#EBEBEB" />
<path d="M19.875 36C19.875 27.0944 27.0944 19.875 36 19.875C44.9057 19.875 52.125 27.0944 52.125 36C52.125 44.9056 44.9057 52.125 36 52.125C33.7787 52.125 31.6595 51.6752 29.7308 50.8607C29.2249 50.6469 28.883 50.5029 28.6203 50.4067C28.3523 50.3085 28.2554 50.2947 28.2304 50.293C28.0895 50.2833 27.898 50.3188 26.989 50.5621L21.2908 52.0868C20.9027 52.1906 20.4886 52.0796 20.2045 51.7955C19.9204 51.5114 19.8094 51.0974 19.9133 50.7092L21.4379 45.0111C21.6811 44.102 21.7167 43.9105 21.707 43.7697C21.7053 43.7446 21.6915 43.6477 21.5934 43.3797C21.4971 43.1171 21.3531 42.7752 21.1394 42.2693C20.3248 40.3406 19.875 38.2213 19.875 36Z" fill="#00C933" />
<path d="M31.3204 27.3752L31.4593 27.3753C31.7899 27.3753 32.3466 27.3855 32.8611 27.5999C33.4758 27.8561 33.9823 28.3838 34.1119 29.2109L34.1133 29.2195C34.2739 30.2448 34.3962 31.024 34.4763 31.5752C34.5163 31.8511 34.5474 32.08 34.5678 32.2592C34.5846 32.4064 34.6056 32.609 34.5957 32.7784C34.5526 33.5128 34.2547 34.0969 33.9448 34.5493C33.7474 34.8371 33.4833 35.1499 33.2755 35.3959C33.1939 35.4926 33.121 35.5789 33.0642 35.6494L32.9708 35.7653C32.6142 36.2083 32.436 36.4297 32.4416 36.7027C32.4472 36.9758 32.6225 37.1761 32.9732 37.5767C33.1963 37.8316 33.4299 38.0815 33.6741 38.3257C33.9181 38.5697 34.168 38.8034 34.4229 39.0265C34.8235 39.3772 35.0239 39.5525 35.2969 39.5581C35.5699 39.5638 35.7915 39.3854 36.2343 39.0289L36.3504 38.9354C36.4207 38.8787 36.5071 38.8058 36.6037 38.7242C36.8497 38.5165 37.1626 38.2522 37.4505 38.0549C37.9029 37.7449 38.4868 37.447 39.2212 37.4041C39.3907 37.3942 39.5932 37.4152 39.7405 37.4318C39.9196 37.4522 40.1485 37.4833 40.4244 37.5235C40.9756 37.6036 41.7549 37.7257 42.7801 37.8863L42.7887 37.8877C43.6159 38.0173 44.1436 38.524 44.3997 39.1385C44.6142 39.653 44.6244 40.2098 44.6244 40.5403L44.6245 40.6793C44.6257 41.3989 44.6268 42.0626 44.3287 42.7153C44.112 43.1896 43.744 43.5931 43.3764 43.8869C43.0089 44.1808 42.5341 44.4508 42.0238 44.5577C41.3244 44.7041 40.7922 44.5834 40.2228 44.4542L40.144 44.4364C37.2576 43.7845 34.4272 42.2608 32.0831 39.9166C29.7389 37.5724 28.2151 34.742 27.5634 31.8556L27.5455 31.7769C27.4163 31.2075 27.2955 30.6753 27.442 29.9757C27.5488 29.4654 27.819 28.9908 28.1128 28.6232C28.4066 28.2556 28.8101 27.8876 29.2844 27.671C29.9371 27.3728 30.6009 27.3739 31.3204 27.3752Z" fill="white" />
</svg>
<span class="d-block mt-2">WhatsApp</span>
</a>
@endif
</div>
@endif
</div>
</div>
</div>
</div>

View File

@@ -267,8 +267,8 @@
<div class=" tab-table-container">
<div class="custom-tabs">
<button class="tab-item active" onclick="showTab('sales')">{{ __('Recent Sales') }}</button>
<button class="tab-item" onclick="showTab('purchase')">{{ __('Recent Purchase') }}</button>
<button class="tab-item active" data-tab="sales">{{ __('Recent Sales') }}</button>
<button class="tab-item" data-tab="purchase">{{ __('Recent Purchase') }}</button>
</div>
<div id="sales" class="tab-content dashboard-tab active">
<div class="table-container">
@@ -305,7 +305,7 @@
<tr>
<th class="text-start" scope="col">{{ __("Date") }}</th>
<th class="text-center" scope="col">{{ __("Invoice") }}</th>
<th class="text-center" scope="col">{{ __("Customer") }}</th>
<th class="text-center" scope="col">{{ __("Supplier") }}</th>
<th class="text-center" scope="col">{{ __("Total") }}</th>
<th class="text-center" scope="col">{{ __("Paid") }}</th>
<th class="text-center pr-3" scope="col">{{ __("Due") }}</th>

View File

@@ -69,11 +69,10 @@
@endphp
<td class="text-start">{{ currency_format($total_amount, currency: business_currency()) }}</td>
<td class="text-start {{ $day_book->type === 'credit' ? 'text-success' : '' }}">
{{ $day_book->type === 'credit' ? currency_format($total_amount, currency: business_currency()) : currency_format(0, currency: business_currency()) }}
{{ $day_book->type === 'credit' ? currency_format($day_book->amount, currency: business_currency()) : currency_format(0) }}
</td>
<td class="text-start {{ $day_book->type === 'debit' ? 'text-danger' : '' }}">
{{ $day_book->type === 'debit' ? currency_format($day_book->amount, currency: business_currency()) : currency_format(0, currency: business_currency()) }}
{{ $day_book->type === 'debit' ? currency_format($day_book->amount, currency: business_currency()) : currency_format(0) }}
</td>
<td class="text-start">
{{ $day_book->payment_type_id ? $day_book->paymentType?->name : ucfirst(explode('_', $day_book->transaction_type)[0]) }}
@@ -116,17 +115,6 @@
};
});
$page_money_in_new = $day_books->getCollection()->where('type', 'credit')->sum(function ($day_book) {
return match($day_book->platform) {
'sale' => $day_book->sale?->totalAmount ?? 0,
'sale_return' => $day_book->saleReturn?->sale?->totalAmount ?? 0,
'purchase' => $day_book->purchase?->totalAmount ?? 0,
'purchase_return' => $day_book->purchaseReturn?->purchase?->totalAmount ?? 0,
'due_collect', 'due_pay' => $day_book->dueCollect?->totalDue ?? 0,
default => 0
};
});
$page_money_in = $day_books->getCollection()->where('type', 'credit')->sum('amount');
$page_money_out = $day_books->getCollection()->where('type', 'debit')->sum('amount');
@endphp
@@ -139,7 +127,6 @@
<td class="d-print-none"></td>
<td class="d-print-none text-end"></td>
<td class="text-start">{{ currency_format($page_total_amount, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format($page_money_in_new, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format($page_money_in, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format($page_money_out, currency: business_currency()) }}</td>
<td></td>

View File

@@ -37,52 +37,29 @@
<td class="text-start">{{ ucwords(str_replace('_', ' ', $day_book->platform)) }}</td>
@if ($day_book->platform == 'sale')
<td class="text-start">
{{ currency_format($day_book->sale?->totalAmount ?? 0, currency: business_currency()) }}
</td>
<td class="text-start">{{ currency_format($day_book->sale?->totalAmount ?? 0, currency: business_currency()) }}</td>
@elseif ($day_book->platform == 'sale_return')
<td class="text-start">
{{ currency_format($day_book->saleReturn?->sale?->totalAmount ?? 0, currency: business_currency()) }}
</td>
<td class="text-start">{{ currency_format($day_book->saleReturn?->sale?->totalAmount ?? 0, currency: business_currency()) }}</td>
@elseif ($day_book->platform == 'purchase')
<td class="text-start">
{{ currency_format($day_book->purchase?->totalAmount ?? 0, currency: business_currency()) }}
</td>
<td class="text-start">{{ currency_format($day_book->purchase?->totalAmount ?? 0, currency: business_currency()) }}</td>
@elseif ($day_book->platform == 'purchase_return')
<td class="text-start">
{{ currency_format($day_book->purchaseReturn?->purchase?->totalAmount ?? 0, currency: business_currency()) }}
</td>
<td class="text-start">{{ currency_format($day_book->purchaseReturn?->purchase?->totalAmount ?? 0, currency: business_currency()) }}</td>
@elseif ($day_book->platform == 'due_collect' || $day_book->platform == 'due_pay')
<td class="text-start">
{{ currency_format($day_book->dueCollect?->totalDue ?? 0, currency: business_currency()) }}
</td>
<td class="text-start">{{ currency_format($day_book->dueCollect?->totalDue ?? 0, currency: business_currency()) }}</td>
@else
<td class="text-start">{{ currency_format(0, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format(0) }}</td>
@endif
@php
$total_amount = match ($day_book->platform) {
'sale' => $day_book->sale?->totalAmount ?? 0,
'sale_return' => $day_book->saleReturn?->sale?->totalAmount ?? 0,
'purchase' => $day_book->purchase?->totalAmount ?? 0,
'purchase_return' => $day_book->purchaseReturn?->purchase?->totalAmount ?? 0,
'due_collect', 'due_pay' => $day_book->dueCollect?->totalDue ?? 0,
default => 0
};
@endphp
@if ($day_book->type === 'credit')
<td class="text-start text-success">{{ currency_format($total_amount, currency: business_currency()) }}
</td>
<td class="text-start text-success">{{ currency_format($day_book->amount, currency: business_currency()) }}</td>
@else
<td class="text-start">{{ currency_format(0, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format(0) }}</td>
@endif
@if ($day_book->type === 'debit')
<td class="text-start text-danger">{{ currency_format($day_book->amount, currency: business_currency()) }}
</td>
<td class="text-start text-danger">{{ currency_format($day_book->amount, currency: business_currency()) }}</td>
@else
<td class="text-start">{{ currency_format(0, currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format(0) }}</td>
@endif
@if ($day_book->payment_type_id)
@@ -110,18 +87,7 @@
@php
$page_total_amount = $day_books->sum(function ($day_book) {
return match ($day_book->platform) {
'sale' => $day_book->sale?->totalAmount ?? 0,
'sale_return' => $day_book->saleReturn?->sale?->totalAmount ?? 0,
'purchase' => $day_book->purchase?->totalAmount ?? 0,
'purchase_return' => $day_book->purchaseReturn?->purchase?->totalAmount ?? 0,
'due_collect', 'due_pay' => $day_book->dueCollect?->totalDue ?? 0,
default => 0
};
});
$page_money_in_new = $day_books->where('type', 'credit')->sum(function ($day_book) {
return match ($day_book->platform) {
return match($day_book->platform) {
'sale' => $day_book->sale?->totalAmount ?? 0,
'sale_return' => $day_book->saleReturn?->sale?->totalAmount ?? 0,
'purchase' => $day_book->purchase?->totalAmount ?? 0,
@@ -149,4 +115,4 @@
<td class="d-print-none"></td>
</tr>
@endif
</table>
</table>

View File

@@ -23,19 +23,19 @@
<div class="col-lg-2 col-md-12 ">
<div class="loss-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Total Transaction') }}</p>
<p class="stat-value">{{ currency_format($total_amount, 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="total_money_in_out_amount">{{ currency_format($total_money_in_out_amount, 'icon', 2, business_currency()) }}</p>
</div>
</div>
<div class="col-lg-2 col-md-6 ">
<div class="profit-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Money In') }}</p>
<p class="stat-value">{{ currency_format($total_money_in, 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="total_money_in">{{ currency_format($total_money_in, 'icon', 2, business_currency()) }}</p>
</div>
</div>
<div class="col-lg-2 col-md-6 ">
<div class="sales-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Money Out') }}</p>
<p class="stat-value">{{ currency_format($total_money_out, 'icon', 2, business_currency()) }}</p>
<p class="stat-value" id="total_money_out">{{ currency_format($total_money_out, 'icon', 2, business_currency()) }}</p>
</div>
</div>
</div>
@@ -114,17 +114,17 @@
<div class="table-top-btn-group d-print-none p-2">
<ul>
<li>
<a href="{{ route('business.day-book-reports.csv') }}">
<a class="export-btn" href="{{ route('business.day-book-reports.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.day-book-reports.excel') }}">
<a class="export-btn" href="{{ route('business.day-book-reports.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.day-book-reports.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.day-book-reports.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Day Book Report List') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection
@@ -54,31 +66,19 @@
@elseif ($day_book->platform == 'due_collect' || $day_book->platform == 'due_pay')
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format($day_book->dueCollect?->totalDue ?? 0, currency: business_currency()) }}</td>
@else
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format(0, currency: business_currency()) }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format(0) }}</td>
@endif
@php
$total_amount = match($day_book->platform) {
'sale' => $day_book->sale?->totalAmount ?? 0,
'sale_return' => $day_book->saleReturn?->sale?->totalAmount ?? 0,
'purchase' => $day_book->purchase?->totalAmount ?? 0,
'purchase_return' => $day_book->purchaseReturn?->purchase?->totalAmount ?? 0,
'due_collect', 'due_pay' => $day_book->dueCollect?->totalDue ?? 0,
default => 0
};
@endphp
@if ($day_book->type === 'credit')
<td style="border:1px solid gainsboro; text-align:center; color:green;">{{ currency_format($total_amount, currency: business_currency()) }}</td>
<td style="border:1px solid gainsboro; text-align:center; color:green;">{{ currency_format($day_book->amount, currency: business_currency()) }}</td>
@else
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format(0, currency: business_currency()) }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format(0) }}</td>
@endif
@if ($day_book->type === 'debit')
<td style="border:1px solid gainsboro; text-align:center; color:red;">{{ currency_format($day_book->amount, currency: business_currency()) }}</td>
@else
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format(0, currency: business_currency()) }}</td>
<td style="border:1px solid gainsboro; text-align:center;">{{ currency_format(0) }}</td>
@endif
@if ($day_book->payment_type_id)
@@ -102,17 +102,6 @@
};
});
$page_money_in_new = $day_books->where('type', 'credit')->sum(function ($day_book) {
return match($day_book->platform) {
'sale' => $day_book->sale?->totalAmount ?? 0,
'sale_return' => $day_book->saleReturn?->sale?->totalAmount ?? 0,
'purchase' => $day_book->purchase?->totalAmount ?? 0,
'purchase_return' => $day_book->purchaseReturn?->purchase?->totalAmount ?? 0,
'due_collect', 'due_pay' => $day_book->dueCollect?->totalDue ?? 0,
default => 0
};
});
$page_money_in = $day_books->where('type', 'credit')->sum('amount');
$page_money_out = $day_books->where('type', 'debit')->sum('amount');
@endphp

View File

@@ -2,26 +2,27 @@
<table class="table" id="datatable">
<thead>
<tr>
<th>{{ __('SL') }}.</th>
<th class="d-print-none">{{ __('SL') }}.</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Email') }}</th>
<th>{{ __('Phone') }}</th>
<th>{{ __('Type') }}</th>
<th class="text-end">{{ __('Due Amount') }}</th>
<th>{{ __('Action') }}</th>
<th class="d-print-none">{{ __('Action') }}</th>
</tr>
</thead>
<tbody>
@foreach ($parties as $party)
<tr>
<td>{{ ($parties->currentPage() - 1) * $parties->perPage() + $loop->iteration }}</td>
<td class="d-print-none">{{ ($parties->currentPage() - 1) * $parties->perPage() + $loop->iteration }}
</td>
<td>{{ $party->name }}</td>
<td>{{ $party->email }}</td>
<td>{{ $party->phone }}</td>
@if ($party->type == 'Retailer')
<td>{{ __('Customer') }}</td>
@else
<td>{{ $party->type }}</td>
<td>{{ $party->type }}</td>
@endif
<td class="text-danger text-end">
{{ currency_format($party->due, currency: business_currency()) }}
@@ -39,32 +40,61 @@
</a>
</li>
<li>
<a href="#"
data-url="{{ route('business.dues.view-payment', $party->id) }}"
class="view-due-payment-btn" data-bs-toggle="modal"
data-bs-target="#view-due-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>
{{ __('View Payment') }}
</a>
</li>
@if ($party->dueCollect)
@if ($party->type != 'Supplier')
<li>
<a href="{{ route('business.collect.dues.invoice', $party->id) }}"
target="_blank">
<a href="#" data-url="{{ route('business.dues.view-payment', $party->id) }}"
class="view-due-payment-btn" data-bs-toggle="modal"
data-bs-target="#view-due-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>
{{ __('View Payment') }}
</a>
</li>
@endif
@if (moduleCheck('MarketingAddon'))
<li>
<a href="{{ route('business.payment-reminder', $party->id) }}">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40008926_148433)">
<path
d="M18.3327 9.9974C18.3327 14.5997 14.6017 18.3307 9.99935 18.3307C5.39697 18.3307 1.66602 14.5997 1.66602 9.9974C1.66602 5.39502 5.39697 1.66406 9.99935 1.66406C14.6017 1.66406 18.3327 5.39502 18.3327 9.9974Z"
stroke="#4B5563" stroke-width="1.5" />
<path
d="M12.2578 8.38067C12.1753 7.74512 11.4455 6.71827 10.1333 6.71824C8.60868 6.71822 7.96715 7.56263 7.83697 7.98484C7.63389 8.54958 7.6745 9.71067 9.4616 9.83725C11.6955 9.99558 12.5904 10.2593 12.4766 11.6264C12.3627 12.9935 11.1174 13.2889 10.1333 13.2572C9.14918 13.2256 7.53905 12.7735 7.47656 11.5575M9.97718 5.82812V6.72127M9.97718 13.249V14.1614"
stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" />
</g>
<defs>
<clipPath id="clip0_40008926_148433">
<rect width="20" height="20" fill="white" />
</clipPath>
</defs>
</svg>
{{ __('Payment Reminder') }}
</a>
</li>
@endif
@php
$due = $party->dueCollect()->latest()->first();
@endphp
@if ($due)
<li>
<a href="{{ route('business.collect.dues.invoice', $due->id) }}" target="_blank">
<img src="{{ asset('assets/images/icons/Invoic.svg') }}" alt="">
{{ __('Invoice') }}
</a>
@@ -75,10 +105,22 @@ class="view-due-payment-btn" data-bs-toggle="modal"
</td>
</tr>
@endforeach
</tbody>
@if ($parties->count() > 0)
<tr class="table-footer">
<td class="text-start">{{ __('Total') }}</td>
<td class="d-print-none"></td>
<td></td>
<td></td>
<td></td>
<td class="text-end">
{{ currency_format($parties->sum('due'), currency: business_currency()) }}
</td>
<td></td>
</tr>
@endif
</table>
</div>
<div class="mt-3">
{{ $parties->links('vendor.pagination.bootstrap-5') }}
</div>
</div>

View File

@@ -0,0 +1,42 @@
<table class="table" id="datatable">
<thead>
<tr>
<th>{{ __('SL') }}.</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Email') }}</th>
<th>{{ __('Phone') }}</th>
<th>{{ __('Type') }}</th>
<th>{{ __('Due Amount') }}</th>
</tr>
</thead>
<tbody>
@foreach ($parties as $party)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $party->name }}</td>
<td>{{ $party->email }}</td>
<td>{{ $party->phone }}</td>
@if ($party->type == 'Retailer')
<td>{{ __('Customer') }}</td>
@else
<td>{{ $party->type }}</td>
@endif
<td class="text-danger text-end">
{{ currency_format($party->due, currency: business_currency()) }}
</td>
</tr>
@endforeach
</tbody>
@if ($parties->count() > 0)
<tr class="table-footer">
<td class="text-start">{{ __('Total') }}</td>
<td class="d-print-none"></td>
<td></td>
<td></td>
<td></td>
<td class="text-end">
{{ currency_format($parties->sum('due'), currency: business_currency()) }}
</td>
</tr>
@endif
</table>

View File

@@ -12,23 +12,29 @@
<div class="d-flex align-items-center justify-content-center gap-3">
<div class="profit-card p-3 text-white">
<p class="stat-title">{{ __('Supplier Due') }}</p>
<p class="stat-value">{{ currency_format($total_supplier_due, currency: business_currency()) }}</p>
<p class="stat-value" id="total_supplier_due">{{ currency_format($total_supplier_due, currency: business_currency()) }}</p>
</div>
<div class="loss-card p-3 text-white">
<p class="stat-title">{{ __('Customer Due') }}</p>
<p class="stat-value">{{ currency_format($total_customer_due, currency: business_currency()) }}</p>
<p class="stat-value" id="total_customer_due">{{ currency_format($total_customer_due, currency: business_currency()) }}</p>
</div>
</div>
</div>
<div class="card">
<div class="card-bodys">
<div class="table-header p-16">
<div class="table-header p-16 d-print-none">
<h4>{{ __('Due List') }}</h4>
</div>
<div class="table-top-form p-16">
<form action="{{ route('business.dues.index') }}" method="GET" class="filter-form" table="#due-reports-data">
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 class="mt-2">{{ __('Due List') }}</h4>
</div>
<div class="table-top-form p-16 d-print-none">
<form action="{{ route('business.dues.index') }}" method="GET" class="report-filter-form" table="#due-reports-data">
<div class="table-top-left d-flex gap-3 ">
<div class="gpt-up-down-arrow position-relative">
@@ -61,6 +67,30 @@
</div>
</div>
</form>
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a class="export-btn" class="export-btn" href="{{ route('business.dues.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a class="export-btn" class="export-btn" href="{{ route('business.dues.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a class="export-btn" class="export-btn" target="_blank" href="{{ route('business.dues.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>
<li>
<a onclick="window.print()" class="print-window">
<img src="{{ asset('assets/images/logo/printer.svg') }}" alt="">
</a>
</li>
</ul>
</div>
</div>
</div>

View File

@@ -5,7 +5,7 @@
@endsection
@section('main_content')
@if (invoice_setting() == '3_inch_80mm' && moduleCheck('ThermalPrinterAddon'))
@if (invoice_setting($party->business_id) == '3_inch_80mm' && moduleCheck('ThermalPrinterAddon'))
@include('thermalprinteraddon::due-collects.3_inch_80mm')
@else
@include('business::dues.invoices.a4-size')

View File

@@ -1,23 +1,37 @@
@php
$isBusinessRoute = request()->routeIs('business.dues.*');
$business_id = $party->business_id;
@endphp
<div class="invoice-container">
<div class="invoice-content p-4">
{{-- Print Header --}}
<div class="row py-2 d-print-none d-flex align-items-start justify-content-between border-bottom print-container">
<div
class="row py-2 d-print-none d-flex align-items-start justify-content-between border-bottom print-container">
<div class="col-md-6 d-flex align-items-center p-2">
<div class="col-md-4 d-flex align-items-center p-2">
<span class="Money-Receipt white-text">{{ __('Money Receipt') }}</span>
</div>
<div class="col-md-6 d-flex justify-content-end align-items-end">
<div class="d-flex gap-3">
<div class="col-md-8 d-flex justify-content-start justify-content-md-end align-items-end">
<div class="d-flex gap-3 flex-wrap">
<a href="javascript:void(0)" class="pdf-btn print-btn share-btn" data-bs-toggle="modal" data-bs-target="#shareModalDues">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.8303 3.75H6.96224C4.50701 3.75 3.27939 3.75 2.51665 4.48223C1.75391 5.21447 1.75391 6.39298 1.75391 8.75V12.0833C1.75391 14.4403 1.75391 15.6188 2.51665 16.3511C3.27939 17.0833 4.50701 17.0833 6.96224 17.0833H10.4678C12.923 17.0833 14.1506 17.0833 14.9133 16.3511C15.4075 15.8767 15.5815 15.2149 15.6428 14.1667" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
<path d="M13.4723 5.83073V3.20869C13.4723 3.04597 13.6097 2.91406 13.7792 2.91406C13.8605 2.91406 13.9386 2.9451 13.9962 3.00035L17.9396 6.7861C18.1362 6.97475 18.2465 7.23061 18.2465 7.4974C18.2465 7.76418 18.1362 8.02005 17.9396 8.20869L13.9962 11.9944C13.9386 12.0497 13.8605 12.0807 13.7792 12.0807C13.6097 12.0807 13.4723 11.9488 13.4723 11.7861V9.16406H10.9298C7.39583 9.16406 6.09375 12.0807 6.09375 12.0807V9.9974C6.09375 7.69621 8.03696 5.83073 10.434 5.83073H13.4723Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
</svg>
{{__('Share')}}
</a>
<form action="{{ route('business.collect.dues.mail', $party->id) }}" method="POST"
class="ajaxform_instant_reload">
@csrf
<button type="submit" class="btn custom-print-btn"><img class="w-10 h-10" src="{{ asset('assets/img/email.svg') }}"><span class="pl-1">{{__('Email')}}</span>
<button type="submit" class="btn custom-print-btn submit-btn"><img class="w-10 h-10"
src="{{ asset('assets/img/email.svg') }}"><span class="pl-1">{{__('Email')}}</span>
</button>
</form>
<a target="blank" href="{{ route('business.collect.dues.pdf', ['due_id' => $party->id]) }}"
<a target="_blank" href="{{ route('business.collect.dues.pdf', ['due_id' => $party->id]) }}"
class="pdf-btn print-btn">
<img class="w-10 h-10" src="{{ asset('assets/img/pdf.svg') }}">
{{__('PDF')}}</a>
@@ -31,18 +45,22 @@ class="pdf-btn print-btn">
<div class="d-flex justify-content-between align-items-center gap-3 print-logo-container">
<!-- Left Side: Logo and Content -->
<div class="d-flex align-items-center gap-2 logo">
@if ((get_business_option('business-settings')['show_a4_invoice_logo'] ?? 0) == 1 )
<img class="invoice-logo" src="{{ asset(get_business_option('business-settings')['a4_invoice_logo'] ?? 'assets/images/default.svg') ?? '' }}" alt="">
@if ((get_business_option('business-settings', $business_id)['show_a4_invoice_logo'] ?? 0) == 1)
<img class="invoice-logo"
src="{{ Storage::url(get_business_option('business-settings', $business_id)['a4_invoice_logo'] ?? 'assets/images/default.svg') ?? '' }}"
alt="">
@endif
</div>
<!-- Right Side: Invoice -->
<div class="address-container">
@if (($due_collect->business->meta['show_address'] ?? 0) == 1)
<p> {{__('Address')}} : {{ $due_collect->branch?->address ?? $due_collect->business?->address ?? '' }}</p>
<p> {{__('Address')}} : {{ $due_collect->branch?->address ?? $due_collect->business?->address ?? '' }}
</p>
@endif
@if (($due_collect->business->meta['show_phone_number'] ?? 0) == 1)
<p> {{__('Mobile')}} : {{ $due_collect->branch?->phone ?? $due_collect->business?->phoneNumber ?? '' }}</p>
<p> {{__('Mobile')}} : {{ $due_collect->branch?->phone ?? $due_collect->business?->phoneNumber ?? '' }}
</p>
@endif
@if (($due_collect->business->meta['show_email'] ?? 0) == 1)
<p> {{__('Email')}} : {{ $due_collect->branch?->email ?? $due_collect->business?->email ?? '' }}</p>
@@ -59,7 +77,8 @@ class="pdf-btn print-btn">
</div>
</div>
<h3 class="right-invoice receipt-invoice-title mb-0 align-self-center white-text ">{{ __('MONEY RECEIPT') }}</h3>
<h3 class="right-invoice receipt-invoice-title mb-0 align-self-center white-text ">{{ __('MONEY RECEIPT') }}
</h3>
<div class="d-flex align-items-start justify-content-between flex-wrap">
<div>
<table class="table">
@@ -114,12 +133,13 @@ class="pdf-btn print-btn">
<tr class="in-table-body">
<td class="text-center">1</td>
<td class="text-start">
{{ currency_format($due_collect->totalDue ?? 0, currency: business_currency()) }}</td>
<td class="text-end">
{{ currency_format($due_collect->payDueAmount ?? 0, currency: business_currency()) }}
{{ currency_format($due_collect->totalDue ?? 0, currency: business_currency($business_id)) }}
</td>
<td class="text-end">
{{ currency_format($due_collect->dueAmountAfterPay ?? 0, currency: business_currency()) }}
{{ currency_format($due_collect->payDueAmount ?? 0, currency: business_currency($business_id)) }}
</td>
<td class="text-end">
{{ currency_format($due_collect->dueAmountAfterPay ?? 0, currency: business_currency($business_id)) }}
</td>
</tr>
</tbody>
@@ -132,54 +152,54 @@ class="pdf-btn print-btn">
<tr class="in-table-row">
<td class="text-start"></td>
</tr>
@if ((get_business_option('business-settings')['show_note'] ?? 0) == 1)
@if ((get_business_option('business-settings', $business_id)['show_note'] ?? 0) == 1)
<tr class="in-table-row">
<td class="text-start pb-2 pt-3">
{{ get_business_option('business-settings')['note'] ?? '' }}
{{ get_business_option('business-settings', $business_id)['note'] ?? '' }}
</td>
</tr>
@endif
<tr class="in-table-row">
<tr class="in-table-row">
<td class="text-start paid-by">{{ __('Paid by') }} :
{{ $transactionTypes ?? ($due_collect->payment_type_id ? ($due_collect->payment_type->name ?? '') : ($due_collect->paymentType ?? '')) }}
</td>
</tr>
</tbody>
</table>
@if ($bank_detail->show_in_invoice ?? 0 == 1)
<div class="bank-details-container">
<div class="bank-details-title">
{{__('Bank Details')}}
</div>
<div class="back-details-content">
<table class="table mb-2">
<tbody>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('Name') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->name }}</td>
</tr>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('Account No') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->meta['account_number'] ?? '' }}</td>
</tr>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('UPI ID') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->meta['upi_id'] ?? '' }}</td>
</tr>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('Holders Nmae') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->meta['account_holder'] ?? '' }}</td>
</tr>
</tbody>
</table>
</div>
@if ($bank_detail->show_in_invoice ?? 0 == 1)
<div class="bank-details-container">
<div class="bank-details-title">
{{__('Bank Details')}}
</div>
@endif
<div class="back-details-content">
<table class="table mb-2">
<tbody>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('Name') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->name }}</td>
</tr>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('Account No') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->meta['account_number'] ?? '' }}</td>
</tr>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('UPI ID') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->meta['upi_id'] ?? '' }}</td>
</tr>
<tr class="in-table-row">
<td class="text-start in-table-title">{{ __('Holders Nmae') }}</td>
<td class="clone-width">:</td>
<td class="text-start">{{ $bank_detail->meta['account_holder'] ?? '' }}</td>
</tr>
</tbody>
</table>
</div>
</div>
@endif
</div>
<div>
<table class="table">
@@ -188,15 +208,17 @@ class="pdf-btn print-btn">
<td class="text-end">{{ __('Payable Amount') }}</td>
<td class="text-end">:</td>
<td class="text-end">
{{ currency_format($due_collect->totalDue ?? 0, currency: business_currency()) }}
{{ currency_format($due_collect->totalDue ?? 0, currency: business_currency($business_id)) }}
</td>
</td>
</tr>
<tr class="in-table-row-bottom">
<td class="text-end">{{ $party->type === 'Supplier' ? __('Paid Amount') : __('Received Amount') }}</td>
<td class="text-end">
{{ $party->type === 'Supplier' ? __('Paid Amount') : __('Received Amount') }}
</td>
<td class="text-end">:</td>
<td class="text-end">
{{ currency_format($due_collect->payDueAmount ?? 0, currency: business_currency()) }}
{{ currency_format($due_collect->payDueAmount ?? 0, currency: business_currency($business_id)) }}
</td>
</td>
</tr>
@@ -204,7 +226,7 @@ class="pdf-btn print-btn">
<td class="text-end">{{ __('Due Amount') }}</td>
<td class="text-end">:</td>
<td class="text-end">
{{ currency_format($due_collect->dueAmountAfterPay ?? 0, currency: business_currency()) }}
{{ currency_format($due_collect->dueAmountAfterPay ?? 0, currency: business_currency($business_id)) }}
</td>
</tr>
</tbody>
@@ -223,15 +245,28 @@ class="pdf-btn print-btn">
</div>
</div>
</div>
@if ((get_business_option('business-settings')['show_warranty'] ?? 0) == 1)
@if ((get_business_option('business-settings', $business_id)['show_warranty'] ?? 0) == 1)
<div class="warranty-container-2 mt-3">
<p>
@if ((get_business_option('business-settings')['show_warranty'] ?? 0) == 1)
<span>{{ get_business_option('business-settings')['warranty_void_label'] ?? '' }} - </span>
@if ((get_business_option('business-settings', $business_id)['show_warranty'] ?? 0) == 1)
<span>{{ get_business_option('business-settings', $business_id)['warranty_void_label'] ?? '' }} -
</span>
@endif
{{ get_business_option('business-settings')['warranty_void'] ?? '' }}
{{ get_business_option('business-settings', $business_id)['warranty_void'] ?? '' }}
</p>
</div>
@endif
<h4 class="tax-powered pt-3 pb-0">{{ get_option('general')['admin_footer_text'] ?? '' }}:
{{ get_option('general')['admin_footer_link_text'] ?? '' }}
</h4>
</div>
</div>
@php
$shareUrl = $due_collect->unique_id ? route('due.invoice.unique', $due_collect->unique_id) : ($due_collect->party?->phone ? route('due.invoice', ['due_id' => $due_collect->id, 'phone' => $due_collect->party?->phone]) : '');
$facebook = $shareUrl ? 'https://www.facebook.com/sharer/sharer.php?u=' . urlencode($shareUrl) : '';
$twitter = $shareUrl ? 'https://twitter.com/intent/tweet?url=' . urlencode($shareUrl) : '';
$whatsapp = $shareUrl ? 'https://wa.me/?text=' . urlencode($shareUrl) : '';
@endphp
@include('business::component.share-modal', ['copy' => $shareUrl, 'facebook' => $facebook, 'twitter' => $twitter, 'whatsapp' => $whatsapp])

View File

@@ -2,19 +2,19 @@
<table class="table" id="datatable">
<thead>
<tr>
<th>{{ __('SL') }}.</th>
<th class="d-print-none">{{ __('SL') }}.</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Email') }}</th>
<th>{{ __('Phone') }}</th>
<th>{{ __('Type') }}</th>
<th class="text-end">{{ __('Due Amount') }}</th>
<th>{{ __('Action') }}</th>
<th class="d-print-none">{{ __('Action') }}</th>
</tr>
</thead>
<tbody>
@foreach ($parties as $party)
<tr>
<td>{{ ($parties->currentPage() - 1) * $parties->perPage() + $loop->iteration }}</td>
<td class="d-print-none">{{ ($parties->currentPage() - 1) * $parties->perPage() + $loop->iteration }}</td>
<td>{{ $party->name }}</td>
<td>{{ $party->email }}</td>
<td>{{ $party->phone }}</td>
@@ -59,10 +59,14 @@ class="view-due-payment-btn" data-bs-toggle="modal"
{{ __('View Payment') }}
</a>
</li>
@if ($party->dueCollect)
@php
$due = $party->dueCollect()->latest()->first();
@endphp
@if ($due)
<li>
<a href="{{ route('business.collect.dues.invoice', $party->id) }}"
target="_blank">
<a href="{{ route('business.collect.dues.invoice', $due->id) }}" target="_blank">
<img src="{{ asset('assets/images/icons/Invoic.svg') }}" alt="">
{{ __('Invoice') }}
</a>
@@ -74,6 +78,20 @@ class="view-due-payment-btn" data-bs-toggle="modal"
</tr>
@endforeach
</tbody>
@if ($parties->count() > 0)
<tr class="table-footer">
<td class="text-start">{{ __('Total') }}</td>
<td class="d-print-none"></td>
<td></td>
<td></td>
<td></td>
<td class="text-end">
{{ currency_format($parties->sum('due'), currency: business_currency()) }}
</td>
<td class="text-end">
</td>
</tr>
@endif
</table>
</div>
<div class="mt-3">

View File

@@ -1,7 +1,7 @@
@extends('layouts.business.master')
@section('title')
{{ __('Due List') }}
{{ __(':type Due List', ['type' => request('type') === 'Retailer' ? __('Customer') : __(request('type'))]) }}
@endsection
@section('main_content')
@@ -10,11 +10,17 @@
<div class="card">
<div class="card-bodys">
<div class="table-header p-16">
<h4>{{ __('Due List') }}</h4>
<div class="table-header p-16 d-print-none">
<h4>{{ __(':type Due List', ['type' => request('type') === 'Retailer' ? __('Customer') : __(request('type'))]) }}</h4>
</div>
<div class="table-top-form p-16">
<form action="{{ route('business.party.dues') }}" method="GET" class="filter-form" table="#party-reports-data">
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 class="mt-2">{{ __(':type Due List', ['type' => request('type') === 'Retailer' ? __('Customer') : __(request('type'))]) }}</h4>
</div>
<div class="table-top-form p-16 d-print-none">
<form action="{{ route('business.party.dues') }}" method="GET" class="report-filter-form" table="#party-reports-data">
@if(request('type'))
<input type="hidden" name="type" value="{{ request('type') }}">
@@ -41,6 +47,30 @@
</div>
</div>
</form>
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a class="export-btn" href="{{ route('business.dues.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a class="export-btn" href="{{ route('business.dues.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a class="export-btn" target="_blank" href="{{ route('business.dues.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>
<li>
<a onclick="window.print()" class="print-window">
<img src="{{ asset('assets/images/logo/printer.svg') }}" alt="">
</a>
</li>
</ul>
</div>
</div>
</div>

View File

@@ -0,0 +1,64 @@
@extends('layouts.business.pdf.pdf_layout')
@section('pdf_title')
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Due List') }}</h4>
</div>
@endsection
@section('pdf_content')
<table width="100%" cellpadding="6" cellspacing="0"
style="border-collapse: collapse; border: 1px solid gainsboro; font-size:12px;"
id="datatable">
<thead>
<tr style="background-color: #C52127; color: white;">
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Name') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Email') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Phone') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Type') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Due Amount') }}</th>
</tr>
</thead>
<tbody>
@foreach ($parties as $party)
<tr style="background-color: {{ $loop->even ? '#F5F5F5' : '#FFFFFF' }};">
<td style="border:1px solid gainsboro; text-align:center;">
{{ $party->name }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $party->email }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $party->phone }}
</td>
@if ($party->type == 'Retailer')
<td style="border:1px solid gainsboro; text-align:center;">{{ __('Customer') }}</td>
@else
<td style="border:1px solid gainsboro; text-align:center;">
{{ $party->type }}
</td>
@endif
<td style="border:1px solid gainsboro; text-align:center;">
{{ currency_format($party->due, currency: business_currency()) }}
</td>
</tr>
@endforeach
</tbody>
@if ($parties->count() > 0)
<tfoot>
<tr style="background-color:#C52127; color:#FFFFFF; font-weight:bold;">
<td style="border:1px solid gainsboro; text-align:center; color: white">
{{ __('Total') }}
</td>
<td style="border:1px solid gainsboro; text-align:center;"></td>
<td style="border:1px solid gainsboro; text-align:center;"></td>
<td style="border:1px solid gainsboro; text-align:center;"></td>
<td style="border:1px solid gainsboro; text-align:center; color: white; font-weight: 600;">
{{ currency_format($parties->sum('due'), currency: business_currency()) }}
</td>
</tr>
</tfoot>
@endif
</table>
@endsection

View File

@@ -156,7 +156,7 @@
@endphp
@section('pdf_content')
<div class="in-container">
<div class="in-container" dir="{{ app()->getLocale() == 'ar' ? 'rtl' : 'ltr' }}">
<div class="in-content">
{{-- <table width="100%" class="invoice-top-header">
<tr>
@@ -247,7 +247,7 @@
<table width="100%" style="margin-bottom:10px;">
<tr>
<td width="50%" valign="top"
style="text-align:{{ app()->getLocale() == 'ar' ? 'left' : 'left' }};">
style="text-align:{{ app()->getLocale() == 'ar' ? 'right' : 'left' }};">
<table>
<tr>
<td>{{ __('Invoice') }}</td>
@@ -265,7 +265,7 @@
</td>
<td width="50%" valign="top"
style="text-align:{{ app()->getLocale() == 'ar' ? 'right' : 'right' }};">
style="text-align:{{ app()->getLocale() == 'ar' ? 'left' : 'right' }};">
<table>
<tr>
<td>{{ __('Date') }}</td>

View File

@@ -0,0 +1,360 @@
@extends('layouts.business.master')
@section('title')
{{ __('Create Product') }}
@endsection
@section('main_content')
<div class="erp-table-section">
<div class="container-fluid">
<div class="card">
<div class="table-header p-16">
<h4>{{ __('Add New Estimates') }}</h4>
</div>
<div class="order-form-section p-16">
<form method="post">
<input type="hidden" name="type" value="inventory">
<div class="row">
<!-- Customer -->
<div class="col-lg-6">
<label>{{ __('Customer') }}</label>
<div class="input-group w-100">
<div class="gpt-up-down-arrow estimate-dropdown position-relative w-100">
<select class="form-control inventory-customer-select w-100">
<option value="">{{ __('Select a Customer') }}</option>
<option>{{ __('John Doe (Retail)') }}</option>
<option>{{ __('ABC Store (Wholesale)') }}</option>
</select>
<span></span>
</div>
<button type="button"
class="btn btn-danger square-btn square-btn-2 d-flex justify-content-center align-items-center">
{{-- <img src="{{ asset("assets/images/icons/plus-2.svg") }}" alt=""> --}}
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 4.17188V15.8385" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.16602 10H15.8327" stroke="var(--clr-primary)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
<!-- Invoice -->
<div class="col-lg-3">
<label>{{ __('Reference') }}.</label>
<input type="text" placeholder="Ex: 5" class="form-control"
value="" readonly>
</div>
<!-- Date -->
<div class="col-lg-3">
<label>{{ __('Quotation Number') }}</label>
<input placeholder="Ex: Q-000123" type="text" class="form-control">
</div>
<!-- Product -->
<div class="col-lg-6">
<div class="address-wrapper">
<!-- Billing -->
<div class="address-box">
<div class="address-title">
<span>Billing Address:
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40006660_159917)">
<path d="M4.08578 9.9142L9.91423 4.08578C10.1868 3.81316 10.3231 3.67685 10.396 3.5298C10.5347 3.25002 10.5347 2.92155 10.396 2.64177C10.3231 2.49472 10.1868 2.35841 9.91423 2.08578C9.64158 1.81316 9.50528 1.67685 9.35823 1.60398C9.07843 1.46534 8.74998 1.46534 8.47018 1.60398C8.32313 1.67685 8.18683 1.81316 7.91423 2.08578L2.08579 7.9142C1.79676 8.2032 1.65224 8.34775 1.57612 8.5315C1.5 8.71525 1.5 8.91965 1.5 9.3284V10.5H2.67157C3.08033 10.5 3.2847 10.5 3.46847 10.4239C3.65224 10.3478 3.79675 10.2032 4.08578 9.9142Z" stroke="#00AE2E" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 10.5H9" stroke="#00AE2E" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.25 2.75L9.25 4.75" stroke="#00AE2E" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_40006660_159917">
<rect width="12" height="12" fill="white"/>
</clipPath>
</defs>
</svg>
</span>
<i class="fa-solid fa-pen edit-icon"></i>
</div>
<p>
Walk-In Customer, Linking Street,<br>
Phoenix, Arizona, USA
</p>
</div>
<!-- Shipping -->
<div class="address-box">
<div class="address-title">
<span>Shipping Address:
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40006660_159917)">
<path d="M4.08578 9.9142L9.91423 4.08578C10.1868 3.81316 10.3231 3.67685 10.396 3.5298C10.5347 3.25002 10.5347 2.92155 10.396 2.64177C10.3231 2.49472 10.1868 2.35841 9.91423 2.08578C9.64158 1.81316 9.50528 1.67685 9.35823 1.60398C9.07843 1.46534 8.74998 1.46534 8.47018 1.60398C8.32313 1.67685 8.18683 1.81316 7.91423 2.08578L2.08579 7.9142C1.79676 8.2032 1.65224 8.34775 1.57612 8.5315C1.5 8.71525 1.5 8.91965 1.5 9.3284V10.5H2.67157C3.08033 10.5 3.2847 10.5 3.46847 10.4239C3.65224 10.3478 3.79675 10.2032 4.08578 9.9142Z" stroke="#00AE2E" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 10.5H9" stroke="#00AE2E" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.25 2.75L9.25 4.75" stroke="#00AE2E" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_40006660_159917">
<rect width="12" height="12" fill="white"/>
</clipPath>
</defs>
</svg>
</span>
<i class="fa-solid fa-pen edit-icon"></i>
</div>
<p>
Walk-In Customer, Linking Street,<br>
Phoenix, Arizona, USA
</p>
</div>
</div>
</div>
<div class="col-lg-3">
<label>{{ __('Currency') }}</label>
<div class="gpt-up-down-arrow position-relative w-100">
<select class="form-control">
<option>{{ __('USD $') }}</option>
</select>
<span></span>
</div>
</div>
<div class="col-lg-3">
<label>{{ __('Warehouse') }}</label>
<div class="gpt-up-down-arrow position-relative w-100">
<select class="form-control">
<option>{{ __('Select a warehouse') }}</option>
</select>
<span></span>
</div>
</div>
<div class="col-lg-3">
<label>{{ __('Quotation Date') }}</label>
<input type="date" class="form-control">
</div>
<div class="col-lg-3">
<label>{{ __('Expire Date') }}</label>
<input type="date" class="form-control">
</div>
<div class="col-lg-3">
<label>{{ __('Discount Type') }}</label>
<div class="gpt-up-down-arrow position-relative w-100">
<select class="form-control">
<option>{{ __('Percentage % ') }}</option>
</select>
<span></span>
</div>
</div>
<div class="col-lg-3">
<label>{{ __('Status') }}</label>
<div class="gpt-up-down-arrow position-relative w-100">
<select class="form-control">
<option>{{ __('Status') }}</option>
</select>
<span></span>
</div>
</div>
<div class="col-lg-9">
<label>{{ __('Select Product') }}</label>
<div class="input-group w-100">
<div class="gpt-up-down-arrow estimate-dropdown position-relative w-100">
<select class="form-control inventory-customer-select w-100">
<option value="">{{ __('Search product by name') }}</option>
</select>
<span></span>
</div>
<button type="button"
class="btn btn-danger square-btn d-flex justify-content-center align-items-center">
<img src="{{ asset("assets/images/icons/barcode1.svg") }}" alt="">
</button>
</div>
</div>
<div class="col-lg-3">
<label>{{ __('Category') }}</label>
<div class="gpt-up-down-arrow position-relative w-100">
<select class="form-control">
<option>{{ __('Select a category') }}</option>
</select>
<span></span>
</div>
</div>
<!-- Left Amount -->
<div class="col-sm-12 col-md-7 col-lg-7 mt-5">
{{-- <div class="estimate-form-wrapper">
<div class="estimate-form-group">
<span class="estimate-form-label">Term & Condition</span>
<textarea
class="estimate-form-textarea"
placeholder="Enter Term & Condition"
rows="2"></textarea>
</div>
<div class="estimate-form-group">
<span class="estimate-form-label">Note</span>
<textarea
class="estimate-form-textarea"
placeholder="Enter note"
rows="2"></textarea>
</div>
</div> --}}
<div class="expense-wrapper">
<button type="button" id="addExpenseBtn" class="expense-add-btn">
+ Add Additional Expense
</button>
<div id="expenseContainer">
<!-- dynamic rows -->
</div>
<div class="estimate-form-group">
<span class="estimate-form-label">Note</span>
<textarea
class="estimate-form-textarea"
placeholder="Enter note"
rows="2"></textarea>
</div>
</div>
</div>
<!-- Right Amount -->
<div class="col-sm-12 col-md-5 col-lg-5 mt-5 sub-total-container">
<div class="payment-container mb-3 amount-info-container estimate-container inventory-amount-info-container">
<div class="mb-2 d-flex align-items-center justify-content-between">
<h6>{{ __('Sub Total') }}</h6>
<h6 class="fw-bold" id="sub_total">
{{ __('৳ 0.00') }}
</h6>
</div>
<div class="row save-amount-container align-items-center mb-2">
<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 align-items-center gap-2">
<select class="form-select vat_select">
<option value="">{{ __('Select') }}</option>
<option value="1">{{ __('Standard Vat (5%)') }}</option>
<option value="2">{{ __('Reduced Vat (10%)') }}</option>
</select>
</div>
<input
type="number"
class="form-control right-start-input"
placeholder="{{ __('0') }}"
value="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 align-items-center gap-2">
<select class="form-select discount_type">
<option value="flat">
{{ __('Flat (৳)') }}
</option>
<option value="percent">
{{ __('Percent (%)') }}
</option>
</select>
</div>
<input
type="number"
class="form-control right-start-input"
placeholder="{{ __('0') }}"
value="0"
>
</div>
</div>
<div class="shopping-crg-grid mb-2">
<h6 class="payment-title">
{{ __('Shipping Charge') }}
</h6>
<input
type="number"
class="form-control right-start-input"
placeholder="{{ __('0') }}"
value="0"
>
</div>
<div class="d-flex align-items-center justify-content-between fw-bold">
<div>{{ __('Total Amount') }}</div>
<h6 class="fw-bold" id="total_amount">
{{ __('৳ 0.00') }}
</h6>
</div>
</div>
</div>
<!-- Buttons -->
<div class="col-lg-12 text-center mt-4">
<button class="theme-btn border-btn m-2">
{{ __('Reset') }}
</button>
<button class="theme-btn m-2">
{{ __('Save & Print') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@push('js')
<script>
const addExpenseBtn = document.getElementById("addExpenseBtn");
const expenseContainer = document.getElementById("expenseContainer");
addExpenseBtn.addEventListener("click", () => {
const row = document.createElement("div");
row.className = "expense-row";
row.innerHTML = `
<input type="text" class="form-control" placeholder="Enter expense name">
<input type="text" class="form-control" placeholder="Ex: $150">
<button type="button" class="expense-delete-btn">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.25 4.58398L15.7336 12.9382C15.6016 15.0727 15.5357 16.1399 15.0007 16.9072C14.7361 17.2866 14.3956 17.6067 14.0006 17.8473C13.2017 18.334 12.1325 18.334 9.99392 18.334C7.8526 18.334 6.78192 18.334 5.98254 17.8464C5.58733 17.6054 5.24667 17.2847 4.98223 16.9047C4.4474 16.1362 4.38287 15.0674 4.25384 12.93L3.75 4.58398" stroke="#C52127" stroke-width="1.25" stroke-linecap="round"/>
<path d="M7.5 9.7793H12.5" stroke="#C52127" stroke-width="1.25" stroke-linecap="round"/>
<path d="M8.75 13.0449H11.25" stroke="#C52127" stroke-width="1.25" stroke-linecap="round"/>
<path d="M2.5 4.58268H17.5M13.3796 4.58268L12.8107 3.40912C12.4328 2.62957 12.2438 2.23978 11.9179 1.99669C11.8457 1.94277 11.7691 1.8948 11.689 1.85327C11.3281 1.66602 10.8949 1.66602 10.0286 1.66602C9.1405 1.66602 8.6965 1.66602 8.32957 1.86112C8.24826 1.90436 8.17066 1.95427 8.09758 2.01032C7.76787 2.26327 7.5837 2.66731 7.21535 3.4754L6.71061 4.58268" stroke="#C52127" stroke-width="1.25" stroke-linecap="round"/>
</svg>
</button>
`;
row.querySelector(".expense-delete-btn").addEventListener("click", () => {
row.remove();
});
expenseContainer.appendChild(row);
});
</script>
@endpush

View File

@@ -0,0 +1,352 @@
@extends('layouts.business.master')
@section('title')
{{ __('Estimate List') }}
@endsection
@section('main_content')
<div class="erp-table-section">
<div class="container-fluid">
<div class="card">
<div class="card-bodys">
<!-- Header -->
<div class="table-header p-16 d-print-none">
<h4>{{ __('Estimate List') }}</h4>
<div class="d-flex align-items-center gap-3 flex-wrap">
<a href="#"
class="bulk-import-container">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 10V12.6667C14 13.0203 13.8595 13.3594 13.6095 13.6095C13.3594 13.8595 13.0203 14 12.6667 14H3.33333C2.97971 14 2.64057 13.8595 2.39052 13.6095C2.14048 13.3594 2 13.0203 2 12.6667V10" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11.3346 5.33333L8.0013 2L4.66797 5.33333" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8 2V10" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
{{ __('Bulk Import') }}
</a>
<a href="#"
class="add-order-btn rounded-2 active btn btn-primary">
<i class="fas fa-plus-circle me-1"></i>
{{ __('Add Estimates') }}
</a>
</div>
</div>
<div class="table-header justify-content-center border-0 text-center d-none d-print-block">
<div class="print-header">
<!-- static print header -->
</div>
<h4 class="mt-2">{{ __('Product List') }}</h4>
</div>
<div class="table-top-form p-16">
<form action="#" method="GET" class="filter-form" table="#product-data">
<div class="table-top-left d-flex gap-3 flex-wrap">
<div class="gpt-up-down-arrow position-relative d-print-none">
<select name="per_page" class="form-control">
<option value="20">{{ __('Show 20') }}</option>
<option value="50">{{ __('Show 50') }}</option>
<option value="100">{{ __('Show 100') }}</option>
<option value="500">{{ __('Show 500') }}</option>
</select>
<span></span>
</div>
<div class="gpt-up-down-arrow position-relative d-print-none">
<select name="per_page" class="form-control">
<option value="20">{{ __('Filter') }}</option>
</select>
<span></span>
</div>
<div class="gpt-up-down-arrow position-relative d-print-none warehouse-select">
<select name="per_page" class="form-control">
<option value="20">{{ __('All Warehouse ') }}</option>
</select>
<span></span>
</div>
<div class="table-search position-relative d-print-none">
<input
class="form-control searchInput"
type="text"
name="search"
placeholder="{{ __('Search...') }}"
value=""
>
<span class="position-absolute">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M14.582 14.582L18.332 18.332"
stroke="#4D4D4D" stroke-width="1.25"
stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.668 9.168C16.668 5.026 13.31 1.668 9.168 1.668
C5.026 1.668 1.668 5.026 1.668 9.168
C1.668 13.31 5.026 16.668 9.168 16.668
C13.31 16.668 16.668 13.31 16.668 9.168Z"
stroke="#4D4D4D" stroke-width="1.25"
stroke-linejoin="round"/>
</svg>
</span>
</div>
</div>
</form>
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="#">
<img src={{ asset("assets/images/logo/csv.svg") }} alt="csv">
</a>
</li>
<li>
<a href="#">
<img src={{ asset("assets/images/logo/excel.svg") }} alt="excel">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src={{ asset("assets/images/logo/pdf.svg") }} alt="pdf">
</a>
</li>
<li>
<a onclick="window.print()" class="print-window">
<img src={{ asset("assets/images/logo/printer.svg") }} alt="print">
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="delete-item delete-show d-none">
<div class="delete-item-show">
<p class="fw-bold">
<span class="selected-count">0</span> {{ __('items show') }}
</p>
<button type="button">
{{ __('Delete') }}
</button>
</div>
</div>
<!-- Table Data Wrapper -->
<div id="product-data">
<div class="responsive-table m-0">
<table class="table" id="datatable">
<thead>
<tr>
<th class="w-60 d-print-none">
<div class="d-flex align-items-center gap-3">
<input type="checkbox" class="select-all-delete multi-delete">
</div>
</th>
<th class="d-print-none">SL.</th>
<th>Invoice</th>
<th>Customer Name</th>
<th>Phone Number</th>
<th>Warehouse</th>
<th>Qty</th>
<th>Amount</th>
<th>Create</th>
<th>Expiry Date</th>
<th>Status</th>
<th class="d-print-none">Action</th>
</tr>
</thead>
<tbody id="product-data">
<tr>
<td class="w-60 checkbox d-print-none">
<input type="checkbox" class="delete-checkbox-item multi-delete">
</td>
<td class="d-print-none">1</td>
<td>Ph2563</td>
<td>Ronald Richards</td>
<td>(208) 555-0112</td>
<td>Warehouse 1</td>
<td>5</td>
<td>$500</td>
<td>6 Jun 2025</td>
<td>6 July 2025</td>
<td>
<span class="estimate-badge estimate-badge-draft">Draft</span>
</td>
<td class="d-print-none">
<div class="dropdown table-action">
<button type="button" data-bs-toggle="dropdown">
<i class="far fa-ellipsis-v"></i>
</button>
<ul class="dropdown-menu">
<li>
<a href="#parties-view" data-bs-toggle="modal">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.158 8.28375C16.386 8.60348 16.5 8.76338 16.5 9C16.5 9.23662 16.386 9.39652 16.158 9.71625C15.1334 11.1529 12.5169 14.25 9 14.25C5.48309 14.25 2.86657 11.1529 1.84203 9.71625C1.61401 9.39652 1.5 9.23662 1.5 9C1.5 8.76338 1.61401 8.60348 1.84203 8.28375C2.86657 6.84708 5.48309 3.75 9 3.75C12.5169 3.75 15.1334 6.84708 16.158 8.28375Z" stroke="#4B5563" stroke-width="1.2"/>
<path d="M11.25 9C11.25 7.75732 10.2427 6.75 9 6.75C7.75732 6.75 6.75 7.75732 6.75 9C6.75 10.2427 7.75732 11.25 9 11.25C10.2427 11.25 11.25 10.2427 11.25 9Z" stroke="#4B5563" stroke-width="1.2"/>
</svg>
View
</a>
</li>
<li>
<a href="#">
<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>
<li>
<a href="#">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40001163_47282)">
<path d="M8.24805 7.5H8.2593M8.25082 12H8.26207" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.25 9.75H11.25" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.125 3.75C13.7463 3.75 14.25 4.25368 14.25 4.875C14.25 5.49632 13.7463 6 13.125 6C12.5037 6 12 5.49632 12 4.875C12 4.25368 12.5037 3.75 13.125 3.75Z" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2.08067 8.35792C1.32831 9.19822 1.31213 10.4659 2.00262 11.3578C3.37283 13.1275 4.87256 14.6272 6.64225 15.9973C7.53405 16.6879 8.80178 16.6717 9.64208 15.9193C11.9234 13.8766 14.0126 11.7419 16.0289 9.39592C16.2283 9.16402 16.3529 8.87978 16.3809 8.5752C16.5047 7.22849 16.7589 3.3485 15.7052 2.2948C14.6515 1.24111 10.7715 1.49533 9.4248 1.61907C9.12023 1.64706 8.83598 1.77175 8.604 1.97108C6.25809 3.98734 4.12336 6.07658 2.08067 8.35792Z" stroke="#4B5563" stroke-width="1.25"/>
</g>
<defs>
<clipPath id="clip0_40001163_47282">
<rect width="18" height="18" fill="white"/>
</clipPath>
</defs>
</svg>
Pay Now
</a>
</li>
<li>
<a href="#" class="confirm-action">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40001163_47290)">
<path d="M5.51547 13.5C3.92313 13.5 3.12696 13.5 2.56012 13.1601C2.18965 12.9379 1.89119 12.6203 1.69856 12.2431C1.40384 11.666 1.48307 10.903 1.64151 9.37687C1.77377 8.10292 1.83991 7.46591 2.16513 6.99811C2.37865 6.69097 2.66744 6.43923 3.00598 6.26515C3.52161 6 4.18623 6 5.51547 6H12.4845C13.8138 6 14.4784 6 14.994 6.26515C15.3326 6.43923 15.6214 6.69097 15.8349 6.99811C16.1601 7.46591 16.2263 8.10292 16.3585 9.37687C16.517 10.903 16.5962 11.666 16.3014 12.2431C16.1088 12.6203 15.8104 12.9379 15.4399 13.1601C14.873 13.5 14.0769 13.5 12.4845 13.5" stroke="#4B5563" stroke-width="1.25"/>
<path d="M12.75 6V4.5C12.75 3.08579 12.75 2.37868 12.3106 1.93934C11.8713 1.5 11.1642 1.5 9.75 1.5H8.25C6.83578 1.5 6.12868 1.5 5.68934 1.93934C5.25 2.37868 5.25 3.08579 5.25 4.5V6" stroke="#4B5563" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M10.4915 12H7.50848C6.99452 12 6.73753 12 6.51887 12.0817C6.22733 12.1905 5.9777 12.402 5.80965 12.6824C5.68361 12.8928 5.62129 13.1633 5.49663 13.7043C5.30185 14.5496 5.20446 14.9722 5.27069 15.3112C5.35901 15.763 5.63428 16.1455 6.01689 16.348C6.30385 16.5 6.70539 16.5 7.50848 16.5H10.4915C11.2946 16.5 11.6962 16.5 11.9831 16.348C12.3657 16.1455 12.641 15.763 12.7293 15.3112C12.7955 14.9722 12.6982 14.5496 12.5034 13.7043C12.3788 13.1633 12.3164 12.8928 12.1904 12.6824C12.0223 12.402 11.7727 12.1905 11.4812 12.0817C11.2625 12 11.0055 12 10.4915 12Z" stroke="#4B5563" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M13.5 9H13.5075" stroke="#4B5563" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_40001163_47290">
<rect width="18" height="18" fill="white"/>
</clipPath>
</defs>
</svg>
Print
</a>
</li>
<li>
<a href="#" class="confirm-action">
<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>
</ul>
</div>
</td>
</tr>
<tr>
<td class="w-60 checkbox d-print-none">
<input type="checkbox" class="delete-checkbox-item multi-delete">
</td>
<td class="d-print-none">2</td>
<td>Ph2563</td>
<td>Eleanor Pena</td>
<td>(225) 555-0118</td>
<td>Warehouse 2</td>
<td class="text-danger">10</td>
<td>$800</td>
<td>8 Jun 2025</td>
<td class="text-danger">8 Jun 2025</td>
<td>
<span class="estimate-badge estimate-badge-expired">Expired</span>
</td>
<td class="d-print-none">
<div class="dropdown table-action">
<button type="button">
<i class="far fa-ellipsis-v"></i>
</button>
</div>
</td>
</tr>
<tr>
<td class="w-60 checkbox d-print-none">
<input type="checkbox" class="delete-checkbox-item multi-delete">
</td>
<td class="d-print-none">3</td>
<td>Ph2563</td>
<td>Dianne Russell</td>
<td>(307) 555-0133</td>
<td>Warehouse 1</td>
<td>7</td>
<td>$300</td>
<td>12 Jun 2025</td>
<td>6 July 2025</td>
<td>
<span class="estimate-badge estimate-badge-sent">Sent</span>
</td>
<td class="d-print-none">
<div class="dropdown table-action">
<button type="button">
<i class="far fa-ellipsis-v"></i>
</button>
</div>
</td>
</tr>
<tr>
<td class="w-60 checkbox d-print-none">
<input type="checkbox" class="delete-checkbox-item multi-delete">
</td>
<td class="d-print-none">4</td>
<td>Ph2563</td>
<td>Cameron Williamson</td>
<td>(270) 555-0117</td>
<td>Warehouse 2</td>
<td>3</td>
<td>$750</td>
<td>15 Jun 2025</td>
<td>6 July 2025</td>
<td>
<span class="estimate-badge estimate-badge-declined">Declined</span>
</td>
<td class="d-print-none">
<div class="dropdown table-action">
<button type="button">
<i class="far fa-ellipsis-v"></i>
</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -6,6 +6,7 @@
<th class="d-print-none">{{ __('Image') }}</th>
<th>{{ __('Product Name') }}</th>
<th class="d-print-none">{{ __('Code') }}</th>
<th class="d-print-none">{{ __('HSN Code') }}</th>
<th class="d-print-none">{{ __('Brand') }}</th>
<th>{{ __('Category') }}</th>
<th class="d-print-none">{{ __('Unit') }}</th>
@@ -47,6 +48,7 @@
<td>{{ $product->productName }}</td>
<td class="d-print-none">{{ $product->productCode }}</td>
<td class="d-print-none">{{ $product->hsn_code }}</td>
<td class="d-print-none">{{ $product->brand->brandName ?? '' }}</td>

View File

@@ -2,9 +2,9 @@
<thead>
<tr>
<th>{{ __('SL') }}. </th>
<th>{{ __('Image') }} </th>
<th>{{ __('Product Name') }} </th>
<th>{{ __('Code') }} </th>
<th>{{ __('HSN Code') }} </th>
<th>{{ __('Brand') }} </th>
<th>{{ __('Category') }} </th>
<th>{{ __('Unit') }} </th>
@@ -17,7 +17,6 @@
<tbody>
@foreach ($expired_products as $product)
@php
$nonEmptyStock = $product->stocks->firstWhere('productStock', '>', 0);
$fallbackStock = $product->stocks->first(); // fallback if no stock > 0
@@ -25,12 +24,11 @@
$latestPurchasePrice = $stock?->productPurchasePrice ?? 0;
$latestSalePrice = $stock?->productSalePrice ?? 0;
@endphp
<tr>
<td>{{ $loop->index + 1 }}</td>
<td><img src="{{ asset($product->productPicture ?? 'assets/images/logo/upload2.jpg') }}" alt="Img" class="table-product-img"></td>
<td>{{ $product->productName }}</td>
<td>{{ $product->productCode }}</td>
<td>{{ $product->hsn_code }}</td>
<td>{{ $product->brand->brandName ?? '' }}</td>
<td>{{ $product->category->categoryName ?? '' }}</td>
<td>{{ $product->unit->unitName ?? '' }}</td>

View File

@@ -47,17 +47,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.expired.products.csv') }}">
<a class="export-btn" href="{{ route('business.expired.products.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.expired.products.excel') }}">
<a class="export-btn" href="{{ route('business.expired.products.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.expired.product.reports.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.expired.products.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -0,0 +1,68 @@
@extends('layouts.business.pdf.pdf_layout')
@section('pdf_title')
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Expired Product List') }}</h4>
</div>
@endsection
@section('pdf_content')
<table width="100%" cellpadding="6" cellspacing="0"
style="border-collapse: collapse; border: 1px solid gainsboro; font-size:12px;"
id="datatable">
<thead>
<tr style="background-color: #C52127; color: white;">
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Product Name') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Product Code') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Category') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Expired Date') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Stock') }}</th>
@usercan('expired-product-reports.price')
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Purchase Price') }}</th>
@endusercan
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Sale Price') }}</th>
</tr>
</thead>
<tbody>
@foreach ($expired_products as $product)
@php
$nonEmptyStock = $product->stocks->firstWhere('productStock', '>', 0);
$fallbackStock = $product->stocks->first(); // fallback if no stock > 0
$stock = $nonEmptyStock ?? $fallbackStock;
$latestPurchasePrice = $stock?->productPurchasePrice ?? 0;
$latestSalePrice = $stock?->productSalePrice ?? 0;
@endphp
<tr style="background-color: {{ $loop->even ? '#F5F5F5' : '#FFFFFF' }};">
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->productName }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->productCode }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->category->categoryName ?? '' }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
@if ($product->stocks->isNotEmpty() && $product->stocks->first()->expire_date)
{{ formatted_date($product->stocks->first()->expire_date) }}
@else
{{__('N/A')}}
@endif
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->total_stock }}
</td>
@usercan('expired-product-reports.price')
<td style="border:1px solid gainsboro; text-align:center;">
{{ currency_format($latestPurchasePrice, currency: business_currency()) }}
</td>
@endusercan
<td style="border:1px solid gainsboro; text-align:center;">
{{ currency_format($latestSalePrice, currency: business_currency()) }}
</td>
</tr>
@endforeach
</tbody>
</table>
@endsection

View File

@@ -1,62 +1,91 @@
@php
$maxRowCount = max($mergedIncomeSaleData->count(), $mergedExpenseData->count());
@endphp
@if ($filter_from_date && $filter_to_date)
<div class="mb-2 text-center fw-bold duration-display">
<strong>{{ __('Duration:') }}</strong>
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</div>
@endif
<table class="table table-bordered">
<thead>
<tr>
<th class="text-start income-type">{{ __('Income Types') }}</th>
<th class="text-start d-print-none">{{ __('Date') }}</th>
<th class="text-start">{{ __('Sale') }}</th>
<th class="text-end">{{ __('Income') }}</th>
<th class="text-start expense-type">{{ __('Expenses Types') }}</th>
<th class="text-start d-print-none">{{ __('Date') }}</th>
<th class="text-end">{{ __('Expense') }}</th>
</tr>
</thead>
<tbody>
@php
$maxRowCount = max($mergedIncomeSaleData->count(), $mergedExpenseData->count());
@endphp
@for ($i = 0; $i < $maxRowCount; $i++)
@php
$incomeSaleRow = $mergedIncomeSaleData[$i] ?? null;
$expenseRow = $mergedExpenseData[$i] ?? null;
@endphp
<tr>
{{-- Sale / Income Column --}}
<td class="text-start loss-profit-tbody">
{{ $incomeSaleRow ? $incomeSaleRow->type : '' }}
</td>
<td class="text-start loss-profit-tbody d-print-none">
{{ $incomeSaleRow ? formatted_date($incomeSaleRow->date) : '' }}
</td>
<td class="text-start loss-profit-tbody ">
{{ $incomeSaleRow && isset($incomeSaleRow->total_sales) ? currency_format($incomeSaleRow->total_sales, 'icon', 2, business_currency()) : '' }}
</td>
<td class="text-end loss-profit-tbody ">
{{ $incomeSaleRow && isset($incomeSaleRow->total_incomes) ? currency_format($incomeSaleRow->total_incomes, 'icon', 2, business_currency()) : '' }}
</td>
@for ($i = 0; $i < $maxRowCount; $i++)
@php
$incomeSaleRow = $mergedIncomeSaleData[$i] ?? null;
$expenseRow = $mergedExpenseData[$i] ?? null;
@endphp
<tr>
{{-- Sale / Income Column --}}
<td class="text-start loss-profit-tbody">
{{ $incomeSaleRow ? $incomeSaleRow->type : '' }}
</td>
<td class="text-start loss-profit-tbody d-print-none">
{{ $incomeSaleRow ? formatted_date($incomeSaleRow->date) : '' }}
</td>
<td class="text-start loss-profit-tbody ">
{{ $incomeSaleRow && isset($incomeSaleRow->total_sales) ? currency_format($incomeSaleRow->total_sales, 'icon', 2, business_currency()) : '' }}
</td>
<td class="text-end loss-profit-tbody ">
{{ $incomeSaleRow && isset($incomeSaleRow->total_incomes) ? currency_format($incomeSaleRow->total_incomes, 'icon', 2, business_currency()) : '' }}
</td>
{{-- Expense Column --}}
<td class="text-start loss-profit-tbody expense-type">
{{ $expenseRow ? $expenseRow->type : '' }}
</td>
<td class="text-start loss-profit-tbody d-print-none">
{{ $expenseRow ? formatted_date($expenseRow->date) : '' }}
</td>
<td class="text-end loss-profit-tbody">
{{ $expenseRow ? currency_format($expenseRow->total_expenses ?? 0, 'icon', 2, business_currency()) : '' }}
</td>
</tr>
@endfor
{{-- Expense Column --}}
<td class="text-start loss-profit-tbody expense-type">
{{ $expenseRow ? $expenseRow->type : '' }}
</td>
<td class="text-start loss-profit-tbody d-print-none">
{{ $expenseRow ? formatted_date($expenseRow->date) : '' }}
</td>
<td class="text-end loss-profit-tbody">
{{ $expenseRow ? currency_format($expenseRow->total_expenses ?? 0, 'icon', 2, business_currency()) : '' }}
</td>
</tr>
@endfor
{{-- Summary Rows --}}
<tr class="fw-bold">
<td class="text-start bottom-profit-expense">{{ __('Gross Profit') }}</td>
<td class="d-print-none bottom-profit-expense"></td>
<td class="text-start bottom-profit-expense">
{{ currency_format($grossSaleProfit, 'icon', 2, business_currency()) }}
</td>
<td class="text-end bottom-profit-expense">
{{ currency_format($grossIncomeProfit, 'icon', 2, business_currency()) }}
</td>
<td class="text-start bottom-profit-expense expense-type">{{ __('Total Expenses') }}</td>
<td class="d-print-none bottom-profit-expense"></td>
<td class="text-end bottom-profit-expense">
{{ currency_format($totalExpenses, 'icon', 2, business_currency()) }}
</td>
</tr>
{{-- Summary Rows --}}
<tr class="fw-bold">
<td class="text-start bottom-profit-expense">{{ __('Gross Profit') }}</td>
<td class="d-print-none bottom-profit-expense"></td>
<td class="text-start bottom-profit-expense">
{{ currency_format($grossSaleProfit, 'icon', 2, business_currency()) }}
</td>
<td class="text-end bottom-profit-expense">
{{ currency_format($grossIncomeProfit, 'icon', 2, business_currency()) }}
</td>
<td class="text-start bottom-profit-expense expense-type">{{ __('Total Expenses') }}</td>
<td class="d-print-none bottom-profit-expense"></td>
<td class="text-end bottom-profit-expense">
{{ currency_format($totalExpenses, 'icon', 2, business_currency()) }}
</td>
</tr>
<tr class="fw-bold text-center bg-light">
<td class="bottom-net-profit" colspan="7">
{{ __('Net Profit (Income - Expense) =') }}
<span class="{{ $netProfit >= 0 ? 'profit-ammount' : 'expense-ammount' }}">
{{ currency_format($netProfit, 'icon', 2, business_currency()) }}
</span>
</td>
</tr>
<tr class="fw-bold text-center bg-light">
<td class="bottom-net-profit" colspan="7">
{{ __('Net Profit (Income - Expense) =') }}
<span class="{{ $netProfit >= 0 ? 'profit-ammount' : 'expense-ammount' }}">
{{ currency_format($netProfit, 'icon', 2, business_currency()) }}
</span>
</td>
</tr>
</tbody>
</table>

View File

@@ -9,22 +9,22 @@
<div class="container-fluid">
<div class="card">
<div class="card-bodys">
<div class="row p-2 d-print-none">
<div class="row p-2 d-print-none" id="loss-profit-summery">
<div class="col-lg-2 col-md-12">
<div class="loss-card p-3 m-2 text-white">
<p class="stat-value">{{ currency_format($cardGrossProfit, currency: business_currency()) }}</p>
<p class="stat-value">{{ currency_format($grossIncomeProfit, currency: business_currency()) }}</p>
<p class="stat-title">{{ __('Gross Profit') }}</p>
</div>
</div>
<div class="col-lg-2 col-md-6">
<div class="profit-card p-3 m-2 text-white">
<p class="stat-value">{{ currency_format($totalCardExpenses, currency: business_currency()) }}</p>
<p class="stat-value">{{ currency_format($totalExpenses, currency: business_currency()) }}</p>
<p class="stat-title">{{ __('Expenses') }}</p>
</div>
</div>
<div class="col-lg-2 col-md-6">
<div class="sales-card p-3 m-2 text-white">
<p class="stat-value">{{ currency_format($cardNetProfit, currency: business_currency()) }}</p>
<p class="stat-value">{{ currency_format($netProfit, currency: business_currency()) }}</p>
<p class="stat-title">{{ __('Net Profit') }}</p>
</div>
</div>
@@ -45,6 +45,16 @@
<div class="d-flex align-items-center gap-3 flex-wrap table-top-left">
<div class="m-0 p-0 d-print-none">
<div class="date-filters-container">
<div class="gpt-up-down-arrow position-relative">
<select name="per_page" class="form-control">
<option @selected(request('per_page') == 20) value="20">{{ __('Show 20') }}</option>
<option @selected(request('per_page') == 50) value="50">{{ __('Show 50') }}</option>
<option @selected(request('per_page') == 100) value="100">{{ __('Show 100') }}</option>
<option @selected(request('per_page') == 500) value="500">{{ __('Show 500') }}</option>
</select>
<span></span>
</div>
<div class="input-wrapper align-items-center date-filters d-none">
<label class="header-label">{{ __('From Date') }}</label>
<input type="date" name="from_date" value="{{ now()->format('Y-m-d') }}" class="form-control filter-field filter-from-date">
@@ -81,17 +91,17 @@
<div class="table-top-btn-group d-print-none p-2">
<ul>
<li>
<a href="{{ route('business.loss-profit-history.csv') }}">
<a class="loss-profit-export-btn" href="{{ route('business.loss-profit-history.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.loss-profit-history.excel') }}">
<a class="loss-profit-export-btn" href="{{ route('business.loss-profit-history.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.loss-profit-history.pdf') }}">
<a class="loss-profit-export-btn" target="_blank" href="{{ route('business.loss-profit-history.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>
@@ -106,22 +116,9 @@
</div>
</div>
<div class="responsive-table m-0">
<table class="table table-bordered">
<thead>
<tr>
<th class="text-start income-type">{{ __('Income Types') }}</th>
<th class="text-start d-print-none">{{ __('Date') }}</th>
<th class="text-start">{{ __('Sale') }}</th>
<th class="text-end">{{ __('Income') }}</th>
<th class="text-start expense-type">{{ __('Expenses Types') }}</th>
<th class="text-start d-print-none">{{ __('Date') }}</th>
<th class="text-end">{{ __('Expense') }}</th>
</tr>
</thead>
<tbody id="loss-profit-history-data">
@include('business::loss-profit-histories.datas')
</tbody>
</table>
<div id="loss-profit-history-data">
@include('business::loss-profit-histories.datas')
</div>
</div>
</div>

View File

@@ -4,6 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;">{{ __('Loss Profit History List') }}</h4>
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection

View File

@@ -58,12 +58,28 @@
</li>
@if (moduleCheck('MarketingAddon'))
<li class="nav-item settings-item" role="presentation">
<button class="nav-link settings-link" id="currency-setting-tab" data-bs-toggle="tab"
<button class="nav-link settings-link" id="sms-tab" data-bs-toggle="tab"
data-bs-target="#sms" type="button" role="tab">
{{__('SMS Settings')}}
{{__('SMS Gateways')}}
</button>
</li>
@endif
@if (moduleCheck('MarketingAddon'))
<li class="nav-item settings-item" role="presentation">
<button class="nav-link settings-link" id="email-tab" data-bs-toggle="tab"
data-bs-target="#email" type="button" role="tab">
{{__('Email Settings')}}
</button>
</li>
@endif
<li class="nav-item settings-item" role="presentation">
<button class="nav-link settings-link" id="theme-tab" data-bs-toggle="tab"
data-bs-target="#theme" type="button" role="tab">
{{__('Theme Settings')}}
</button>
</li>
</ul>
<div class="tab-content mt-3" id="settingsTabContent">
@@ -79,10 +95,10 @@
xmlns="http://www.w3.org/2000/svg">
<path
d="M15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M21.011 14.0949C21.5329 13.9542 21.7939 13.8838 21.8969 13.7492C22 13.6147 22 13.3982 22 12.9653V11.0316C22 10.5987 22 10.3822 21.8969 10.2477C21.7938 10.1131 21.5329 10.0427 21.011 9.90194C19.0606 9.37595 17.8399 7.33687 18.3433 5.39923C18.4817 4.86635 18.5509 4.59992 18.4848 4.44365C18.4187 4.28738 18.2291 4.1797 17.8497 3.96432L16.125 2.98509C15.7528 2.77375 15.5667 2.66808 15.3997 2.69058C15.2326 2.71308 15.0442 2.90109 14.6672 3.27709C13.208 4.73284 10.7936 4.73278 9.33434 3.277C8.95743 2.90099 8.76898 2.71299 8.60193 2.69048C8.43489 2.66798 8.24877 2.77365 7.87653 2.98499L6.15184 3.96423C5.77253 4.17959 5.58287 4.28727 5.51678 4.44351C5.45068 4.59976 5.51987 4.86623 5.65825 5.39916C6.16137 7.33686 4.93972 9.37599 2.98902 9.90196C2.46712 10.0427 2.20617 10.1131 2.10308 10.2476C2 10.3822 2 10.5987 2 11.0316V12.9653C2 13.3982 2 13.6147 2.10308 13.7492C2.20615 13.8838 2.46711 13.9542 2.98902 14.0949C4.9394 14.6209 6.16008 16.66 5.65672 18.5976C5.51829 19.1305 5.44907 19.3969 5.51516 19.5532C5.58126 19.7095 5.77092 19.8172 6.15025 20.0325L7.87495 21.0118C8.24721 21.2231 8.43334 21.3288 8.6004 21.3063C8.76746 21.2838 8.95588 21.0957 9.33271 20.7197C10.7927 19.2628 13.2088 19.2627 14.6689 20.7196C15.0457 21.0957 15.2341 21.2837 15.4012 21.3062C15.5682 21.3287 15.7544 21.223 16.1266 21.0117L17.8513 20.0324C18.2307 19.8171 18.4204 19.7094 18.4864 19.5531C18.5525 19.3968 18.4833 19.1304 18.3448 18.5975C17.8412 16.66 19.0609 14.621 21.011 14.0949Z"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" />
</svg>
</div>
<div>
@@ -104,14 +120,14 @@ class="text-decoration-none text-dark">
xmlns="http://www.w3.org/2000/svg">
<path
d="M5.49235 11.491C5.41887 12.887 5.50334 14.373 4.25611 15.3084C3.67562 15.7438 3.33398 16.427 3.33398 17.1527C3.33398 18.1508 4.11578 19 5.13398 19H19.534C20.5522 19 21.334 18.1508 21.334 17.1527C21.334 16.427 20.9924 15.7438 20.4119 15.3084C19.1646 14.373 19.2491 12.887 19.1756 11.491C18.9841 7.85223 15.9778 5 12.334 5C8.69015 5 5.68386 7.85222 5.49235 11.491Z"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round"
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
<path
d="M10.834 3.125C10.834 3.95343 11.5056 5 12.334 5C13.1624 5 13.834 3.95343 13.834 3.125C13.834 2.29657 13.1624 2 12.334 2C11.5056 2 10.834 2.29657 10.834 3.125Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M15.334 19C15.334 20.6569 13.9909 22 12.334 22C10.6771 22 9.33398 20.6569 9.33398 19"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round"
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
</div>
@@ -134,10 +150,10 @@ class="text-decoration-none text-dark">
xmlns="http://www.w3.org/2000/svg">
<path
d="M3.16602 12C3.16602 7.77027 3.16602 5.6554 4.36399 4.25276C4.5341 4.05358 4.7196 3.86808 4.91878 3.69797C6.32142 2.5 8.43629 2.5 12.666 2.5C16.8957 2.5 19.0106 2.5 20.4132 3.69797C20.6124 3.86808 20.7979 4.05358 20.968 4.25276C22.166 5.6554 22.166 7.77027 22.166 12C22.166 16.2297 22.166 18.3446 20.968 19.7472C20.7979 19.9464 20.6124 20.1319 20.4132 20.302C19.0106 21.5 16.8957 21.5 12.666 21.5C8.43629 21.5 6.32142 21.5 4.91878 20.302C4.7196 20.1319 4.5341 19.9464 4.36399 19.7472C3.16602 18.3446 3.16602 16.2297 3.16602 12Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M15.3762 10.063C15.2771 9.30039 14.4014 8.06817 12.8268 8.06814C10.9972 8.06811 10.2274 9.08141 10.0712 9.58806C9.82746 10.2657 9.8762 11.659 12.0207 11.8109C14.7014 12.0009 15.7753 12.3174 15.6387 13.958C15.502 15.5985 14.0077 15.953 12.8268 15.9149C11.6458 15.877 9.71365 15.3344 9.63867 13.8752M12.6394 7V8.07177M12.6394 15.9051V16.9999"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" />
</svg>
</div>
<div>
@@ -158,14 +174,14 @@ class="text-decoration-none text-dark">
fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M11.5 14.0116C9.45338 13.9164 7.38334 14.4064 5.57757 15.4816C4.1628 16.324 0.453366 18.0441 2.71266 20.1966C3.81631 21.248 5.04549 22 6.59087 22H12"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round"
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
<path
d="M15.5 6.5C15.5 8.98528 13.4853 11 11 11C8.51472 11 6.5 8.98528 6.5 6.5C6.5 4.01472 8.51472 2 11 2C13.4853 2 15.5 4.01472 15.5 6.5Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M18 20.7143V22M18 20.7143C16.8432 20.7143 15.8241 20.1461 15.2263 19.2833M18 20.7143C19.1568 20.7143 20.1759 20.1461 20.7737 19.2833M15.2263 19.2833L14.0004 20.0714M15.2263 19.2833C14.8728 18.773 14.6667 18.1597 14.6667 17.5C14.6667 16.8403 14.8727 16.2271 15.2262 15.7169M20.7737 19.2833L21.9996 20.0714M20.7737 19.2833C21.1272 18.773 21.3333 18.1597 21.3333 17.5C21.3333 16.8403 21.1273 16.2271 20.7738 15.7169M18 14.2857C19.1569 14.2857 20.1761 14.854 20.7738 15.7169M18 14.2857C16.8431 14.2857 15.8239 14.854 15.2262 15.7169M18 14.2857V13M20.7738 15.7169L22 14.9286M15.2262 15.7169L14 14.9286"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" />
</svg>
</div>
<div>
@@ -184,10 +200,10 @@ class="text-decoration-none text-dark">
<div class="d-flex align-items-center jusitfy-content-center gap-3">
<div class="settings-icon">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 18.332C9.31817 18.332 8.66683 18.0569 7.36411 17.5066C4.12137 16.1368 2.5 15.4519 2.5 14.2998C2.5 13.9772 2.5 8.38578 2.5 5.83203M10 18.332C10.6818 18.332 11.3332 18.0569 12.6359 17.5066C15.8787 16.1368 17.5 15.4519 17.5 14.2998V5.83203M10 18.332V9.46103" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.93827 8.07745L4.50393 6.89951C3.16797 6.25305 2.5 5.92983 2.5 5.41797C2.5 4.90611 3.16797 4.58289 4.50393 3.93643L6.93827 2.75849C8.44067 2.03148 9.19192 1.66797 10 1.66797C10.8081 1.66797 11.5593 2.03147 13.0617 2.75849L15.4961 3.93643C16.832 4.58289 17.5 4.90611 17.5 5.41797C17.5 5.92983 16.832 6.25305 15.4961 6.89951L13.0617 8.07745C11.5593 8.80447 10.8081 9.16797 10 9.16797C9.19192 9.16797 8.44067 8.80447 6.93827 8.07745Z" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 10L6.66667 10.8333" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1673 3.33594L5.83398 7.5026" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 18.332C9.31817 18.332 8.66683 18.0569 7.36411 17.5066C4.12137 16.1368 2.5 15.4519 2.5 14.2998C2.5 13.9772 2.5 8.38578 2.5 5.83203M10 18.332C10.6818 18.332 11.3332 18.0569 12.6359 17.5066C15.8787 16.1368 17.5 15.4519 17.5 14.2998V5.83203M10 18.332V9.46103" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.93827 8.07745L4.50393 6.89951C3.16797 6.25305 2.5 5.92983 2.5 5.41797C2.5 4.90611 3.16797 4.58289 4.50393 3.93643L6.93827 2.75849C8.44067 2.03148 9.19192 1.66797 10 1.66797C10.8081 1.66797 11.5593 2.03147 13.0617 2.75849L15.4961 3.93643C16.832 4.58289 17.5 4.90611 17.5 5.41797C17.5 5.92983 16.832 6.25305 15.4961 6.89951L13.0617 8.07745C11.5593 8.80447 10.8081 9.16797 10 9.16797C9.19192 9.16797 8.44067 8.80447 6.93827 8.07745Z" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 10L6.66667 10.8333" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1673 3.33594L5.83398 7.5026" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<div>
@@ -200,30 +216,28 @@ class="text-decoration-none text-dark">
</div>
@endif
@if (moduleCheck('MarketingAddon'))
<div>
{{-- <a href="{{ route('business.language-settings.index') }}" class="text-decoration-none text-dark">
<div class=" setting-box">
<a href="{{ route('business.email-settings.index') }}" class="text-decoration-none text-dark">
<div class="setting-box">
<div class="d-flex align-items-center jusitfy-content-center gap-3">
<div class="settings-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12Z"
stroke="#C52127" stroke-width="1.5" />
<path
d="M21.011 14.0949C21.5329 13.9542 21.7939 13.8838 21.8969 13.7492C22 13.6147 22 13.3982 22 12.9653V11.0316C22 10.5987 22 10.3822 21.8969 10.2477C21.7938 10.1131 21.5329 10.0427 21.011 9.90194C19.0606 9.37595 17.8399 7.33687 18.3433 5.39923C18.4817 4.86635 18.5509 4.59992 18.4848 4.44365C18.4187 4.28738 18.2291 4.1797 17.8497 3.96432L16.125 2.98509C15.7528 2.77375 15.5667 2.66808 15.3997 2.69058C15.2326 2.71308 15.0442 2.90109 14.6672 3.27709C13.208 4.73284 10.7936 4.73278 9.33434 3.277C8.95743 2.90099 8.76898 2.71299 8.60193 2.69048C8.43489 2.66798 8.24877 2.77365 7.87653 2.98499L6.15184 3.96423C5.77253 4.17959 5.58287 4.28727 5.51678 4.44351C5.45068 4.59976 5.51987 4.86623 5.65825 5.39916C6.16137 7.33686 4.93972 9.37599 2.98902 9.90196C2.46712 10.0427 2.20617 10.1131 2.10308 10.2476C2 10.3822 2 10.5987 2 11.0316V12.9653C2 13.3982 2 13.6147 2.10308 13.7492C2.20615 13.8838 2.46711 13.9542 2.98902 14.0949C4.9394 14.6209 6.16008 16.66 5.65672 18.5976C5.51829 19.1305 5.44907 19.3969 5.51516 19.5532C5.58126 19.7095 5.77092 19.8172 6.15025 20.0325L7.87495 21.0118C8.24721 21.2231 8.43334 21.3288 8.6004 21.3063C8.76746 21.2838 8.95588 21.0957 9.33271 20.7197C10.7927 19.2628 13.2088 19.2627 14.6689 20.7196C15.0457 21.0957 15.2341 21.2837 15.4012 21.3062C15.5682 21.3287 15.7544 21.223 16.1266 21.0117L17.8513 20.0324C18.2307 19.8171 18.4204 19.7094 18.4864 19.5531C18.5525 19.3968 18.4833 19.1304 18.3448 18.5975C17.8412 16.66 19.0609 14.621 21.011 14.0949Z"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 18.332C9.31817 18.332 8.66683 18.0569 7.36411 17.5066C4.12137 16.1368 2.5 15.4519 2.5 14.2998C2.5 13.9772 2.5 8.38578 2.5 5.83203M10 18.332C10.6818 18.332 11.3332 18.0569 12.6359 17.5066C15.8787 16.1368 17.5 15.4519 17.5 14.2998V5.83203M10 18.332V9.46103" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.93827 8.07745L4.50393 6.89951C3.16797 6.25305 2.5 5.92983 2.5 5.41797C2.5 4.90611 3.16797 4.58289 4.50393 3.93643L6.93827 2.75849C8.44067 2.03148 9.19192 1.66797 10 1.66797C10.8081 1.66797 11.5593 2.03147 13.0617 2.75849L15.4961 3.93643C16.832 4.58289 17.5 4.90611 17.5 5.41797C17.5 5.92983 16.832 6.25305 15.4961 6.89951L13.0617 8.07745C11.5593 8.80447 10.8081 9.16797 10 9.16797C9.19192 9.16797 8.44067 8.80447 6.93827 8.07745Z" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 10L6.66667 10.8333" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1673 3.33594L5.83398 7.5026" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<div>
<h6>{{__('Languages Settings')}}</h6>
<small class="text-muted d-block">{{__('Add, Edit, Update, Delete Languages.')}}</small>
<h6>{{__('Email Settings')}}</h6>
<small class="text-muted d-block">{{__('View and update email settings.')}}</small>
</div>
</div>
</div>
</a> --}}
</a>
</div>
@endif
</div>
</div>
@@ -239,10 +253,10 @@ class="text-decoration-none text-dark">
fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M21.011 14.0949C21.5329 13.9542 21.7939 13.8838 21.8969 13.7492C22 13.6147 22 13.3982 22 12.9653V11.0316C22 10.5987 22 10.3822 21.8969 10.2477C21.7938 10.1131 21.5329 10.0427 21.011 9.90194C19.0606 9.37595 17.8399 7.33687 18.3433 5.39923C18.4817 4.86635 18.5509 4.59992 18.4848 4.44365C18.4187 4.28738 18.2291 4.1797 17.8497 3.96432L16.125 2.98509C15.7528 2.77375 15.5667 2.66808 15.3997 2.69058C15.2326 2.71308 15.0442 2.90109 14.6672 3.27709C13.208 4.73284 10.7936 4.73278 9.33434 3.277C8.95743 2.90099 8.76898 2.71299 8.60193 2.69048C8.43489 2.66798 8.24877 2.77365 7.87653 2.98499L6.15184 3.96423C5.77253 4.17959 5.58287 4.28727 5.51678 4.44351C5.45068 4.59976 5.51987 4.86623 5.65825 5.39916C6.16137 7.33686 4.93972 9.37599 2.98902 9.90196C2.46712 10.0427 2.20617 10.1131 2.10308 10.2476C2 10.3822 2 10.5987 2 11.0316V12.9653C2 13.3982 2 13.6147 2.10308 13.7492C2.20615 13.8838 2.46711 13.9542 2.98902 14.0949C4.9394 14.6209 6.16008 16.66 5.65672 18.5976C5.51829 19.1305 5.44907 19.3969 5.51516 19.5532C5.58126 19.7095 5.77092 19.8172 6.15025 20.0325L7.87495 21.0118C8.24721 21.2231 8.43334 21.3288 8.6004 21.3063C8.76746 21.2838 8.95588 21.0957 9.33271 20.7197C10.7927 19.2628 13.2088 19.2627 14.6689 20.7196C15.0457 21.0957 15.2341 21.2837 15.4012 21.3062C15.5682 21.3287 15.7544 21.223 16.1266 21.0117L17.8513 20.0324C18.2307 19.8171 18.4204 19.7094 18.4864 19.5531C18.5525 19.3968 18.4833 19.1304 18.3448 18.5975C17.8412 16.66 19.0609 14.621 21.011 14.0949Z"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" />
</svg>
</div>
<div>
@@ -265,8 +279,10 @@ class="invoice_form">
@csrf
<div class="row justify-content-center">
{{-- A4 Option --}}
<div class="col-lg-5 mb-4 text-center">
<div class="col-lg-4 mb-4 text-center">
<label class="invoice-option position-relative d-inline-block">
<div class="invoice-size-radio">
<div class="custom-radio">
@@ -275,11 +291,27 @@ class="invoice_form">
</div>
</div>
<div class="mb-2">{{ __('Printer A4') }}</div>
<img src="{{ asset('assets/images/logo/a4-new-invoice.png') }}"
<img src="{{ Storage::url($invoice_setting_image->value['a4_invoice_img'] ?? 'assets/images/logo/a4-new-invoice.png') }}"
alt="A4 Invoice" class="img-fluid border rounded invoice-image ">
</label>
</div>
@if (moduleCheck('TaxInvoiceAddon'))
<div class="col-lg-4 mb-4 text-center">
<label class="invoice-option position-relative d-inline-block">
<div class="invoice-size-radio">
<div class="custom-radio">
<input type="radio" name="invoice_size" value="standard_a4" {{ data_get($invoice_setting, 'value') == 'standard_a4' ? 'checked' : '' }}>
<span class="checkmark"></span>
</div>
</div>
<div class="mb-2">{{ __('Tax Invoice A4 Print') }}</div>
<img src="{{ Storage::url($invoice_setting_image->value['standard_a4_img'] ?? 'assets/images/logo/tax-invoice-img.png') }}" alt="Invoice" class="img-fluid border rounded invoice-image">
</label>
</div>
@endif
@if (moduleCheck('ThermalPrinterAddon'))
<div class="col-lg-3 mb-4 text-center">
<label class="invoice-option position-relative d-inline-block">
@@ -290,15 +322,15 @@ class="invoice_form">
</div>
</div>
<div class="mb-2">{{ __('Thermal: 3 inch 80mm') }}</div>
<img src="{{ asset('assets/images/logo/3-inch-size-new-invoice.png') }}" alt="Invoice" class="img-fluid border rounded invoice-image">
<img src="{{ Storage::url($invoice_setting_image->value['thermal_invoice_img'] ?? 'assets/images/logo/3-inch-size-new-invoice.png') }}" alt="Invoice" class="img-fluid border rounded invoice-image">
</label>
</div>
<div class="col-lg-4 mb-4"></div>
@endif
</div>
</form>
</div>
</div>
<div class="tab-pane fade" id="role" role="tabpanel" aria-labelledby="invoice-tab">
<div>
<div class="settings-box-container">
@@ -310,14 +342,14 @@ class="invoice_form">
fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M11.5 14.0116C9.45338 13.9164 7.38334 14.4064 5.57757 15.4816C4.1628 16.324 0.453366 18.0441 2.71266 20.1966C3.81631 21.248 5.04549 22 6.59087 22H12"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round"
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
<path
d="M15.5 6.5C15.5 8.98528 13.4853 11 11 11C8.51472 11 6.5 8.98528 6.5 6.5C6.5 4.01472 8.51472 2 11 2C13.4853 2 15.5 4.01472 15.5 6.5Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M18 20.7143V22M18 20.7143C16.8432 20.7143 15.8241 20.1461 15.2263 19.2833M18 20.7143C19.1568 20.7143 20.1759 20.1461 20.7737 19.2833M15.2263 19.2833L14.0004 20.0714M15.2263 19.2833C14.8728 18.773 14.6667 18.1597 14.6667 17.5C14.6667 16.8403 14.8727 16.2271 15.2262 15.7169M20.7737 19.2833L21.9996 20.0714M20.7737 19.2833C21.1272 18.773 21.3333 18.1597 21.3333 17.5C21.3333 16.8403 21.1273 16.2271 20.7738 15.7169M18 14.2857C19.1569 14.2857 20.1761 14.854 20.7738 15.7169M18 14.2857C16.8431 14.2857 15.8239 14.854 15.2262 15.7169M18 14.2857V13M20.7738 15.7169L22 14.9286M15.2262 15.7169L14 14.9286"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" />
</svg>
</div>
<div>
@@ -330,6 +362,7 @@ class="invoice_form">
</div>
</div>
</div>
<div class="tab-pane fade" id="Currencies" role="tabpanel" aria-labelledby="invoice-tab">
<div>
<div class="settings-box-container">
@@ -342,10 +375,10 @@ class="text-decoration-none text-dark">
xmlns="http://www.w3.org/2000/svg">
<path
d="M3.16602 12C3.16602 7.77027 3.16602 5.6554 4.36399 4.25276C4.5341 4.05358 4.7196 3.86808 4.91878 3.69797C6.32142 2.5 8.43629 2.5 12.666 2.5C16.8957 2.5 19.0106 2.5 20.4132 3.69797C20.6124 3.86808 20.7979 4.05358 20.968 4.25276C22.166 5.6554 22.166 7.77027 22.166 12C22.166 16.2297 22.166 18.3446 20.968 19.7472C20.7979 19.9464 20.6124 20.1319 20.4132 20.302C19.0106 21.5 16.8957 21.5 12.666 21.5C8.43629 21.5 6.32142 21.5 4.91878 20.302C4.7196 20.1319 4.5341 19.9464 4.36399 19.7472C3.16602 18.3446 3.16602 16.2297 3.16602 12Z"
stroke="#C52127" stroke-width="1.5" />
stroke="var(--clr-primary)" stroke-width="1.5" />
<path
d="M15.3762 10.063C15.2771 9.30039 14.4014 8.06817 12.8268 8.06814C10.9972 8.06811 10.2274 9.08141 10.0712 9.58806C9.82746 10.2657 9.8762 11.659 12.0207 11.8109C14.7014 12.0009 15.7753 12.3174 15.6387 13.958C15.502 15.5985 14.0077 15.953 12.8268 15.9149C11.6458 15.877 9.71365 15.3344 9.63867 13.8752M12.6394 7V8.07177M12.6394 15.9051V16.9999"
stroke="#C52127" stroke-width="1.5" stroke-linecap="round" />
stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" />
</svg>
</div>
<div>
@@ -360,7 +393,7 @@ class="text-decoration-none text-dark">
</div>
@if (moduleCheck('MarketingAddon'))
<div class="tab-pane fade" id="sms" role="tabpanel" aria-labelledby="invoice-tab">
<div class="tab-pane fade" id="sms" role="tabpanel" aria-labelledby="sms-tab">
<div>
<div class="settings-box-container">
<a href="{{ route('business.sms-gateway-settings.index') }}" class="text-decoration-none text-dark">
@@ -368,10 +401,10 @@ class="text-decoration-none text-dark">
<div class="d-flex align-items-center jusitfy-content-center gap-3">
<div class="settings-icon">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 18.332C9.31817 18.332 8.66683 18.0569 7.36411 17.5066C4.12137 16.1368 2.5 15.4519 2.5 14.2998C2.5 13.9772 2.5 8.38578 2.5 5.83203M10 18.332C10.6818 18.332 11.3332 18.0569 12.6359 17.5066C15.8787 16.1368 17.5 15.4519 17.5 14.2998V5.83203M10 18.332V9.46103" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.93827 8.07745L4.50393 6.89951C3.16797 6.25305 2.5 5.92983 2.5 5.41797C2.5 4.90611 3.16797 4.58289 4.50393 3.93643L6.93827 2.75849C8.44067 2.03148 9.19192 1.66797 10 1.66797C10.8081 1.66797 11.5593 2.03147 13.0617 2.75849L15.4961 3.93643C16.832 4.58289 17.5 4.90611 17.5 5.41797C17.5 5.92983 16.832 6.25305 15.4961 6.89951L13.0617 8.07745C11.5593 8.80447 10.8081 9.16797 10 9.16797C9.19192 9.16797 8.44067 8.80447 6.93827 8.07745Z" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 10L6.66667 10.8333" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1673 3.33594L5.83398 7.5026" stroke="#C52127" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 18.332C9.31817 18.332 8.66683 18.0569 7.36411 17.5066C4.12137 16.1368 2.5 15.4519 2.5 14.2998C2.5 13.9772 2.5 8.38578 2.5 5.83203M10 18.332C10.6818 18.332 11.3332 18.0569 12.6359 17.5066C15.8787 16.1368 17.5 15.4519 17.5 14.2998V5.83203M10 18.332V9.46103" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.93827 8.07745L4.50393 6.89951C3.16797 6.25305 2.5 5.92983 2.5 5.41797C2.5 4.90611 3.16797 4.58289 4.50393 3.93643L6.93827 2.75849C8.44067 2.03148 9.19192 1.66797 10 1.66797C10.8081 1.66797 11.5593 2.03147 13.0617 2.75849L15.4961 3.93643C16.832 4.58289 17.5 4.90611 17.5 5.41797C17.5 5.92983 16.832 6.25305 15.4961 6.89951L13.0617 8.07745C11.5593 8.80447 10.8081 9.16797 10 9.16797C9.19192 9.16797 8.44067 8.80447 6.93827 8.07745Z" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 10L6.66667 10.8333" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1673 3.33594L5.83398 7.5026" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<div>
@@ -385,9 +418,114 @@ class="text-decoration-none text-dark">
</div>
</div>
@endif
@if (moduleCheck('MarketingAddon'))
<div class="tab-pane fade" id="email" role="tabpanel" aria-labelledby="email-tab">
<div>
<div class="settings-box-container">
<a href="{{ route('business.email-settings.index') }}" class="text-decoration-none text-dark">
<div class="setting-box">
<div class="d-flex align-items-center jusitfy-content-center gap-3">
<div class="settings-icon">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 18.332C9.31817 18.332 8.66683 18.0569 7.36411 17.5066C4.12137 16.1368 2.5 15.4519 2.5 14.2998C2.5 13.9772 2.5 8.38578 2.5 5.83203M10 18.332C10.6818 18.332 11.3332 18.0569 12.6359 17.5066C15.8787 16.1368 17.5 15.4519 17.5 14.2998V5.83203M10 18.332V9.46103" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.93827 8.07745L4.50393 6.89951C3.16797 6.25305 2.5 5.92983 2.5 5.41797C2.5 4.90611 3.16797 4.58289 4.50393 3.93643L6.93827 2.75849C8.44067 2.03148 9.19192 1.66797 10 1.66797C10.8081 1.66797 11.5593 2.03147 13.0617 2.75849L15.4961 3.93643C16.832 4.58289 17.5 4.90611 17.5 5.41797C17.5 5.92983 16.832 6.25305 15.4961 6.89951L13.0617 8.07745C11.5593 8.80447 10.8081 9.16797 10 9.16797C9.19192 9.16797 8.44067 8.80447 6.93827 8.07745Z" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 10L6.66667 10.8333" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1673 3.33594L5.83398 7.5026" stroke="var(--clr-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<div>
<h6>{{__('Email Settings')}}</h6>
<small class="text-muted d-block">{{__('View and update email settings.')}}</small>
</div>
</div>
</div>
</a>
</div>
</div>
</div>
@endif
<div class="tab-pane fade" id="theme" role="tabpanel" aria-labelledby="theme-tab">
<form action="{{ route('business.theme.update') }}" method="POST" class="ajaxform">
@csrf
<div class="kot-color-wrapper">
<div class="kot-color-item">
<span class="kot-label">{{ __('Primary Color') }}</span>
<div class="kot-input-box">
<div class="kot-color-preview" style="background:{{ $theme_settings['primary_color'] ?? '#C52127' }};"></div>
<input type="text" value="{{ $theme_settings['primary_color'] ?? '#C52127' }}" readonly>
<label class="kot-picker-btn">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.1958 5.82812L5.96596 11.058M5.96596 11.058L4.02273 13.0012C3.27141 13.7525 2.89574 14.1282 2.69787 14.606C2.5 15.0836 2.5 15.6149 2.5 16.6775V17.4948H3.31735C4.37988 17.4948 4.91115 17.4948 5.38886 17.297C5.86657 17.099 6.24223 16.7234 6.99356 15.972L11.9076 11.058M5.96596 11.058H11.9076M11.9076 11.058L14.1667 8.79896" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.0066 6.99057L17.3493 8.33333M16.0066 6.99057L16.7248 6.27235C16.9685 6.02859 17.0904 5.90671 17.1752 5.78774C17.6074 5.18063 17.6074 4.36627 17.1752 3.75916C17.0904 3.6402 16.9685 3.51831 16.7248 3.27456C16.481 3.03081 16.3592 2.90891 16.2402 2.82421C15.6331 2.39193 14.8187 2.39193 14.2116 2.82421C14.0927 2.90891 13.9708 3.03079 13.727 3.27456L13.0088 3.99277M16.0066 6.99057L13.0088 3.99277M13.0088 3.99277L11.666 2.65001" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<input type="color" name="primary_color" value="{{ $theme_settings['primary_color'] ?? '#C52127' }}" id="primaryColor">
</label>
</div>
</div>
<div class="kot-color-item">
<span class="kot-label">{{ __('Secondary Color') }}</span>
<div class="kot-input-box">
<div class="kot-color-preview" style="background:{{ $theme_settings['secondary_color'] ?? '#F68A3D' }};"></div>
<input type="text" value="{{ $theme_settings['secondary_color'] ?? '#F68A3D' }}"readonly>
<label class="kot-picker-btn secondary">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.1958 5.82812L5.96596 11.058M5.96596 11.058L4.02273 13.0012C3.27141 13.7525 2.89574 14.1282 2.69787 14.606C2.5 15.0836 2.5 15.6149 2.5 16.6775V17.4948H3.31735C4.37988 17.4948 4.91115 17.4948 5.38886 17.297C5.86657 17.099 6.24223 16.7234 6.99356 15.972L11.9076 11.058M5.96596 11.058H11.9076M11.9076 11.058L14.1667 8.79896" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.0066 6.99057L17.3493 8.33333M16.0066 6.99057L16.7248 6.27235C16.9685 6.02859 17.0904 5.90671 17.1752 5.78774C17.6074 5.18063 17.6074 4.36627 17.1752 3.75916C17.0904 3.6402 16.9685 3.51831 16.7248 3.27456C16.481 3.03081 16.3592 2.90891 16.2402 2.82421C15.6331 2.39193 14.8187 2.39193 14.2116 2.82421C14.0927 2.90891 13.9708 3.03079 13.727 3.27456L13.0088 3.99277M16.0066 6.99057L13.0088 3.99277M13.0088 3.99277L11.666 2.65001" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<input type="color" name="secondary_color" value="{{ $theme_settings['secondary_color'] ?? '#F68A3D' }}" id="secondaryColor">
</label>
</div>
</div>
<div class="kot-color-item">
<span class="kot-label">{{ __('Sidebar Color') }}</span>
<div class="kot-input-box">
<div class="kot-color-preview" style="background:{{ $theme_settings['sidebar_color'] ?? '#201415' }};"></div>
<input type="text" value="{{ $theme_settings['sidebar_color'] ?? '#201415' }}" readonly>
<label class="kot-picker-btn">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.1958 5.82812L5.96596 11.058M5.96596 11.058L4.02273 13.0012C3.27141 13.7525 2.89574 14.1282 2.69787 14.606C2.5 15.0836 2.5 15.6149 2.5 16.6775V17.4948H3.31735C4.37988 17.4948 4.91115 17.4948 5.38886 17.297C5.86657 17.099 6.24223 16.7234 6.99356 15.972L11.9076 11.058M5.96596 11.058H11.9076M11.9076 11.058L14.1667 8.79896" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.0066 6.99057L17.3493 8.33333M16.0066 6.99057L16.7248 6.27235C16.9685 6.02859 17.0904 5.90671 17.1752 5.78774C17.6074 5.18063 17.6074 4.36627 17.1752 3.75916C17.0904 3.6402 16.9685 3.51831 16.7248 3.27456C16.481 3.03081 16.3592 2.90891 16.2402 2.82421C15.6331 2.39193 14.8187 2.39193 14.2116 2.82421C14.0927 2.90891 13.9708 3.03079 13.727 3.27456L13.0088 3.99277M16.0066 6.99057L13.0088 3.99277M13.0088 3.99277L11.666 2.65001" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<input type="color" name="sidebar_color" value="{{ $theme_settings['sidebar_color'] ?? '#201415' }}" id="sidebarColor">
</label>
</div>
</div>
<div class="kot-color-item">
<span class="kot-label">{{ __('Accent Color') }}</span>
<div class="kot-input-box">
<div class="kot-color-preview" style="background:{{ $theme_settings['accent_color'] ?? '#fef0f1' }};"></div>
<input type="text" value="{{ $theme_settings['accent_color'] ?? '#fef0f1' }}" readonly>
<label class="kot-picker-btn">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.1958 5.82812L5.96596 11.058M5.96596 11.058L4.02273 13.0012C3.27141 13.7525 2.89574 14.1282 2.69787 14.606C2.5 15.0836 2.5 15.6149 2.5 16.6775V17.4948H3.31735C4.37988 17.4948 4.91115 17.4948 5.38886 17.297C5.86657 17.099 6.24223 16.7234 6.99356 15.972L11.9076 11.058M5.96596 11.058H11.9076M11.9076 11.058L14.1667 8.79896" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.0066 6.99057L17.3493 8.33333M16.0066 6.99057L16.7248 6.27235C16.9685 6.02859 17.0904 5.90671 17.1752 5.78774C17.6074 5.18063 17.6074 4.36627 17.1752 3.75916C17.0904 3.6402 16.9685 3.51831 16.7248 3.27456C16.481 3.03081 16.3592 2.90891 16.2402 2.82421C15.6331 2.39193 14.8187 2.39193 14.2116 2.82421C14.0927 2.90891 13.9708 3.03079 13.727 3.27456L13.0088 3.99277M16.0066 6.99057L13.0088 3.99277M13.0088 3.99277L11.666 2.65001" stroke="#4B5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<input type="color" name="accent_color" value="{{ $theme_settings['accent_color'] ?? '#fef0f1' }}" id="accentColor">
</label>
</div>
</div>
</div>
<div class="col-lg-12">
<div class="text-center mt-5">
<button type="submit" class="theme-btn m-2 submit-btn">{{ __('Update') }}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@endsection

View File

@@ -27,16 +27,6 @@
</svg>
</h3>
<div class="d-flex align-items-center mb-3">
<input type="hidden" name="show_product_price" value="0">
<input id="product_price" class="delete-checkbox-item multi-delete" type="checkbox"
name="show_product_price" value="1"
{{ is_null($product_setting) || is_null($product_setting->modules) || (optional($product_setting->modules)['show_product_price'] ?? false) ? 'checked' : '' }}>
<label for="product_price">
{{__('Product Price')}}
</label>
</div>
<div class="d-flex align-items-center mb-3">
<input type="hidden" name="show_product_code" value="0">
<input id="product_code" class="delete-checkbox-item multi-delete" type="checkbox"
@@ -45,6 +35,13 @@
<label for="product_code">{{__('Product Code')}}</label>
</div>
<div class="d-flex align-items-center mb-3">
<input type="hidden" name="show_hsn_code" value="0">
<input id="hsn_code" class="delete-checkbox-item multi-delete" type="checkbox" name="show_hsn_code" value="1"
{{ optional($product_setting?->modules)['show_hsn_code'] === '1' ? 'checked' : '' }}>
<label for="hsn_code">{{__('HSN Code')}}</label>
</div>
<div class="d-flex align-items-center mb-3">
<input type="hidden" name="show_product_stock" value="0">
<input id="stock" class="delete-checkbox-item multi-delete" type="checkbox"
@@ -57,7 +54,7 @@
<input type="hidden" name="show_product_unit" value="0">
<input id="unit" class="delete-checkbox-item multi-delete" type="checkbox"
name="show_product_unit" value="1"
{{ is_null($product_setting) || is_null($product_setting->modules) || (optional($product_setting->modules)['show_product_unit'] ?? false) ? 'checked' : '' }}>
{{ optional($product_setting?->modules)['show_product_unit'] === '1' ? 'checked' : '' }}>
<label for="unit">{{__('Product Unit')}}</label>
</div>
@@ -105,7 +102,7 @@
<input type="hidden" name="show_alert_qty" value="0">
<input id="quantity" class="delete-checkbox-item multi-delete" type="checkbox"
name="show_alert_qty" value="1"
{{ is_null($product_setting) || is_null($product_setting->modules) || (optional($product_setting->modules)['show_alert_qty'] ?? false) ? 'checked' : '' }}>
{{ optional($product_setting?->modules)['show_alert_qty'] === '1' ? 'checked' : '' }}>
<label for="quantity">{{__('Low Stock Alert')}}</label>
</div>
@@ -457,6 +454,8 @@ class="form-control mfg-my"
{{ optional($product_setting?->modules)['allow_product_discount'] === '1' ? 'checked' : '' }}>
<label for="allow_product_discount">{{ __('Product Discount') }}</label>
</div>
</div>
<div class="col-lg-12">

View File

@@ -0,0 +1,59 @@
@extends('layouts.business.master')
@section('title')
{{ $party->type === 'Supplier' ? __('Advance Pay') : __('Advance Collect') }}
@endsection
@section('main_content')
<div class="erp-table-section">
<div class="container-fluid">
<div class="card border-0">
<div class="card-bodys ">
<div class="table-header p-16">
<h4>{{ $party->type === 'Supplier' ? __('Advance Pay') : __('Advance Collect') }}</h4>
</div>
<div class="order-form-section p-16">
<form action="{{ route('business.parties.advance-payments.store') }}" method="POST" class="ajaxform">
@csrf
<input type="hidden" name="party_id" value="{{ $party->id }}">
<div class="add-suplier-modal-wrapper d-block">
<div class="row">
<div class="col-lg-6 mb-2">
<label>{{ $party->type == 'Supplier' ? __('Supplier Name') : __('Customer Name') }}</label>
<input type="text" value="{{ $party->name }}" readonly class="form-control">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Date') }}</label>
<input type="date" name="date" required class="form-control" value="{{ date('Y-m-d') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Wallet Amount') }}</label>
<input type="number" value="{{ $party->wallet }}" readonly class="form-control">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Advance Amount') }}</label>
<input type="number" name="amount" id="advanceAmount" required class="form-control" placeholder="{{ __('Enter amount') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Notes') }}</label>
<input type="text" name="note" class="form-control" placeholder="{{ __('Enter notes') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Payment Type') }}</label>
@include('business::component.payment_type', ['context' => $party->type === 'Supplier' ? 'advance_pay' : 'advance_collect', 'payment_types' => $payment_types])
</div>
<div class="col-lg-12">
<div class="button-group text-center mt-5">
<button type="reset" class="theme-btn border-btn m-2">{{ __('Reset') }}</button>
<button class="theme-btn m-2 submit-btn">{{ __('Save') }}</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,142 @@
<div class="modal fade" id="parties-import-modal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">{{__('Bulk Upload')}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<!-- Modal Body -->
<div class="modal-body">
<div class="erp-table-section">
<div class="">
<div class="border-0">
<div class="card-bodys">
<form action="{{ route('business.parties.bulk-store', request('type')) }}" method="post" enctype="multipart/form-data" class="ajaxform">
@csrf
<div class="bulk-upload-container w-100">
<div class="d-flex justify-content-between align-items-center w-100">
<div class="bulk-input w-100">
<div class="row align-items-center">
<div class="col-lg-12">
<div class="custom-upload-wrapper">
<div class="custom-file-box">
<div class="custom-file-content">
<svg width="30" height="30" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 5V19M5 12H19" stroke="#4B5563" stroke-width="2.0" stroke-linecap="round"/>
</svg>
<span class="custom-upload-text">{{ __('Add File') }}</span>
</div>
<p class="preview-file d-none"></p>
<input type="file" name="file" class="preview-file-input" required>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="d-flex align-items-center justify-content-center gap-2 flex-wrap">
<button type="submit" class="add-order-btn process-csv-btn rounded-2 border-0 submit-btn mt-3">{{__('Submit')}}</button>
<a href="{{ asset('assets/party-bulk-upload.xlsx') }}" download="party-bulk-upload.xlsx" class="download-file-btn mt-3"><i class="fas fa-download"></i> {{__('Download Sample File')}}</a>
</div>
</div>
<div class="bulk-upload-container mt-3">
<div class="instruction-header">
<h5>{{__('Instructions')}}</h5>
<div class="mt-3">
<h6><strong>{{__('Note')}}: </strong> {{__('Please follow the instructions below to upload your file.')}}</h6>
<ul>
<li><b>{{__('1.')}}</b> {{__('Download the sample file first and add all your purchases data to it.')}}</li>
<li><b>{{__('2.')}}</b> <span class="text-danger">*</span> {{__('Indicates a required field. If you do not provide the required fields, the system will ignore except party information.')}}</li>
<li><b>{{__('3.')}}</b> {{__('After adding all your data, please save the file and then upload the updated version.')}}</li>
</ul>
</div>
</div>
</div>
{{-- Fields Documentation Table --}}
<div class="responsive-table mt-4 min-h-0">
<table class="table" id="datatable">
<thead>
<tr>
<th>{{ __('SL') }}.</th>
<th class="text-start">{{ __('Field Name') }}</th>
<th class="text-start">{{ __('Description') }}</th>
</tr>
</thead>
<tbody id="business-category-data">
<tr>
<td>{{__('1.')}}</td>
<td class="text-start">{{__('Customer/Supplier Name')}} <span class="text-danger fw-bold">*</span></td>
<td class="text-start">{{__('The name of the party you are adding')}} ({{__('e.g.,')}} <b>{{__('James')}}</b>).</td>
</tr>
<tr>
<td>{{__('1.')}}</td>
<td class="text-start">{{__('Phone Number')}}</td>
<td class="text-start">
{{__('Phone number of the party.')}} ({{__('e.g.,')}} <b>{{__('01*******')}}</b>).
</td>
</tr>
<tr>
<td>{{__('3.')}}</td>
<td class="text-start">{{__('Party Type')}} <span class="text-danger fw-bold">*</span></td>
<td class="text-start">
{{__('What is the party type. Retailer,Dealer,Wholesaler,Supplier. You have to store one of them.')}} ({{__('e.g.,')}} <b>{{__('Retailer')}}</b>).
</td>
</tr>
<tr>
<td>{{__('4.')}}</td>
<td class="text-start">{{__('Balance')}}</td>
<td class="text-start">
{{__('Party current balance.')}} ({{__('e.g.,')}} <b>{{__('500')}}</b>)
</td>
</tr>
<tr>
<td>{{__('5.')}}</td>
<td class="text-start">{{__('Balance Type')}}</td>
<td class="text-start">{{__('Balance type need to be added. due, advance')}} ({{__('e.g.,')}} <b>{{__('due')}}</b>).</td>
</tr>
<tr>
<td>{{__('6.')}}</td>
<td class="text-start">{{__('Email')}}</td>
<td class="text-start">
{{__('A unique email for the party')}} ({{__('e.g.,')}} <b>{{__('abc@gmail.com')}}</b>).
<br><small>{{__('Email must be unique — duplicate email will be ignored.')}}</small>
</td>
</tr>
<tr>
<td>{{__('7.')}}</td>
<td class="text-start">{{__('Party Credit Limit')}}</td>
<td class="text-start">{{__('This number field only applicable for Retailer,Dealer,Wholesaler.')}}</td>
</tr>
<tr>
<td>{{__('8.')}}</td>
<td class="text-start">{{__('Address')}}</td>
<td class="text-start">{{__('Party address')}}</td>
</tr>
<tr>
<td>{{__('9.')}}</</td>
<td class="text-start">{{__('Dealer Price')}}</td>
<td class="text-start">{{__('Special discounted price for bulk resellers or dealers.')}}</td>
</tr>
<tr>
<td>{{__('10.')}}</td>
<td class="text-start">{{__('Tax No')}}</td>
<td class="text-start">{{__('Enter tax no')}}</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -5,13 +5,6 @@
@endsection
@php
$file = base_path('lang/countrylist.json');
if (file_exists($file)) {
$countries = json_decode(file_get_contents($file), true);
} else {
$countries = [];
}
$type = request('type') !== 'Supplier' ? 'Customer' : 'Supplier';
@endphp
@@ -27,12 +20,18 @@
<h4>{{ __('Add new :type', ['type' => __($type)]) }}</h4>
@usercan('parties.read')
<a href="{{ route('business.parties.index', ['type' => request('type')]) }}"
class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active' : '' }}">
<i class="far fa-list" aria-hidden="true"></i>{{ __(':type List', ['type' => __($type)]) }}
</a>
@endusercan
<div class="d-flex align-items-center gap-3">
<a data-bs-toggle="modal" data-bs-target="#parties-import-modal" class="save-publish-btn" href="#">
{{__('Bulk Upload')}}
</a>
@usercan('parties.read')
<a href="{{ route('business.parties.index', ['type' => request('type')]) }}"
class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active' : '' }}">
<i class="far fa-list" aria-hidden="true"></i>{{ __(':type List', ['type' => __($type)]) }}
</a>
@endusercan
</div>
</div>
<div class="order-form-section p-16">
@@ -43,11 +42,11 @@ class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active
<div class="row col-lg-9">
<div class="col-lg-6 mb-2">
<label>{{ __($type . ' Name') }}</label>
<input type="text" name="name" required class="form-control" placeholder="{{ __('Enter '.$type.' Name') }}">
<input type="text" name="name" required class="form-control" placeholder="{{ __('Enter :type Name', ['type' => __($type)]) }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Phone Number') }}</label>
<input type="number" name="phone" class="form-control" placeholder="{{ __('Enter Phone Number') }}">
<input type="text" name="phone" class="form-control" placeholder="{{ __('Enter Phone Number') }}">
</div>
@if (request('type') !== 'Supplier')
<div class="col-lg-6 mb-2">
@@ -95,6 +94,12 @@ class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active
<label>{{ __('Address') }}</label>
<input type="text" name="address" class="form-control" placeholder="{{ __('Enter Address') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Tax No') }}</label>
<input type="text" name="tax_no" class="form-control" placeholder="{{ __('Enter tax') }}">
</div>
<div class="accordion" id="customAccordion">
<div class="accordion-item border-0">
<h2 class="accordion-header">
@@ -106,31 +111,39 @@ class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active
data-bs-parent="#customAccordion">
<div class="accordion-body fst-italic text-secondary p-0">
<div class="row">
<div class="col-lg-6 mb-2">
<label>{{ __('Address line 1') }}</label>
<input type="text" name="billing_address[address]" class="form-control" placeholder="{{ __('Enter address') }}">
<label>{{ __('Country') }}</label>
<select name="country_id" id="country_id" class="form-control">
<option value="">{{ __('Select a country') }}</option>
@foreach ($countries as $country)
<option value="{{ $country->id }}">{{ __($country->name) }}</option>
@endforeach
</select>
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('State') }}</label>
<select name="state_id" id="state_id" class="form-control">
<option value="">{{ __('Select state') }}</option>
</select>
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('City') }}</label>
<input type="text" name="billing_address[city]" class="form-control" placeholder="{{ __('Enter city') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('State') }}</label>
<input type="text" name="billing_address[state]" class="form-control" placeholder="{{ __('Enter state') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Zip Code') }}</label>
<input type="text" name="billing_address[zip_code]" class="form-control" placeholder="{{ __('Enter zip code') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Country') }}</label>
<select name="billing_address[country]" class="form-control">
<option value="">{{ __('Select a country') }}</option>
@foreach ($countries as $country)
<option value="{{ $country['name'] }}">{{ __($country['name']) }}</option>
@endforeach
</select>
<label>{{ __('Address line 1') }}</label>
<input type="text" name="billing_address[address]" class="form-control" placeholder="{{ __('Enter address') }}">
</div>
</div>
</div>
</div>
@@ -184,7 +197,7 @@ class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active
<img src="{{ asset('assets/images/icons/img.png') }}" alt="icon" />
</div>
<p>{{__('Drag & drop your Image')}}</p>
<p>or <span class="browse-text">{{__('Browse')}}</span></p>
<p>{{__('or')}} <span class="browse-text">{{__('Browse')}}</span></p>
</div>
</div>
<input type="file" name="image" id="fileInput" accept="image/*">
@@ -205,4 +218,11 @@ class="add-order-btn rounded-2 {{ Route::is('business.parties.create') ? 'active
</div>
</div>
</div>
<input type="hidden" value="{{ route('business.get-states.index') }}" id="get-state">
@endsection
@push('modal')
@include('business::parties.bulk-upload.parties-import')
@endpush

View File

@@ -65,9 +65,21 @@ class="table-product-img">
@endusercan
</li>
<li>
<a
href="{{ route('business.parties.edit', [$party->id, 'type' => request('type')]) }}"><i
class="fal fa-edit"></i>{{ __('Edit') }}</a>
<a href="{{ route('business.parties.advance-payments', [$party->id, 'type' => request('type')]) }}">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" class="pt-1 me-0" xmlns="http://www.w3.org/2000/svg">
<path d="M1.66602 3.75H7.29715C7.96019 3.75 8.5961 4.01339 9.06493 4.48223L11.666 7.08333" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.16602 11.25H1.66602" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.08268 6.25L8.74935 7.91667C9.2096 8.37692 9.2096 9.12308 8.74935 9.58333C8.28912 10.0436 7.54292 10.0436 7.08268 9.58333L5.83268 8.33333C5.11544 9.05058 3.97994 9.13125 3.16847 8.52267L2.91602 8.33333" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.16602 9.16536V12.9154C4.16602 14.4867 4.16602 15.2724 4.65417 15.7605C5.14232 16.2487 5.928 16.2487 7.49935 16.2487H14.9993C16.5707 16.2487 17.3563 16.2487 17.8445 15.7605C18.3327 15.2724 18.3327 14.4867 18.3327 12.9154V10.4154C18.3327 8.84403 18.3327 8.05834 17.8445 7.57019C17.3563 7.08203 16.5707 7.08203 14.9993 7.08203H7.91602" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.7077 11.6654C12.7077 12.4708 12.0548 13.1237 11.2493 13.1237C10.4439 13.1237 9.79102 12.4708 9.79102 11.6654C9.79102 10.8599 10.4439 10.207 11.2493 10.207C12.0548 10.207 12.7077 10.8599 12.7077 11.6654Z" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
{{ $party->type == 'Supplier' ? __('Advance Pay') : __('Advance Collect') }}
</a>
</li>
<li>
<a href="{{ route('business.parties.edit', [$party->id, 'type' => request('type')]) }}">
<i class="fal fa-edit"></i>{{ __('Edit') }}
</a>
</li>
<li>
@usercan('parties.delete')

View File

@@ -5,13 +5,6 @@
@endsection
@php
$file = base_path('lang/countrylist.json');
if (file_exists($file)) {
$countries = json_decode(file_get_contents($file), true);
} else {
$countries = [];
}
$type = request('type') !== 'Supplier' ? 'Customer' : 'Supplier';
@endphp
@@ -49,7 +42,7 @@ class="ajaxform_instant_reload">
<div class="col-lg-6 mb-2">
<label>{{ __('Phone') }}</label>
<input type="number" value="{{ $party->phone }}" name="phone"
<input type="text" value="{{ $party->phone }}" name="phone"
class="form-control" placeholder="{{ __('Enter phone number') }}">
</div>
@@ -77,7 +70,8 @@ class="form-control" placeholder="{{ __('Enter phone number') }}">
@endif
@php
$branch_logic = $party->branch_id != (auth()->user()->active_branch?->id);
$branch_id = auth()->user()->branch_id ?? auth()->user()->active_branch_id ?? null;
$branch_logic = $party->branch_id != $branch_id;
@endphp
<div class="col-lg-6 mb-2">
@@ -116,6 +110,11 @@ class="form-control" placeholder="{{ __('Enter Email') }}">
class="form-control" placeholder="{{ __('Enter Address') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Tax No') }}</label>
<input type="text" value="{{ $party->tax_no }}" name="tax_no" class="form-control" placeholder="{{ __('Enter tax') }}">
</div>
<div class="accordion" id="customAccordion">
<div class="accordion-item border-0">
<h2 class="accordion-header">
@@ -131,12 +130,22 @@ class="accordion-button address-accordion collapsed fw-medium text-primary bg-t
data-bs-parent="#customAccordion">
<div class="accordion-body fst-italic text-secondary p-0">
<div class="row">
<div class="col-lg-6 mb-2">
<label>{{ __('Address') }}</label>
<input type="text" name="billing_address[address]"
value="{{ $party->billing_address['address'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter address') }}">
<label>{{ __('Country') }}</label>
<select name="country_id" id="country_id" class="form-control">
<option value="">{{ __('Select a country') }}</option>
@foreach ($countries as $country)
<option value="{{ $country->id }}" @selected(($party->country_id ?? '') == $country->id)>{{ __($country->name) }}</option>
@endforeach
</select>
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('State') }}</label>
<select name="state_id" id="state_id" class="form-control" data-selected="{{ $party->state_id ?? '' }}">
<option value="">{{ __('Select state') }}</option>
</select>
</div>
<div class="col-lg-6 mb-2">
@@ -147,14 +156,6 @@ class="form-control"
placeholder="{{ __('Enter city') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('State') }}</label>
<input type="text" name="billing_address[state]"
value="{{ $party->billing_address['state'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter state') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Zip Code') }}</label>
<input type="text" name="billing_address[zip_code]"
@@ -163,24 +164,18 @@ class="form-control"
placeholder="{{ __('Enter zip code') }}">
</div>
<div class="col-lg-6 mb-2">
<label>{{ __('Address') }}</label>
<input type="text" name="billing_address[address]"
value="{{ $party->billing_address['address'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter address') }}">
</div>
@php
$billing = is_array($party->billing_address) ? $party->billing_address : json_decode($party->billing_address, true) ?? [];
@endphp
<div class="col-lg-6 mb-2">
<label>{{ __('Country') }}</label>
<select name="billing_address[country]"
class="form-control">
<option value="">{{ __('Select a country') }}
</option>
@foreach ($countries as $country)
<option value="{{ $country['name'] }}"
@selected(($billing['country'] ?? '') == $country['name'])>
{{ __($country['name']) }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
@@ -204,7 +199,7 @@ class="accordion-button address-accordion fw-medium text-dark bg-transparent sha
<div class="col-lg-6 mb-2">
<label>{{ __('Address') }}</label>
<input type="text" name="shipping_address[address]"
value="{{ $party->billing_address['address'] ?? '' }}"
value="{{ $party->shipping_address['address'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter address') }}">
</div>
@@ -212,7 +207,7 @@ class="form-control"
<div class="col-lg-6 mb-2">
<label>{{ __('City') }}</label>
<input type="text" name="shipping_address[city]"
value="{{ $party->billing_address['city'] ?? '' }}"
value="{{ $party->shipping_address['city'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter city') }}">
</div>
@@ -220,7 +215,7 @@ class="form-control"
<div class="col-lg-6 mb-2">
<label>{{ __('State') }}</label>
<input type="text" name="shipping_address[state]"
value="{{ $party->billing_address['state'] ?? '' }}"
value="{{ $party->shipping_address['state'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter state') }}">
</div>
@@ -228,7 +223,7 @@ class="form-control"
<div class="col-lg-6 mb-2">
<label>{{ __('Zip Code') }}</label>
<input type="text" name="shipping_address[zip_code]"
value="{{ $party->billing_address['zip_code'] ?? '' }}"
value="{{ $party->shipping_address['zip_code'] ?? '' }}"
class="form-control"
placeholder="{{ __('Enter zip code') }}">
</div>
@@ -265,7 +260,7 @@ class="form-control">
<img src="{{ asset( $party->image ?? 'assets/images/icons/img.png') }}" alt="icon" />
</div>
<p>{{__('Drag & drop your Image')}}</p>
<p>or <span class="browse-text">{{__('Browse')}}</span></p>
<p>{{__('or')}} <span class="browse-text">{{__('Browse')}}</span></p>
</div>
</div>
@@ -290,5 +285,6 @@ class="theme-btn border-btn m-2">{{ __('Cancel') }}</a>
</div>
</div>
</div>
</div>
<input type="hidden" value="{{ route('business.get-states.index') }}" id="get-state">
@endsection

View File

@@ -55,16 +55,16 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.customer-ledger.csv') }}">
<a class="export-btn" href="{{ route('business.customer-ledger.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.customer-ledger.excel') }}">
<a class="export-btn" href="{{ route('business.customer-ledger.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<a target="blank" href="{{ route('business.customer-ledger.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.customer-ledger.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,6 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Customer Ledger List') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
</div>
@endsection

View File

@@ -25,13 +25,41 @@
<td class="text-start d-print-none">{{ $index + 1 }}</td>
<td class="text-start">{{ formatted_date($row['date']) }}</td>
@php
$invoice_no = $row['invoice_no'] ?? null;
$invoice_route = null;
if ($invoice_no) {
if ($row['platform'] === 'Sales') {
$businessId = $row['business_id'] ?? null;
$tax_invoice = moduleCheck('TaxInvoiceAddon') && invoice_setting($businessId) == 'standard_a4';
$invoice_route = $tax_invoice
? route('business.sales.tax.invoice', $row['id'])
: route('business.sales.invoice', $row['id']);
} else {
$invoice_route = route('business.collect.dues.invoice', $row['id'] ?? '');
}
}
@endphp
<td class="text-start">
<a target="_blank" href="{{ $row['platform'] === 'Sales' ? route('business.sales.invoice', $row['id'] ?? '') : route('business.collect.dues.invoice', $row['id'] ?? '') }}" class="stock-view-data text-primary">
{{ $row['invoice_no'] ?? '-' }}
</a>
@if($invoice_route)
<a target="_blank" href="{{ $invoice_route }}" class="stock-view-data text-primary">
{{ $invoice_no }}
</a>
@else
{{ $invoice_no ?? '-' }}
@endif
</td>
<td class="text-start">{{ $row['platform'] }}</td>
<td class="text-start">
@if(in_array($row['platform'], ['Opening Collection', 'Opening Payment']))
{{ $row['platform'] }}: {{ currency_format($row['amount'] ?? 0, currency: business_currency()) }}
@else
{{ $row['platform'] }}
@endif
</td>
<td class="text-start">{{ currency_format($row['credit_amount'], currency: business_currency() ) }}</td>

View File

@@ -25,12 +25,24 @@
<td class="text-start">{{ formatted_date($row['date']) }}</td>
<td class="text-start">
<a target="_blank" href="{{ $row['platform'] === 'Sales' ? route('business.sales.invoice', $row['id'] ?? '') : route('business.collect.dues.invoice', $row['id'] ?? '') }}" class="stock-view-data text-primary">
{{ $row['invoice_no'] ?? '-' }}
</a>
@if($row['invoice_no'] && $row['platform'] === 'Sales')
<a target="_blank" href="{{ route('business.sales.invoice', $row['id'] ?? '') }}" class="stock-view-data text-primary">
{{ $row['invoice_no'] }}
</a>
@elseif($row['invoice_no'])
{{ $row['invoice_no'] }}
@else
-
@endif
</td>
<td class="d-print-none text-start">{{ $row['platform'] }}</td>
<td class="d-print-none text-start">
@if(in_array($row['platform'], ['Opening Collection', 'Opening Payment']))
{{ $row['platform'] }}: {{ currency_format($row['amount'] ?? 0) }}
@else
{{ $row['platform'] }}
@endif
</td>
<td class="text-start">{{ currency_format($row['credit_amount']) }}</td>

View File

@@ -31,7 +31,7 @@
</div>
<div class="gpt-up-down-arrow position-relative d-print-none custom-date-filter">
<select name="duration" class="form-control custom-days">
<option value="">{{ __('All') }}</option>
<option value="">{{ __('All Time') }}</option>
<option value="today"> {{ __('Today') }}</option>
<option value="yesterday"> {{ __('Yesterday') }}</option>
<option value="last_seven_days"> {{ __('Last 7 Days') }}</option>
@@ -64,17 +64,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.single-customer-ledger.csv', $party->id) }}">
<a class="export-btn" href="{{ route('business.single-customer-ledger.csv', $party->id) }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.single-customer-ledger.excel', $party->id) }}">
<a class="export-btn" href="{{ route('business.single-customer-ledger.excel', $party->id) }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.single-customer-ledger.pdf', $party->id) }}">
<a class="export-btn" target="_blank" href="{{ route('business.single-customer-ledger.pdf', $party->id) }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -5,6 +5,19 @@
@include('business::print.header')
<p style="text-align: center; margin: 0; padding: 0; margin-bottom:5px; font-size: 16px;">
{{ $party->name }} ({{ __('Ledger')}})
@if ($fromDate && $toDate)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($fromDate)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($fromDate)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($fromDate)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($toDate)->format('d-m-Y') }}
@endif
</p>
@endif
</p>
@endsection
@@ -47,7 +60,11 @@
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $row['platform'] }}
@if(in_array($row['platform'], ['Opening Collection', 'Opening Payment']))
{{ $row['platform'] }}: {{ currency_format($row['amount'] ?? 0, currency: business_currency()) }}
@else
{{ $row['platform'] }}
@endif
</td>
<td style="border:1px solid gainsboro; text-align:center;">

View File

@@ -48,12 +48,12 @@
<tr>
<td class="text-start fw-bold">{{__('Total')}}</td>
<td></td>
<td class="text-start fw-bold">{{ currency_format($parties->sum(fn($party) => $party->sales?->sum('totalAmount') ?? 0), currency: business_currency()) }}</td>
<td class="text-start fw-bold">{{ currency_format($totalSaleAmount, currency: business_currency()) }}</td>
<td class="text-start fw-bold">
{{ currency_format($parties->sum(fn($party) => $party->sales?->where('lossProfit', '>', 0)->sum('lossProfit') ?? 0), currency: business_currency()) }}
{{ currency_format($totalProfit, currency: business_currency()) }}
</td>
<td class="text-start fw-bold text-danger">
{{ currency_format(abs($parties->sum(fn($party) => $party->sales?->where('lossProfit', '<', 0)->sum('lossProfit') ?? 0)), currency: business_currency()) }}
{{ currency_format(abs($totalLoss), currency: business_currency()) }}
</td>
<td></td>
</tr>

View File

@@ -18,19 +18,19 @@
<div class="col-lg-2 col-md-6">
<div class="sales-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Sales Amount') }}</p>
<p class="stat-value">{{ currency_format($totalAmount, currency: business_currency()) }}</p>
<p class="stat-value" id="totalSaleAmount">{{ currency_format($totalSaleAmount, currency: business_currency()) }}</p>
</div>
</div>
<div class="col-lg-2 col-md-6">
<div class="profit-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Profit') }}</p>
<p class="stat-value">{{ currency_format($totalProfit, currency: business_currency()) }}</p>
<p class="stat-value" id="totalProfit">{{ currency_format($totalProfit, currency: business_currency()) }}</p>
</div>
</div>
<div class="col-lg-2 col-md-12 ">
<div class="loss-card p-3 m-2 text-white">
<p class="stat-title">{{ __('Loss') }}</p>
<p class="stat-value">{{ currency_format(abs($totalLoss), currency: business_currency()) }}</p>
<p class="stat-value" id="totalLoss">{{ currency_format($totalLoss, currency: business_currency()) }}</p>
</div>
</div>
</div>
@@ -70,17 +70,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.party-loss-profit.csv') }}">
<a class="export-btn" href="{{ route('business.party-loss-profit.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.party-loss-profit.excel') }}">
<a class="export-btn" href="{{ route('business.party-loss-profit.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.party-loss-profit.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.party-loss-profit.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,6 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Party Loss Profit Report') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
</div>
@endsection

View File

@@ -16,7 +16,7 @@
@foreach ($suppliers as $supplier)
<tr>
<td class="d-print-none">{{ $suppliers->firstItem() + $loop->index }}</td>
<td class="d-print-none text-start">
<td class=" text-start">
<a href="{{ route('business.supplier-ledger.show', $supplier->id) }}" class="stock-view-data text-primary">
{{ $supplier->name }}
</a>

View File

@@ -46,17 +46,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.supplier-ledger.csv') }}">
<a class="export-btn" href="{{ route('business.supplier-ledger.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.supplier-ledger.excel') }}">
<a class="export-btn" href="{{ route('business.supplier-ledger.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.supplier-ledger.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.supplier-ledger.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,6 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Supplier Ledger List') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
</div>
@endsection

View File

@@ -25,12 +25,41 @@
<td class="text-start">{{ $index + 1 }}</td>
<td class="text-start">{{ formatted_date($row['date']) }}</td>
@php
$invoice_no = $row['invoice_no'] ?? null;
$invoice_route = null;
if ($invoice_no) {
if ($row['platform'] === 'Purchase') {
$businessId = $row['business_id'] ?? null;
$tax_invoice = moduleCheck('TaxInvoiceAddon') && invoice_setting($businessId) == 'standard_a4';
$invoice_route = $tax_invoice
? route('business.purchases.tax.invoice', $row['id'])
: route('business.purchases.invoice', $row['id']);
} else {
$invoice_route = route('business.collect.dues.invoice', $row['id'] ?? '');
}
}
@endphp
<td class="text-start">
<a target="_blank" href="{{ $row['platform'] === 'Purchase' ? route('business.purchases.invoice', $row['id'] ?? '') : route('business.collect.dues.invoice', $row['id'] ?? '') }}" class="stock-view-data text-primary">
{{ $row['invoice_no'] ?? '-' }} - {{ $row['id'] }}
</a>
@if($invoice_route)
<a target="_blank" href="{{ $invoice_route }}" class="stock-view-data text-primary">
{{ $invoice_no }}
</a>
@else
{{ $invoice_no ?? '-' }}
@endif
</td>
<td class="text-start">
@if(in_array($row['platform'], ['Opening Collection', 'Opening Payment']))
{{ $row['platform'] }}: {{ currency_format($row['amount'] ?? 0, currency: business_currency()) }}
@else
{{ $row['platform'] }}
@endif
</td>
<td class="d-print-none text-start">{{ $row['platform'] }}</td>
<td class="text-start">{{ currency_format($row['credit_amount'], currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format($row['debit_amount'], currency: business_currency()) }}</td>
<td class="text-start">{{ currency_format($row['balance'], currency: business_currency()) }}</td>

View File

@@ -24,9 +24,21 @@
<td class="text-start">{{ $index + 1 }}</td>
<td class="text-start">{{ formatted_date($row['date']) }}</td>
<td class="text-start">
{{ $row['invoice_no'] ?? '-' }} - {{ $row['id'] }}
@if($row['invoice_no'] && $row['platform'] === 'Purchase')
{{ $row['invoice_no'] }} - {{ $row['id'] }}
@elseif($row['invoice_no'])
{{ $row['invoice_no'] }}
@else
-
@endif
</td>
<td class="d-print-none text-start">
@if(in_array($row['platform'], ['Opening Collection', 'Opening Payment']))
{{ $row['platform'] }}: {{ currency_format($row['amount'] ?? 0) }}
@else
{{ $row['platform'] }}
@endif
</td>
<td class="d-print-none text-start">{{ $row['platform'] }}</td>
<td class="text-start">{{ currency_format($row['credit_amount']) }}</td>
<td class="text-start">{{ currency_format($row['debit_amount']) }}</td>
<td class="text-start">{{ currency_format($row['balance']) }}</td>

View File

@@ -31,7 +31,7 @@
</div>
<div class="gpt-up-down-arrow position-relative d-print-none custom-date-filter">
<select name="duration" class="form-control custom-days">
<option value="">{{ __('All') }}</option>
<option value="">{{ __('All Time') }}</option>
<option value="today"> {{ __('Today') }}</option>
<option value="yesterday"> {{ __('Yesterday') }}</option>
<option value="last_seven_days"> {{ __('Last 7 Days') }}</option>
@@ -64,17 +64,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.single-supplier-ledger.csv', $party->id) }}">
<a class="export-btn" href="{{ route('business.single-supplier-ledger.csv', $party->id) }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.single-supplier-ledger.excel', $party->id) }}">
<a class="export-btn" href="{{ route('business.single-supplier-ledger.excel', $party->id) }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.single-supplier-ledger.pdf', $party->id) }}">
<a class="export-btn" target="_blank" href="{{ route('business.single-supplier-ledger.pdf', $party->id) }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -5,6 +5,19 @@
@include('business::print.header')
<p style="text-align: center; margin: 0; padding: 0; margin-bottom:5px; font-size: 16px;">
{{ $party->name }} ({{ __('Ledger')}})
@if ($fromDate && $toDate)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($fromDate)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($fromDate)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($fromDate)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($toDate)->format('d-m-Y') }}
@endif
</p>
@endif
</p>
@endsection
@@ -41,10 +54,18 @@
{{ formatted_date($row['date']) }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $row['invoice_no'] ?? '-' }} - {{ $row['id'] }}
@if($row['invoice_no'])
{{ $row['invoice_no'] }} - {{ $row['id'] }}
@else
-
@endif
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $row['platform'] }}
@if(in_array($row['platform'], ['Opening Collection', 'Opening Payment']))
{{ $row['platform'] }}: {{ currency_format($row['amount'] ?? 0, currency: business_currency()) }}
@else
{{ $row['platform'] }}
@endif
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ currency_format($row['credit_amount'], currency: business_currency()) }}

View File

@@ -19,7 +19,7 @@
</div>
<div class="table-top-form p-16">
<form action="{{ route('business.top-customers.index') }}" method="GET" class="filter-form" table="#top-customers-data">
<form action="{{ route('business.top-customers.index') }}" method="GET" class="report-filter-form" table="#top-customers-data">
<div class="table-top-left d-flex gap-3 ">
<div class="table-search position-relative d-print-none">
@@ -46,17 +46,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.top-customers.csv') }}">
<a class="export-btn" href="{{ route('business.top-customers.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.top-customers.excel') }}">
<a class="export-btn" href="{{ route('business.top-customers.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.top-customers.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.top-customers.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,6 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Top 5 Customer Report List') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
</div>
@endsection

View File

@@ -37,17 +37,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.top-suppliers.csv') }}">
<a class="export-btn" href="{{ route('business.top-suppliers.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.top-suppliers.excel') }}">
<a class="export-btn" href="{{ route('business.top-suppliers.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.top-suppliers.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.top-suppliers.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,6 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Top 5 Supplier Report List') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
</div>
@endsection

View File

@@ -1,4 +1,27 @@
<style>
:root {
--clr-primary: var(--dynamic-primary, #c52127);
--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;
}
/* Load Bangla font from storage/fonts */
@font-face {
font-family: 'NotoSans';
@@ -415,7 +438,7 @@
font-size: 20px;
/* font-weight: 600; */
color: white;
background-color: #c52127;
background-color: var(--clr-primary);
padding: 5px 12px;
border-radius: 30px;
margin: 0;

View File

@@ -19,6 +19,7 @@
<th>{{ __('SL.') }}</th>
<th>{{ __('Date') }}</th>
<th>{{ __('Invoice') }}</th>
<th>{{ __('Supplier') }}</th>
<th>{{ __('Type') }}</th>
<th>{{ __('Cost Price') }}</th>
<th>{{ __('Purchase Qty') }}</th>
@@ -31,6 +32,7 @@
<td>{{ formatted_date($purchaseDetail->purchase?->purchaseDate) }}, {{ formatted_time($purchaseDetail->purchase?->purchaseDate)}}
</td>
<td>{{ $purchaseDetail->purchase?->invoiceNumber }}</td>
<td>{{ $purchaseDetail->purchase?->party?->name }}</td>
<td>{{ __('Purchase') }}</td>
<td>{{ currency_format($purchaseDetail->productPurchasePrice, currency: business_currency()) }}
</td>
@@ -44,6 +46,7 @@
<td></td>
<td></td>
<td></td>
<td></td>
<td>{{ currency_format($purchaseDetails->sum('productPurchasePrice'), currency: business_currency()) }}</td>
<td>{{ $purchaseDetails->sum('quantities') }} </td>
</tr>

View File

@@ -78,17 +78,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.product-purchase-detail-reports.csv', $product->id) }}">
<a class="export-btn" href="{{ route('business.product-purchase-detail-reports.csv', $product->id) }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.product-purchase-detail-reports.excel', $product->id) }}">
<a class="export-btn" href="{{ route('business.product-purchase-detail-reports.excel', $product->id) }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.product-purchase-detail-reports.pdf', $product->id) }}">
<a class="export-btn" target="_blank" href="{{ route('business.product-purchase-detail-reports.pdf', $product->id) }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,6 +4,7 @@
<th>{{ __('SL.') }}</th>
<th>{{ __('Date') }}</th>
<th>{{ __('Invoice') }}</th>
<th>{{ __('Supplier') }}</th>
<th>{{ __('Type') }}</th>
<th>{{ __('Cost Price') }}</th>
<th>{{ __('Purchase Qty') }}</th>
@@ -16,6 +17,7 @@
<td>{{ formatted_date($purchaseDetail->purchase?->purchaseDate) }}, {{ formatted_time($purchaseDetail->purchase?->purchaseDate)}}
</td>
<td>{{ $purchaseDetail->purchase?->invoiceNumber }}</td>
<td>{{ $purchaseDetail->purchase?->party?->name }}</td>
<td>{{ __('Purchase') }}</td>
<td>{{ currency_format($purchaseDetail->productPurchasePrice, currency: business_currency()) }}
</td>
@@ -29,6 +31,7 @@
<td></td>
<td></td>
<td></td>
<td></td>
<td>{{ currency_format($purchaseDetails->sum('productPurchasePrice'), currency: business_currency()) }}</td>
<td>{{ $purchaseDetails->sum('quantities') }} </td>
</tr>

View File

@@ -78,17 +78,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.product-purchase-history-reports.csv') }}">
<a class="export-btn" href="{{ route('business.product-purchase-history-reports.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.product-purchase-history-reports.excel') }}">
<a class="export-btn" href="{{ route('business.product-purchase-history-reports.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.product-purchase-history-reports.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.product-purchase-history-reports.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ $product->productName }} {{ __('Purchase Details') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection
@@ -16,6 +28,7 @@
<tr style="background-color: #C52127; color: white;">
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Date') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Invoice') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Supplier') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Type') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Cost Price') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Purchase Qty') }}</th>
@@ -30,6 +43,9 @@
<td style="border:1px solid gainsboro; text-align:center;">
{{ $purchaseDetail->purchase?->invoiceNumber }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $purchaseDetail->purchase?->party?->name }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ __('Purchase') }}
</td>
@@ -50,6 +66,7 @@
</td>
<td style="border:1px solid gainsboro; text-align:center;"></td>
<td style="border:1px solid gainsboro; text-align:center;"></td>
<td style="border:1px solid gainsboro; text-align:center;"></td>
<td style="border:1px solid gainsboro; text-align:center; color: white; font-weight: 600;">
{{ currency_format($purchaseDetails->sum('productPurchasePrice'), currency: business_currency()) }}
</td>

View File

@@ -4,7 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Product Purchase History Report') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection

View File

@@ -78,17 +78,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.product-sale-detail-reports.csv', $product->id) }}">
<a class="export-btn" href="{{ route('business.product-sale-detail-reports.csv', $product->id) }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.product-sale-detail-reports.excel', $product->id) }}">
<a class="export-btn" href="{{ route('business.product-sale-detail-reports.excel', $product->id) }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.product-sale-detail-reports.pdf', $product->id) }}">
<a class="export-btn" target="_blank" href="{{ route('business.product-sale-detail-reports.pdf', $product->id) }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -78,17 +78,17 @@
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.product-sale-history-reports.csv') }}">
<a class="export-btn" href="{{ route('business.product-sale-history-reports.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.product-sale-history-reports.excel') }}">
<a class="export-btn" href="{{ route('business.product-sale-history-reports.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.product-sale-history-reports.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.product-sale-history-reports.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -4,7 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ $product->productName }} {{ __('Sale Details') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection

View File

@@ -4,7 +4,19 @@
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Product Sale History Report') }}</h4>
{{-- <p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration: 14-12-2025 to 24-12-2025') }}</p> --}}
@if ($filter_from_date && $filter_to_date)
<p style="text-align: center; margin: 0; padding: 0; font-weight: 400; font-size: 14px;" class="">{{ __('Duration:') }}
@if ($duration === 'today')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@elseif ($duration === 'yesterday')
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
@else
{{ Carbon\Carbon::parse($filter_from_date)->format('d-m-Y') }}
{{ __('to') }}
{{ Carbon\Carbon::parse($filter_to_date)->format('d-m-Y') }}
@endif
</p>
@endif
</div>
@endsection

View File

@@ -14,6 +14,7 @@
<th class="d-print-none">{{ __('Image') }}</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Code') }}</th>
<th>{{ __('HSN Code') }}</th>
<th>{{ __('Product') }}</th>
<th>{{ __('Category') }}</th>
<th>{{ __('Unit') }}</th>
@@ -51,6 +52,7 @@
</td>
<td>{{ $product->productCode }}</td>
<td>{{ $product->hsn_code }}</td>
<td>{{ $product->total_combo_products }}</td>
<td>{{ $product->category->categoryName ?? '' }}</td>
<td>{{ $product->unit->unitName ?? '' }}</td>

View File

@@ -4,6 +4,7 @@
<th>{{ __('SL') }}. </th>
<th> {{ __('Name') }} </th>
<th> {{ __('Code') }} </th>
<th> {{ __('HSN Code') }}</th>
<th> {{ __('Product') }} </th>
<th> {{ __('Category') }} </th>
<th> {{ __('Unit') }} </th>
@@ -19,6 +20,7 @@
<td>{{ $loop->index + 1 }}</td>
<td>{{ $product->productName }}</td>
<td>{{ $product->productCode }}</td>
<td>{{ $product->hsn_code }}</td>
<td>{{ $product->total_combo_products }}</td>
<td>{{ $product->category->categoryName ?? '' }}</td>
<td>{{ $product->unit->unitName ?? '' }}</td>

View File

@@ -52,17 +52,17 @@ class="btn btn-primary"><i class="fas fa-plus-circle me-1"></i>{{ __('Add new Pr
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.combo-products.csv') }}">
<a class="export-btn" href="{{ route('business.combo-products.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.combo-products.excel') }}">
<a class="export-btn" href="{{ route('business.combo-products.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.combo-product-reports.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.combo-products.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -0,0 +1,49 @@
@extends('layouts.business.pdf.pdf_layout')
@section('pdf_title')
<div class="table-header justify-content-center border-0 d-none d-block d-print-block text-center">
@include('business::print.header')
<h4 style="text-align: center; margin: 0; padding: 0; font-size: 16px;" class="">{{ __('Combo Product List') }}</h4>
</div>
@endsection
@section('pdf_content')
<table width="100%" cellpadding="6" cellspacing="0"
style="border-collapse: collapse; border: 1px solid gainsboro; font-size:12px;"
id="datatable">
<thead>
<tr style="background-color: #C52127; color: white;">
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Name') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Code') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Product') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Stock') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Cost Price') }}</th>
<th style="font-size:12px; border:1px solid gainsboro; color: white" class="text-start">{{ __('Product Price') }}</th>
</tr>
</thead>
<tbody>
@foreach ($combo_products as $product)
<tr style="background-color: {{ $loop->even ? '#F5F5F5' : '#FFFFFF' }};">
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->productName }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->productCode }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->total_combo_products }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ $product->total_stock }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ currency_format($product->total_cost, currency: business_currency()) }}
</td>
<td style="border:1px solid gainsboro; text-align:center;">
{{ currency_format($product->productSalePrice, currency: business_currency()) }}
</td>
</tr>
@endforeach
</tbody>
</table>
@endsection

View File

@@ -10,10 +10,10 @@
<th>{{ __('Batch No') }}.</th>
@endif
@if (is_module_enabled($modules, 'show_warehouse') && moduleCheck('WarehouseAddon'))
<th>{{ __('Warehouse') }}.</th>
<th>{{ __('Warehouse') }}</th>
@endif
@if (moduleCheck('SerialCodeAddon'))
<th id="serial-header" @class(['serial-option', 'd-none' => !is_module_enabled($modules, 'show_serial')])>Serial</th>
<th id="serial-header" @class(['serial-option', 'd-none' => !is_module_enabled($modules, 'show_serial')])>{{__('Serial')}}</th>
@endif
@if (is_module_enabled($modules, 'show_product_stock'))
<th>{{ __('Qty') }}</th>
@@ -74,12 +74,12 @@
<td @class(['serial-cell serial-option', 'd-none' => !is_module_enabled($modules, 'show_serial')])>
<button type="button" class="serial-cell-button" 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="#C52127" stroke-width="2" stroke-linecap="round"/>
<path d="M23 7H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M23 14H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M23 21H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4 14H18" stroke="#C52127" stroke-width="2" stroke-linecap="round"/>
<path d="M4 21H18" stroke="#C52127" stroke-width="2" stroke-linecap="round"/>
<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>
@@ -114,10 +114,10 @@
</td>
@endif
@if (is_module_enabled($modules, 'show_product_wholesale_price'))
<td><input type="number" step="any" min="0" name="stocks[first-row][productWholeSalePrice]" class="form-control form-control-sm custom-table-input" placeholder="Ex: 200"></td>
<td><input type="number" step="any" min="0" name="stocks[first-row][productWholeSalePrice]" class="form-control form-control-sm custom-table-input productWholeSalePrice" placeholder="Ex: 200"></td>
@endif
@if (is_module_enabled($modules, 'show_product_dealer_price'))
<td><input type="number" step="any" min="0" name="stocks[first-row][productDealerPrice]" class="form-control form-control-sm custom-table-input" placeholder="Ex: 200"></td>
<td><input type="number" step="any" min="0" name="stocks[first-row][productDealerPrice]" class="form-control form-control-sm custom-table-input productDealerPrice" placeholder="Ex: 200"></td>
@endif
@if (is_module_enabled($modules, 'show_mfg_date'))
@@ -136,21 +136,6 @@
@endif
@endif
{{-- <td>
<div class="products-image-upload-container" id="productsImageUploadContainer1">
<label class="products-add-box" for="productsImageInput1">
<span>+ Image</span>
</label>
<input
type="file"
class="products-file-input"
id="productsImageInput1"
multiple
accept="image/*"
/>
</div>
</td> --}}
@if (is_module_enabled($modules, 'show_action'))
<td>
<a href="#" class="text-danger remove-row">
@@ -197,10 +182,10 @@ class="products-file-input"
<th>{{ __('Batch No') }}.</th>
@endif
@if (is_module_enabled($modules, 'show_warehouse') && moduleCheck('WarehouseAddon'))
<th>{{ __('Warehouse') }}.</th>
<th>{{ __('Warehouse') }}</th>
@endif
@if (moduleCheck('SerialCodeAddon'))
<th id="serial-header" @class(['serial-option', 'd-none' => !is_module_enabled($modules, 'show_serial')])>Serial</th>
<th id="serial-header" @class(['serial-option', 'd-none' => !is_module_enabled($modules, 'show_serial')])>{{__('Serial')}}</th>
@endif
@if (is_module_enabled($modules, 'show_product_stock'))
<th>{{ __('Qty') }}</th>
@@ -270,7 +255,7 @@ class="products-file-input"
</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">

View File

@@ -11,8 +11,8 @@
@if (is_module_enabled($modules, 'show_warehouse') && moduleCheck('WarehouseAddon'))
<th>{{ __('Warehouse') }}.</th>
@endif
@if (moduleCheck('SerialCodeAddon'))
<th id="serial-header" @class(['serial-option', 'd-none' => $product->has_serial != 1])>Serial</th>
@if (moduleCheck('SerialCodeAddon') && is_module_enabled($modules, 'show_serial'))
<th id="serial-header" @class(['serial-option', 'd-none' => $product->has_serial != 1])>{{__('Serial')}}</th>
@endif
@if (is_module_enabled($modules, 'show_product_stock'))
<th>{{ __('Qty') }}</th>
@@ -71,31 +71,29 @@
</td>
@endif
@if (moduleCheck('SerialCodeAddon') && is_module_enabled($modules, 'show_serial'))
<td @class(['serial-cell serial-option', 'd-none' => $product->has_serial != 1])>
<button type="button" class="serial-cell-button" 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="#C52127" stroke-width="2" stroke-linecap="round"/>
<path d="M23 7H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M23 14H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M23 21H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4 14H18" stroke="#C52127" stroke-width="2" stroke-linecap="round"/>
<path d="M4 21H18" stroke="#C52127" stroke-width="2" stroke-linecap="round"/>
<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>
@endif
@if (is_module_enabled($modules, 'show_product_stock'))
<td><input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productStock]" class="form-control form-control-sm custom-table-input productStock" placeholder="{{__('3')}}" value="{{ $stock->productStock }}" @readonly(is_module_enabled($modules, 'show_serial'))></td>
<td><input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productStock]" class="form-control form-control-sm custom-table-input productStock" placeholder="{{ __('3') }}" value="{{ $stock->productStock }}" @readonly($product->has_serial)></td>
@endif
@usercan('products.price')
@if (is_module_enabled($modules, 'show_exclusive_price'))
@php
$exclusive_price = $product->vat_type == 'exclusive' ? $stock->productPurchasePrice : $stock->productPurchasePrice - (($stock->productPurchasePrice * ($product->vat->rate ?? 0)) / (100 + ($product->vat->rate ?? 0)));
@endphp
<td>
<input type="number" step="any" min="0" class="form-control form-control-sm custom-table-input exclusive_price" name="stocks[{{ $stock->id }}][exclusive_price]" placeholder="{{__('Ex: 50')}}" value="{{ $exclusive_price }}">
<input type="number" step="any" min="0" class="form-control form-control-sm custom-table-input exclusive_price" name="stocks[{{ $stock->id }}][exclusive_price]" placeholder="{{__('Ex: 50')}}" value="{{ $stock->exclusive_price }}">
</td>
@endif
@@ -118,12 +116,12 @@
@endif
@if (is_module_enabled($modules, 'show_product_wholesale_price'))
<td>
<input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productWholeSalePrice]" class="form-control form-control-sm custom-table-input" placeholder="{{__('Ex: 200')}}" value="{{ $stock->productWholeSalePrice }}">
<input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productWholeSalePrice]" class="form-control form-control-sm custom-table-input productWholeSalePrice" placeholder="{{__('Ex: 200')}}" value="{{ $stock->productWholeSalePrice }}">
</td>
@endif
@if (is_module_enabled($modules, 'show_product_dealer_price'))
<td>
<input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productDealerPrice]" class="form-control form-control-sm custom-table-input" placeholder="{{__('Ex: 200')}}" value="{{ $stock->productDealerPrice }}">
<input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productDealerPrice]" class="form-control form-control-sm custom-table-input productDealerPrice" placeholder="{{__('Ex: 200')}}" value="{{ $stock->productDealerPrice }}">
</td>
@endif
@@ -200,7 +198,7 @@
@if (is_module_enabled($modules, 'show_warehouse') && moduleCheck('WarehouseAddon'))
<th>{{ __('Warehouse') }}.</th>
@endif
@if (moduleCheck('SerialCodeAddon'))
@if (moduleCheck('SerialCodeAddon') && is_module_enabled($modules, 'show_serial'))
<th id="serial-header" @class(['serial-option', 'd-none' => $product->has_serial != 1])>{{__('Serial')}}</th>
@endif
@if (is_module_enabled($modules, 'show_product_stock'))
@@ -244,7 +242,7 @@
<tr data-row-id="{{ $stock->id }}">
@if($setPrevVariantName != $stock->variant_name)
<td class="add-row-icon">+</td>
@else
@else
<td></td>
@endif
<td class="variant-name">
@@ -275,25 +273,25 @@
</td>
@endif
@if (moduleCheck('SerialCodeAddon'))
@if (moduleCheck('SerialCodeAddon') && is_module_enabled($modules, 'show_serial'))
<td @class(['serial-cell serial-option', 'd-none' => $product->has_serial != 1])>
<button type="button" class="serial-cell-button" 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="#C52127" stroke-width="2" stroke-linecap="round"/>
<path d="M23 7H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M23 14H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M23 21H23.0105" stroke="#C52127" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4 14H18" stroke="#C52127" stroke-width="2" stroke-linecap="round"/>
<path d="M4 21H18" stroke="#C52127" stroke-width="2" stroke-linecap="round"/>
<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>
@endif
@if (is_module_enabled($modules, 'show_product_stock'))
<td><input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productStock]" class="form-control form-control-sm custom-table-input productStock" placeholder="{{__('0')}}" value="{{ $stock->productStock }}" @readonly(is_module_enabled($modules, 'show_serial'))></td>
<td><input type="number" step="any" min="0" name="stocks[{{ $stock->id }}][productStock]" class="form-control form-control-sm custom-table-input productStock" placeholder="{{__('0')}}" value="{{ $stock->productStock }}" @readonly($product->has_serial)></td>
@endif
@usercan('products.price')
@php
$exclusive_price = $product->vat_type == 'exclusive' ? $stock->productPurchasePrice : $stock->productPurchasePrice - (($stock->productPurchasePrice * ($product->vat->rate ?? 0)) / (100 + ($product->vat->rate ?? 0)));
@@ -491,4 +489,4 @@
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
<input type="hidden" id="previous-stocks" value='@json($product->stocks)'>
<input type="hidden" id="vatRate" value="{{ $product->vat?->rate ?? 0 }}">
<input type="hidden" id="editPage" value="1">
<input type="hidden" id="editPage" value="1">

View File

@@ -183,5 +183,5 @@ class="theme-btn border-btn m-2">{{ __('Cancel') }}</a>
@push('js')
<script src="{{ asset('assets/js/custom/product.js') }}"></script>
<script src="{{ asset('assets/js/custom/product.js') }}?v={{ time() }}"></script>
@endpush

View File

@@ -6,9 +6,9 @@
@php
$modules = product_setting()->modules ?? [];
$showSingle = !isset($modules['show_product_type_single']) || $modules['show_product_type_single'];
$showSingle = !isset($modules['show_product_type_single']) || $modules['show_product_type_single'];
$showVariant = isset($modules['show_product_type_variant']) && $modules['show_product_type_variant'];
$showCombo = isset($modules['show_product_type_combo']) && $modules['show_product_type_combo'];
$showCombo = isset($modules['show_product_type_combo']) && $modules['show_product_type_combo'];
$defaultPermissions = [
'show_product_category' => 1,
@@ -17,225 +17,209 @@
'show_inclusive_price' => 1,
'show_profit_percent' => 1,
'show_product_sale_price' => 1,
'show_product_wholesale_price' => 1,
'show_product_dealer_price' => 1,
'show_action' => 1,
];
@endphp
@section('main_content')
<div class="erp-table-section">
<div class="container-fluid">
<form action="{{ route('business.products.store') }}" method="POST" class="ajaxform_instant_reload product-form"
enctype="multipart/form-data">
@csrf
<div class="row g-2">
<div class="col-lg-12">
<div class="card product-card border-0 ">
<div class="card-bodys ">
<div class="table-header p-16">
<h4>{{ __('Add new Product') }}</h4>
<div class="d-flex align-items-center gap-3">
<a class="save-publish-btn" href="{{ route('business.bulk-uploads.index') }}">
{{__('Bulk Upload')}}
</a>
<div class="erp-table-section">
<div class="container-fluid">
<form action="{{ route('business.products.store') }}" method="POST" class="ajaxform_instant_reload product-form" enctype="multipart/form-data">
@csrf
<div class="row g-2">
<div class="col-lg-12">
<div class="card product-card border-0 ">
<div class="card-bodys ">
<div class="table-header p-16">
<h4>{{ __('Add new Product') }}</h4>
@usercan('products.create')
<button class="save-publish-btn submit-btn" href="">
{{__('Save & Published')}}
</button>
@endusercan
<div class="position-relative">
<a href={{ route('business.manage-settings.index') }}#product
class="product-settings">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M16.3083 4.38394C15.7173 4.38394 15.4217 4.38394 15.1525 4.28405C15.1151 4.27017 15.0783 4.25491 15.042 4.23828C14.781 4.11855 14.5721 3.90959 14.1541 3.49167C13.1922 2.52977 12.7113 2.04882 12.1195 2.00447C12.04 1.99851 11.96 1.99851 11.8805 2.00447C11.2887 2.04882 10.8077 2.52977 9.84585 3.49166C9.42793 3.90959 9.21897 4.11855 8.95797 4.23828C8.92172 4.25491 8.88486 4.27017 8.84747 4.28405C8.57825 4.38394 8.28273 4.38394 7.69171 4.38394H7.58269C6.07478 4.38394 5.32083 4.38394 4.85239 4.85239C4.38394 5.32083 4.38394 6.07478 4.38394 7.58269V7.69171C4.38394 8.28273 4.38394 8.57825 4.28405 8.84747C4.27017 8.88486 4.25491 8.92172 4.23828 8.95797C4.11855 9.21897 3.90959 9.42793 3.49166 9.84585C2.52977 10.8077 2.04882 11.2887 2.00447 11.8805C1.99851 11.96 1.99851 12.04 2.00447 12.1195C2.04882 12.7113 2.52977 13.1922 3.49166 14.1541C3.90959 14.5721 4.11855 14.781 4.23828 15.042C4.25491 15.0783 4.27017 15.1151 4.28405 15.1525C4.38394 15.4217 4.38394 15.7173 4.38394 16.3083V16.4173C4.38394 17.9252 4.38394 18.6792 4.85239 19.1476C5.32083 19.6161 6.07478 19.6161 7.58269 19.6161H7.69171C8.28273 19.6161 8.57825 19.6161 8.84747 19.716C8.88486 19.7298 8.92172 19.7451 8.95797 19.7617C9.21897 19.8815 9.42793 20.0904 9.84585 20.5083C10.8077 21.4702 11.2887 21.9512 11.8805 21.9955C11.96 22.0015 12.0399 22.0015 12.1195 21.9955C12.7113 21.9512 13.1922 21.4702 14.1541 20.5083C14.5721 20.0904 14.781 19.8815 15.042 19.7617C15.0783 19.7451 15.1151 19.7298 15.1525 19.716C15.4217 19.6161 15.7173 19.6161 16.3083 19.6161H16.4173C17.9252 19.6161 18.6792 19.6161 19.1476 19.1476C19.6161 18.6792 19.6161 17.9252 19.6161 16.4173V16.3083C19.6161 15.7173 19.6161 15.4217 19.716 15.1525C19.7298 15.1151 19.7451 15.0783 19.7617 15.042C19.8815 14.781 20.0904 14.5721 20.5083 14.1541C21.4702 13.1922 21.9512 12.7113 21.9955 12.1195C22.0015 12.0399 22.0015 11.96 21.9955 11.8805C21.9512 11.2887 21.4702 10.8077 20.5083 9.84585C20.0904 9.42793 19.8815 9.21897 19.7617 8.95797C19.7451 8.92172 19.7298 8.88486 19.716 8.84747C19.6161 8.57825 19.6161 8.28273 19.6161 7.69171V7.58269C19.6161 6.07478 19.6161 5.32083 19.1476 4.85239C18.6792 4.38394 17.9252 4.38394 16.4173 4.38394H16.3083Z"
stroke="#4B5563" stroke-width="1.5" />
<path
d="M15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12Z"
stroke="#4B5563" stroke-width="1.5" />
</svg>
<div class="d-flex align-items-center gap-3">
<a class="save-publish-btn" href="{{ route('business.bulk-uploads.index') }}">
{{__('Bulk Upload')}}
</a>
@usercan('products.create')
<button class="save-publish-btn submit-btn" href="">
{{__('Save & Published')}}
</button>
@endusercan
<div class="position-relative">
<a href={{ route('business.manage-settings.index') }}#product class="product-settings">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.3083 4.38394C15.7173 4.38394 15.4217 4.38394 15.1525 4.28405C15.1151 4.27017 15.0783 4.25491 15.042 4.23828C14.781 4.11855 14.5721 3.90959 14.1541 3.49167C13.1922 2.52977 12.7113 2.04882 12.1195 2.00447C12.04 1.99851 11.96 1.99851 11.8805 2.00447C11.2887 2.04882 10.8077 2.52977 9.84585 3.49166C9.42793 3.90959 9.21897 4.11855 8.95797 4.23828C8.92172 4.25491 8.88486 4.27017 8.84747 4.28405C8.57825 4.38394 8.28273 4.38394 7.69171 4.38394H7.58269C6.07478 4.38394 5.32083 4.38394 4.85239 4.85239C4.38394 5.32083 4.38394 6.07478 4.38394 7.58269V7.69171C4.38394 8.28273 4.38394 8.57825 4.28405 8.84747C4.27017 8.88486 4.25491 8.92172 4.23828 8.95797C4.11855 9.21897 3.90959 9.42793 3.49166 9.84585C2.52977 10.8077 2.04882 11.2887 2.00447 11.8805C1.99851 11.96 1.99851 12.04 2.00447 12.1195C2.04882 12.7113 2.52977 13.1922 3.49166 14.1541C3.90959 14.5721 4.11855 14.781 4.23828 15.042C4.25491 15.0783 4.27017 15.1151 4.28405 15.1525C4.38394 15.4217 4.38394 15.7173 4.38394 16.3083V16.4173C4.38394 17.9252 4.38394 18.6792 4.85239 19.1476C5.32083 19.6161 6.07478 19.6161 7.58269 19.6161H7.69171C8.28273 19.6161 8.57825 19.6161 8.84747 19.716C8.88486 19.7298 8.92172 19.7451 8.95797 19.7617C9.21897 19.8815 9.42793 20.0904 9.84585 20.5083C10.8077 21.4702 11.2887 21.9512 11.8805 21.9955C11.96 22.0015 12.0399 22.0015 12.1195 21.9955C12.7113 21.9512 13.1922 21.4702 14.1541 20.5083C14.5721 20.0904 14.781 19.8815 15.042 19.7617C15.0783 19.7451 15.1151 19.7298 15.1525 19.716C15.4217 19.6161 15.7173 19.6161 16.3083 19.6161H16.4173C17.9252 19.6161 18.6792 19.6161 19.1476 19.1476C19.6161 18.6792 19.6161 17.9252 19.6161 16.4173V16.3083C19.6161 15.7173 19.6161 15.4217 19.716 15.1525C19.7298 15.1151 19.7451 15.0783 19.7617 15.042C19.8815 14.781 20.0904 14.5721 20.5083 14.1541C21.4702 13.1922 21.9512 12.7113 21.9955 12.1195C22.0015 12.0399 22.0015 11.96 21.9955 11.8805C21.9512 11.2887 21.4702 10.8077 20.5083 9.84585C20.0904 9.42793 19.8815 9.21897 19.7617 8.95797C19.7451 8.92172 19.7298 8.88486 19.716 8.84747C19.6161 8.57825 19.6161 8.28273 19.6161 7.69171V7.58269C19.6161 6.07478 19.6161 5.32083 19.1476 4.85239C18.6792 4.38394 17.9252 4.38394 16.4173 4.38394H16.3083Z" stroke="#4B5563" stroke-width="1.5"/>
<path d="M15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12Z" stroke="#4B5563" stroke-width="1.5"/>
</svg>
</a>
</div>
</div>
</div>
</div>
<div class="order-form-section p-16">
<div class="order-form-section p-16">
<input type="hidden" id="profit_option" value="">
<div class="add-suplier-modal-wrapper d-block">
<div class="row">
<div class="col-lg-4 mb-2">
<label>{{ __('Product Name') }}</label>
<input type="text" name="productName" required class="form-control"
placeholder="{{ __('Enter Product Name') }}">
</div>
<input type="hidden" id="profit_option" value="{{ $profit_option }}">
<div class="add-suplier-modal-wrapper d-block">
<div class="row">
<div class="col-lg-4 mb-2">
<label>{{ __('Product Name') }}</label>
<input type="text" name="productName" required class="form-control" placeholder="{{ __('Enter Product Name') }}">
</div>
@if (is_module_enabled($modules, 'show_product_category'))
@if (is_module_enabled($modules, 'show_product_category'))
<div class="col-lg-4 mb-2">
<label>{{ __('Category') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select name="category_id" id="category-select"
class="form-control table-select w-100 role">
<select name="category_id" id="category-select" class="form-control table-select w-100 role">
<option value=""> {{ __('Select Category') }}</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}"
data-capacity=" {{ $category->variationCapacity }}"
data-color="{{ $category->variationColor }}"
data-size="{{ $category->variationSize }}"
data-type="{{ $category->variationType }}"
data-weight="{{ $category->variationWeight }}">
{{ ucfirst($category->categoryName) }}
</option>
data-capacity=" {{ $category->variationCapacity }}"
data-color="{{ $category->variationColor }}"
data-size="{{ $category->variationSize }}"
data-type="{{ $category->variationType }}"
data-weight="{{ $category->variationWeight }}">
{{ ucfirst($category->categoryName) }} </option>
@endforeach
</select>
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_product_unit'))
@if (is_module_enabled($modules, 'show_product_unit'))
<div class="col-lg-4 mb-2">
<label>{{ __('Unit') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select name="unit_id" class="form-control table-select w-100 role">
<option value=""> {{ __('Select one') }}</option>
@foreach ($units as $unit)
<option value="{{ $unit->id }}"> {{ ucfirst($unit->unitName) }}
</option>
<option value="{{ $unit->id }}"> {{ ucfirst($unit->unitName) }}</option>
@endforeach
</select>
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_product_code'))
@if (is_module_enabled($modules, 'show_product_code'))
<div class="col-lg-4 mb-2">
<label>{{ __('SKU / Code') }}</label>
<input type="text" value="{{ $code }}" name="productCode" id="productCode"
class="form-control" placeholder="{{ __('Enter Product Code') }}">
<input type="text" value="{{ $code }}" name="productCode" id="productCode" class="form-control" placeholder="{{ __('Enter Product Code') }}">
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_product_brand'))
@if (is_module_enabled($modules, 'show_hsn_code'))
<div class="col-lg-4 mb-2">
<label>{{ __('HSN Code') }}</label>
<input type="text" name="hsn_code" class="form-control" placeholder="{{ __('Enter hsn code') }}">
</div>
@endif
@if (is_module_enabled($modules, 'show_product_brand'))
<div class="col-lg-4 mb-2">
<label>{{ __('Brand') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select name="brand_id" class="form-control table-select w-100 role">
<option value=""> {{ __('Select Brand') }}</option>
@foreach ($brands as $brand)
<option value="{{ $brand->id }}"> {{ ucfirst($brand->brandName) }}
</option>
<option value="{{ $brand->id }}"> {{ ucfirst($brand->brandName) }}</option>
@endforeach
</select>
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_model_no'))
@if (is_module_enabled($modules, 'show_model_no'))
<div class="col-lg-4 mb-2">
<label>{{ __('Model') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select name="model_id" class="form-control table-select w-100 role">
<option value="">{{ __('Select Model') }}</option>
@foreach ($product_models as $model)
<option value="{{ $model->id }}"> {{ ucfirst($model->name) }}
</option>
<option value="{{ $model->id }}"> {{ ucfirst($model->name) }}</option>
@endforeach
</select>
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_rack'))
@if (is_module_enabled($modules, 'show_rack'))
<div class="col-lg-4 mb-2">
<label>{{ __('Rack') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select name="rack_id" id="rack_id"
class="form-control table-select w-100 role">
<select name="rack_id" id="rack_id" class="form-control table-select w-100 role">
<option value="">{{ __('Select one') }}</option>
@foreach ($racks as $rack)
@foreach ($racks as $rack )
<option value="{{ $rack->id }}">{{ $rack->name }}</option>
@endforeach
</select>
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_shelf'))
@if (is_module_enabled($modules, 'show_shelf'))
<div class="col-lg-4 mb-2">
<label>{{ __('Shelf') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select name="shelf_id" id="shelf_id"
class="form-control table-select w-100 role disabled">
<select name="shelf_id" id="shelf_id" class="form-control table-select w-100 role disabled">
<option value="">{{ __('Select one') }}</option>
</select>
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_alert_qty'))
@if (is_module_enabled($modules, 'show_alert_qty'))
<div class="col-lg-4 mb-2 low-stock-input">
<label>{{ __('Low Stock Alert') }}</label>
<input type="number" step="any" name="alert_qty" class="form-control"
placeholder="{{ __('EX: 5') }}">
<input type="number" step="any" name="alert_qty" class="form-control" placeholder="{{ __('EX: 5') }}">
</div>
@endif
@endif
</div>
</div>
</div>
</div>
</div>
</div>
<div class="product-price-container pb-4">
<div class="product-price-header">
<h3>{{__('Product price, stock')}}</h3>
@if (moduleCheck('SerialCodeAddon'))
<div
class="custom-control custom-checkbox d-flex align-items-center gap-2 serial-code-checkbox">
<input type="checkbox"
class="custom-control-input delete-checkbox-item multi-delete imei-serial serial-update"
id="serial" @checked(is_module_enabled($modules, 'show_serial')) value="1"
name="has_serial">
<div class="product-price-container pb-4">
@if (is_module_enabled($modules, 'show_serial'))
<div class="product-price-header">
<h3>{{__('Product price, stock')}}</h3>
@if (moduleCheck('SerialCodeAddon'))
<div class="custom-control custom-checkbox d-flex align-items-center gap-2 serial-code-checkbox">
<input type="checkbox" class="custom-control-input delete-checkbox-item multi-delete imei-serial serial-update" id="serial" @checked(is_module_enabled($modules, 'show_serial')) value="1" name="has_serial">
<label class="custom-control-label fw-bold" for="serial">{{ __('IMEI/Serial') }}</label>
<input type="hidden" name="show_serial" id="hidden_show_serial" value="0">
</div>
@endif
<input type="hidden" value="{{ route('business.product.serial.update') }}" id="serial_route">
</div>
@endif
<input type="hidden" value="{{ route('business.product.serial.update') }}"
id="serial_route">
</div>
<div class="single-container m-3 mt-0 mb-0">
<div class="row order-form-section">
<div class="col-lg-4 mb-2">
<label>{{ __('Type') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select id="product-type" name="product_type"
class="form-control table-select w-100">
@if ($showSingle)
<option value="single">{{ __('Single') }}</option>
@endif
@if ($showVariant)
<option value="variant">{{ __('Variation') }}</option>
@endif
@if ($showCombo)
<option value="combo">{{ __('Combo') }}</option>
@endif
</select>
<span></span>
</div>
</div>
@if (is_module_enabled($modules, 'show_vat_type'))
<div class="single-container m-3 mt-0 mb-0">
<div class="row order-form-section">
<div class="col-lg-4 mb-2">
<label>{{ __('Tax Type') }}</label>
<label>{{ __('Type') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select id="product-type" name="product_type" class="form-control table-select w-100">
@if ($showSingle)
<option value="single">{{ __('Single') }}</option>
@endif
@if ($showVariant)
<option value="variant">{{ __('Variation') }}</option>
@endif
@if ($showCombo)
<option value="combo">{{ __('Combo') }}</option>
@endif
</select>
<span></span>
</div>
</div>
@if (is_module_enabled($modules, 'show_vat_type'))
<div class="col-lg-4 mb-2">
<label>{{ __('Selling Tax Type') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select id="vat_type" name="vat_type" class="form-control table-select w-100">
<option value="exclusive">{{ __('Exclusive') }}</option>
@@ -244,9 +228,9 @@ class="form-control table-select w-100">
<span></span>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_vat_id'))
@if (is_module_enabled($modules, 'show_vat_id'))
<div class="col-lg-4 mb-2">
<label>{{ __('Select Tax') }}</label>
<div class="gpt-up-down-arrow position-relative">
@@ -261,28 +245,26 @@ class="form-control table-select w-100">
<span></span>
</div>
</div>
@endif
@endif
</div>
</div>
<div class="single-container m-3 mt-0 mb-0" id="productTypeContainer"></div>
@include('business::products.components.create')
</div>
<div class="single-container m-3 mt-0 mb-0" id="productTypeContainer"></div>
@include('business::products.components.create')
</div>
</div>
<div class="col-lg-12 pt-2">
<div class="card product-card border-0 ">
<div class="card-bodys p-3 ">
<div class="row">
<div class="col-lg-12 pt-2">
<div class="card product-card border-0 ">
<div class="card-bodys p-3 ">
<div class="row">
@if (is_module_enabled($modules, 'show_warranty'))
@if (is_module_enabled($modules, 'show_warranty'))
<div class="col-lg-6">
<label for="warranty">{{__('Warranty')}}</label>
<div class="warranty-container ">
<input type="number" id="warranty"
name="warranty_guarantee_info[warranty_duration]"
placeholder="{{__('Ex: 30')}}">
<input type="number" id="warranty" name="warranty_guarantee_info[warranty_duration]" placeholder="{{__('Ex: 30')}}">
<select id="warranty-unit" name="warranty_guarantee_info[warranty_unit]">
<option value="days">{{__('Days')}}</option>
<option value="months">{{__('Months')}}</option>
@@ -290,15 +272,13 @@ class="form-control table-select w-100">
</select>
</div>
</div>
@endif
@endif
@if (is_module_enabled($modules, 'show_guarantee'))
@if (is_module_enabled($modules, 'show_guarantee'))
<div class="col-lg-6">
<label for="warranty">{{__('Guarantee')}}</label>
<div class="warranty-container ">
<input type="number" id="warranty"
name="warranty_guarantee_info[guarantee_duration]"
placeholder="{{__('Ex: 30')}}">
<input type="number" id="warranty" name="warranty_guarantee_info[guarantee_duration]" placeholder="{{__('Ex: 30')}}">
<select id="warranty-unit" name="warranty_guarantee_info[guarantee_unit]">
<option value="days">{{__('Days')}}</option>
<option value="months">{{__('Months')}}</option>
@@ -306,32 +286,14 @@ class="form-control table-select w-100">
</select>
</div>
</div>
@endif
@endif
</div>
</div>
</div>
</div>
<div class="col-lg-12 pt-2">
<div class="card product-card border-0 ">
<div class="card-bodys p-3 ">
<div class="row">
<div class="col-lg-12">
<div class="custom-control custom-checkbox d-flex align-items-center gap-2">
<input type="checkbox"
class="custom-control-input delete-checkbox-item multi-delete"
id="is_displayed_in_pos" value="1" checked name="is_displayed_in_pos">
<label class="custom-control-label fw-bold"
for="is_displayed_in_pos">{{ __('Show on POS') }}</label>
</div>
</div>
</div>
</div>
</div>
</div>
@if (is_module_enabled($modules, 'show_product_image'))
@if (is_module_enabled($modules, 'show_product_image'))
<div class="col-lg-12">
<div class="upload-product-img">
<div class="upload-img-title">
@@ -339,28 +301,20 @@ class="custom-control-input delete-checkbox-item multi-delete"
</div>
<div class="upload-container mt-2" id="uploadContainer">
<div class="upload-img-title border-0 p-0 m-0 mb-1">
<h3><span>{{__('Image (Size 150x130)')}}</span></h3>
</div>
<h3><span>{{__('Image (Size 150x130)')}}</span></h3>
</div>
<div class="upload-box">
<svg width="40" height="40" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40001300_65043)">
<path
d="M33.3333 40H6.66667C3 40 0 37 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667V33.3333C40 37 37 40 33.3333 40Z"
fill="#69A1FF" />
<path
d="M40 6.66667V33.3333C40 37 37 40 33.3333 40H6.33333C2.83333 39.8333 0 36.8333 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667Z"
fill="#E6E6E6" />
<path
d="M27.8333 40H6.66667C3 40 0 37 0 33.3333V27.8333L3.83333 24C6 21.8333 9.66667 21.8333 11.8333 24L27.8333 40Z"
fill="#999999" />
<path
d="M39.9987 23.834V33.334C39.9987 37.0007 36.9987 40.0007 33.332 40.0007H6.33203L27.1654 19.0007C29.332 16.834 32.9987 16.834 35.1654 19.0007L39.9987 23.834ZM24.332 10.5007H21.6654V17.334C21.6654 18.334 20.832 19.0007 19.9987 19.0007C19.1654 19.0007 18.332 18.334 18.332 17.334V10.5007H15.6654C14.6654 10.5007 13.9987 9.33398 14.6654 8.50065L18.9987 3.33398C19.4987 2.66732 20.4987 2.66732 20.832 3.33398L25.1654 8.66732C25.832 9.33398 25.332 10.5007 24.332 10.5007Z"
fill="#999999" />
<path d="M33.3333 40H6.66667C3 40 0 37 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667V33.3333C40 37 37 40 33.3333 40Z" fill="#69A1FF"/>
<path d="M40 6.66667V33.3333C40 37 37 40 33.3333 40H6.33333C2.83333 39.8333 0 36.8333 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667Z" fill="#E6E6E6"/>
<path d="M27.8333 40H6.66667C3 40 0 37 0 33.3333V27.8333L3.83333 24C6 21.8333 9.66667 21.8333 11.8333 24L27.8333 40Z" fill="#999999"/>
<path d="M39.9987 23.834V33.334C39.9987 37.0007 36.9987 40.0007 33.332 40.0007H6.33203L27.1654 19.0007C29.332 16.834 32.9987 16.834 35.1654 19.0007L39.9987 23.834ZM24.332 10.5007H21.6654V17.334C21.6654 18.334 20.832 19.0007 19.9987 19.0007C19.1654 19.0007 18.332 18.334 18.332 17.334V10.5007H15.6654C14.6654 10.5007 13.9987 9.33398 14.6654 8.50065L18.9987 3.33398C19.4987 2.66732 20.4987 2.66732 20.832 3.33398L25.1654 8.66732C25.832 9.33398 25.332 10.5007 24.332 10.5007Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_40001300_65043">
<rect width="40" height="40" fill="white" />
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
@@ -370,25 +324,26 @@ class="custom-control-input delete-checkbox-item multi-delete"
</div>
</div>
</div>
@endif
@endif
</div>
</form>
</div>
</form>
</div>
</div>
</div>
@usercan('products.price')
<input type="hidden" id="canSeePrice" value="1">
@endusercan
<input type="hidden" id="canSeePrice" value="0">
@usercan('products.price')
<input type="hidden" id="canSeePrice" value="1">
@endusercan
<input type="hidden" id="canSeePrice" value="0">
<input type="hidden" id="getShelfRoute" value="{{ route('business.product.get.shelf') }}">
<input type="hidden" id="warehouses-data" value='@json($warehouses)'>
<input type="hidden" id="variations-data" value='@json($variations)'>
<input type="hidden" id="permissions-data" value='@json($modules ?? $defaultPermissions)'>
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
<input type="hidden" id="getShelfRoute" value="{{ route('business.product.get.shelf') }}">
<input type="hidden" id="warehouses-data" value='@json($warehouses)'>
<input type="hidden" id="variations-data" value='@json($variations)'>
<input type="hidden" id="permissions-data" value='@json($modules ?? $defaultPermissions)'>
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
<input type="hidden" id="has-warehouse-addon" value="{{ moduleCheck('WarehouseAddon') }}">
@endsection
@push('js')
<script src="{{ asset('assets/js/custom/product.js') }}"></script>
@endpush
<script src="{{ asset('assets/js/custom/product.js') }}?v={{ time() }}"></script>
@endpush

View File

@@ -1,16 +1,16 @@
@php
use Illuminate\Support\Str;
use Illuminate\Support\Str;
@endphp
<div class="responsive-table m-0">
<table class="table" id="datatable">
<thead>
<tr>
@usercan('products.delete')
<th class="w-60 d-print-none">
<div class="d-flex align-items-center gap-3">
<input type="checkbox" class="select-all-delete multi-delete">
</div>
</th>
<th class="w-60 d-print-none">
<div class="d-flex align-items-center gap-3">
<input type="checkbox" class="select-all-delete multi-delete">
</div>
</th>
@endusercan
<th class="d-print-none">{{ __('SL') }}.</th>
@@ -18,201 +18,201 @@
<th class="text-start">{{ __('Product Name') }}</th>
<th class="d-print-none">{{ __('Type') }}</th>
<th class="d-print-none">{{ __('Code') }}</th>
<th class="d-print-none">{{ __('HSN Code') }}</th>
<th class="d-print-none">{{ __('Brand') }}</th>
<th>{{ __('Category') }}</th>
@usercan('products.price')
<th>{{ __('Purchase price') }}</th>
<th>{{ __('Purchase price') }}</th>
@endusercan
<th>{{ __('Sale price') }}</th>
<th>{{ __('Stock') }}</th>
<th class="d-print-none">{{ __('Rack') }}</th>
<th class="d-print-none">{{ __('Shelf') }}</th>
<th class="d-print-none">{{ __('Show') }}</th>
<th class="d-print-none">{{ __('Action') }}</th>
</tr>
</thead>
<tbody id="product-data">
@foreach ($products as $product)
@php
$nonEmptyStock = $product->stocks->firstWhere('productStock', '>', 0);
$fallbackStock = $product->stocks->first();
$stock = $nonEmptyStock ?? $fallbackStock;
@php
$nonEmptyStock = $product->stocks->firstWhere('productStock', '>', 0);
$fallbackStock = $product->stocks->first();
$stock = $nonEmptyStock ?? $fallbackStock;
$latestPurchasePrice = $stock?->productPurchasePrice ?? 0;
$latestSalePrice = $stock?->productSalePrice ?? 0;
$latestWholeSalePrice = $stock?->productWholeSalePrice ?? 0;
$latestDealerPrice = $stock?->productDealerPrice ?? 0;
@endphp
$latestPurchasePrice = $stock?->productPurchasePrice ?? 0;
$latestSalePrice = $stock?->productSalePrice ?? 0;
$latestWholeSalePrice = $stock?->productWholeSalePrice ?? 0;
$latestDealerPrice = $stock?->productDealerPrice ?? 0;
@endphp
<tr>
@usercan('products.delete')
<td class="w-60 checkbox d-print-none">
<input type="checkbox" name="ids[]" class="delete-checkbox-item multi-delete"
value="{{ $product->id }}">
</td>
@endusercan
<tr>
@usercan('products.delete')
<td class="w-60 checkbox d-print-none">
<input type="checkbox" name="ids[]" class="delete-checkbox-item multi-delete"
value="{{ $product->id }}">
</td>
@endusercan
<td class="d-print-none">
{{ ($products->currentPage() - 1) * $products->perPage() + $loop->iteration }}
</td>
<td class="d-print-none">
{{ ($products->currentPage() - 1) * $products->perPage() + $loop->iteration }}
</td>
<input type="hidden" class="product-show-route" data-id="{{ $product->id }}"
value="{{ route('business.products.show', $product->id) }}">
<input type="hidden" class="product-show-route" data-id="{{ $product->id }}"
value="{{ route('business.products.show', $product->id) }}">
<td class="d-print-none">
<img src="{{ asset($product->productPicture ?? 'assets/images/logo/upload2.jpg') }}" alt="Img"
class="table-product-img">
</td>
<td class="d-print-none">
<img src="{{ asset($product->productPicture ?? 'assets/images/logo/upload2.jpg') }}"
alt="Img" class="table-product-img">
</td>
<td class="text-start">
@if ($product->product_type != 'combo')
@php
$stocks = $product->stocks->map(function ($batch) use ($product) {
$hasWeight = $product->category ? $product->category->variationWeight : false;
return [
'id' => $batch->id,
'batch_no' => $batch->batch_no,
'expire_date' => $batch->expire_date ? formatted_date($batch->expire_date) : 'N/A',
'productStock' => $batch->productStock ?? 0,
'productSalePrice' => $batch->productSalePrice ?? 0,
'productPurchasePrice' => $batch->productPurchasePrice ?? 0,
'productWholeSalePrice' => $batch->productWholeSalePrice ?? 0,
'productDealerPrice' => $batch->productDealerPrice ?? 0,
'warehouse' => $batch->warehouse->name ?? '',
'rack' => $product->rack->name ?? '',
'shelf' => $product->shelf->name ?? '',
'weight' => $hasWeight ? $product->weight : null,
'showWeight' => $hasWeight ? 1 : 0,
];
});
@endphp
<td class="text-start">
@if ($product->product_type != 'combo')
@php
$stocks = $product->stocks->map(function ($batch) use ($product) {
$hasWeight = $product->category ? $product->category->variationWeight : false;
return [
'id' => $batch->id,
'batch_no' => $batch->batch_no,
'expire_date' => $batch->expire_date ? formatted_date($batch->expire_date) : 'N/A',
'productStock' => $batch->productStock ?? 0,
'productSalePrice' => $batch->productSalePrice ?? 0,
'productPurchasePrice' => $batch->productPurchasePrice ?? 0,
'exclusive_price' => $batch->exclusive_price ?? 0,
'productWholeSalePrice' => $batch->productWholeSalePrice ?? 0,
'productDealerPrice' => $batch->productDealerPrice ?? 0,
'warehouse' => $batch->warehouse->name ?? '',
'rack' => $product->rack->name ?? '',
'shelf' => $product->shelf->name ?? '',
'weight' => $hasWeight ? $product->weight : null,
'showWeight' => $hasWeight ? 1 : 0,
];
});
@endphp
<a href="javascript:void(0);" class="stock-view-data text-primary" data-stocks='@json($stocks)'>
{{ Str::words($product->productName, 3, '...') }}
</a>
@else
<a href="javascript:void(0);" class="combo-product-view text-primary"
data-combo='@json($product->combo_items)'>
{{ Str::words($product->productName, 3, '...') }}
</a>
@endif
</td>
<a href="javascript:void(0);" class="stock-view-data text-primary"
data-stocks='@json($stocks)'>
{{ Str::words($product->productName, 3, '...') }}
</a>
@else
<a href="javascript:void(0);" class="combo-product-view text-primary"
data-combo='@json($product->combo_items)'>
{{ Str::words($product->productName, 3, '...') }}
</a>
@endif
</td>
<td class="d-print-none">{{ ucfirst($product->product_type) }}</td>
<td class="d-print-none">{{ $product->productCode }}</td>
<td class="d-print-none">{{ $product->brand->brandName ?? '' }}</td>
<td>{{ $product->category->categoryName ?? '' }}</td>
<td class="d-print-none">{{ ucfirst($product->product_type) }}</td>
<td class="d-print-none">{{ $product->productCode }}</td>
<td class="d-print-none">{{ $product->hsn_code }}</td>
<td class="d-print-none">{{ $product->brand->brandName ?? '' }}</td>
<td>{{ $product->category->categoryName ?? '' }}</td>
@usercan('products.price')
<td>
{{ $product->product_type == 'combo'
? currency_format($product->combo_products->sum(fn($combo) => $combo->purchase_price * $combo->quantity), currency: business_currency())
: currency_format($latestPurchasePrice, currency: business_currency()) }}
</td>
@endusercan
@usercan('products.price')
<td>
{{ $product->product_type == 'combo'
? currency_format($product->total_cost, currency: business_currency())
: currency_format($latestPurchasePrice, currency: business_currency()) }}
</td>
@endusercan
<td>
{{ currency_format(
$product->product_type == 'combo'
? $product->productSalePrice
: $latestSalePrice,
currency: business_currency()
) }}
</td>
<td>
{{ currency_format(
$product->product_type == 'combo'
? $product->productSalePrice
: $latestSalePrice,
currency: business_currency()
) }}
</td>
<td class="{{ $product->total_stock <= $product->alert_qty ? 'text-danger' : 'text-success' }}">
<span class="fw-bold">
{{ $product->product_type == 'combo' ? 'Combo' : ($product->total_stock ?? 0) }}
</span>
<small class="text-dark">{{ $product->unit->unitName ?? '' }}</small>
</td>
<td class="{{ $product->total_stock <= $product->alert_qty ? 'text-danger' : 'text-success' }}">
<span class="fw-bold">
{{ $product->product_type == 'combo' ? 'Combo' : ($product->total_stock ?? 0) }}
</span>
<small class="text-dark">{{ $product->unit->unitName ?? '' }}</small>
</td>
<td class="d-print-none">{{ $product->rack->name ?? '' }}</td>
<td class="d-print-none">{{ $product->shelf->name ?? '' }}</td>
<td class="d-print-none">{{ $product->rack->name ?? '' }}</td>
<td class="d-print-none">{{ $product->shelf->name ?? '' }}</td>
<td class="d-print-none">
<span class="badge {{ $product->is_displayed_in_pos ? 'bg-success' : 'bg-danger' }}">
{{ $product->is_displayed_in_pos ? __('Yes') : __('No') }}
</span>
</td>
<td class="d-print-none">
<div class="dropdown table-action">
<button type="button" data-bs-toggle="dropdown">
<i class="far fa-ellipsis-v"></i>
</button>
<td class="d-print-none">
<div class="dropdown table-action">
<button type="button" data-bs-toggle="dropdown">
<i class="far fa-ellipsis-v"></i>
</button>
<ul class="dropdown-menu">
@if ($product->product_type != 'combo')
<li>
@php
$stocks = $product->stocks->map(function ($batch) {
return [
'id' => $batch->id,
'batch_no' => $batch->batch_no,
'expire_date' => $batch->expire_date
? formatted_date($batch->expire_date)
: 'N/A',
'productStock' => $batch->productStock ?? 0,
'productSalePrice' => $batch->productSalePrice ?? 0,
];
});
<ul class="dropdown-menu">
@if ($product->product_type != 'combo')
<li>
@php
$stocks = $product->stocks->map(function ($batch) {
return [
'id' => $batch->id,
'batch_no' => $batch->batch_no,
'expire_date' => $batch->expire_date
? formatted_date($batch->expire_date)
: 'N/A',
'productStock' => $batch->productStock ?? 0,
'productSalePrice' => $batch->productSalePrice ?? 0,
];
});
@endphp
$allSerials = $product->stocks->pluck('serial_numbers')->flatten()->filter()->values()->toArray();
@endphp
@usercan('products.read')
<a href="#product-view" class="product-view" data-bs-toggle="modal"
data-name="{{ $product->productName }}"
data-image="{{ asset($product->productPicture ?? 'assets/images/logo/upload2.jpg') }}"
data-code="{{ $product->productCode }}"
data-brand="{{ $product->brand->brandName ?? '' }}"
data-category="{{ $product->category->categoryName ?? '' }}"
data-unit="{{ $product->unit->unitName ?? '' }}" @usercan('products.price')
data-purchase-price="{{ currency_format($latestPurchasePrice, currency: business_currency()) }}"
@endusercan
data-sale-price="{{ currency_format($latestSalePrice, currency: business_currency()) }}"
data-wholesale-price="{{ currency_format($latestWholeSalePrice, currency: business_currency()) }}"
data-dealer-price="{{ currency_format($latestDealerPrice, currency: business_currency()) }}"
data-stock="{{ $product->total_stock }}" data-low-stock="{{ $product->alert_qty }}"
data-manufacturer="{{ $product->productManufacturer }}"
data-stocks='@json($stocks)'>
@usercan('products.read')
<a href="#product-view" class="product-view" data-bs-toggle="modal"
data-name="{{ $product->productName }}"
data-image="{{ asset($product->productPicture ?? 'assets/images/logo/upload2.jpg') }}"
data-code="{{ $product->productCode }}"
data-brand="{{ $product->brand->brandName ?? '' }}"
data-category="{{ $product->category->categoryName ?? '' }}"
data-unit="{{ $product->unit->unitName ?? '' }}"
@usercan('products.price')
data-purchase-price="{{ currency_format($latestPurchasePrice, currency: business_currency()) }}"
@endusercan
data-sale-price="{{ currency_format($latestSalePrice, currency: business_currency()) }}"
data-wholesale-price="{{ currency_format($latestWholeSalePrice, currency: business_currency()) }}"
data-dealer-price="{{ currency_format($latestDealerPrice, currency: business_currency()) }}"
data-stock="{{ $product->total_stock }}"
data-low-stock="{{ $product->alert_qty }}"
data-serial="{{ implode(', ', $allSerials) }}"
data-manufacturer="{{ $product->productManufacturer }}"
data-stocks='@json($stocks)'>
<i class="fal fa-eye"></i> {{ __('View') }}
</a>
@endusercan
</li>
@else
<li>
@usercan('products.read')
<a href="javascript:void(0);" class="combo-product-view"
data-combo='@json($product->combo_items)'>
<i class="fal fa-eye"></i> {{ __('View') }}
</a>
@endusercan
</li>
@endif
@endusercan
</li>
@else
<li>
@usercan('products.read')
<a href="javascript:void(0);" class="combo-product-view"
data-combo='@json($product->combo_items)'>
<i class="fal fa-eye"></i> {{ __('View') }}
</a>
@endusercan
</li>
@endif
<li>
@usercan('products.update')
<a href="{{ route('business.products.edit', $product->id) }}">
<i class="fal fa-edit"></i> {{ __('Edit') }}
</a>
@endusercan
</li>
<li>
@usercan('products.update')
<a href="{{ route('business.products.edit', $product->id) }}">
<i class="fal fa-edit"></i> {{ __('Edit') }}
</a>
@endusercan
</li>
<li>
@usercan('products.delete')
<a href="{{ route('business.products.destroy', $product->id) }}" class="confirm-action"
data-method="DELETE">
<i class="fal fa-trash-alt"></i> {{ __('Delete') }}
</a>
@endusercan
</li>
</ul>
</div>
</td>
</tr>
<li>
@usercan('products.delete')
<a href="{{ route('business.products.destroy', $product->id) }}"
class="confirm-action" data-method="DELETE">
<i class="fal fa-trash-alt"></i> {{ __('Delete') }}
</a>
@endusercan
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
@@ -220,4 +220,4 @@ class="table-product-img">
<div class="mt-3">
{{ $products->links('vendor.pagination.bootstrap-5') }}
</div>
</div>

View File

@@ -11,16 +11,12 @@
$showCombo = isset($modules['show_product_type_combo']) && $modules['show_product_type_combo'];
$defaultPermissions = [
'show_batch_no' => 1,
'show_product_category' => 1,
'show_product_stock' => 1,
'show_exclusive_price' => 1,
'show_inclusive_price' => 1,
'show_profit_percent' => 1,
'show_product_sale_price' => 1,
'show_product_wholesale_price' => 1,
'show_product_dealer_price' => 1,
'show_action' => 1,
];
@endphp
@@ -105,6 +101,13 @@
</div>
@endif
@if (is_module_enabled($modules, 'show_hsn_code'))
<div class="col-md-6 col-lg-4 mb-2">
<label>{{ __('HSN Code') }}</label>
<input type="text" name="hsn_code" value="{{ $product->hsn_code }}" class="form-control" placeholder="{{ __('Enter hsn code') }}">
</div>
@endif
@if (is_module_enabled($modules, 'show_product_brand'))
<div class="col-md-6 col-lg-4 mb-2">
<label>{{ __('Brand') }}</label>
@@ -176,6 +179,7 @@
</div>
<div class="product-price-container pb-4">
@if (is_module_enabled($modules, 'show_serial'))
<div class="product-price-header">
<h3>{{__('Product price, stock')}}</h3>
@if (moduleCheck('SerialCodeAddon'))
@@ -185,7 +189,7 @@
</div>
@endif
</div>
@endif
<div class="single-container m-3 mt-0 mb-0">
<div class="row order-form-section">
<div class="col-lg-4 mb-2">
@@ -200,7 +204,7 @@
@if (is_module_enabled($modules, 'show_vat_type'))
<div class="col-lg-4 mb-2">
<label>{{ __('Tax Type') }}</label>
<label>{{ __('Selling Tax Type') }}</label>
<div class="gpt-up-down-arrow position-relative">
<select id="vat_type" name="vat_type" class="form-control table-select w-100">
<option @selected($product->vat_type == 'exclusive') value="exclusive">{{ __('Exclusive') }}</option>
@@ -277,68 +281,55 @@
</div>
</div>
<div class="col-lg-12 pt-2">
<div class="card product-card border-0 ">
<div class="card-bodys p-3 ">
<div class="row">
<div class="col-lg-12">
<div class="custom-control custom-checkbox d-flex align-items-center gap-2">
<input type="checkbox" class="custom-control-input delete-checkbox-item multi-delete" id="is_displayed_in_pos" value="1" @checked($product->is_displayed_in_pos == 1) name="is_displayed_in_pos">
<label class="custom-control-label fw-bold" for="is_displayed_in_pos">{{ __('Show on POS') }}</label>
<div class="col-lg-12">
@if (is_module_enabled($modules, 'show_product_image'))
<div class="upload-product-img m-0">
<div class="upload-img-title">
<h3>{{__('Product Image')}}</h3>
</div>
<div class="upload-container mt-2" id="uploadContainer">
<div class="upload-img-title border-0 p-0 m-0 mb-1">
<h3><span>{{__('Image (Size 150x130)')}}</span></h3>
</div>
<div class="upload-box uploaded">
<svg width="40" height="40" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40001300_65043)">
<path
d="M33.3333 40H6.66667C3 40 0 37 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667V33.3333C40 37 37 40 33.3333 40Z"
fill="#69A1FF"></path>
<path
d="M40 6.66667V33.3333C40 37 37 40 33.3333 40H6.33333C2.83333 39.8333 0 36.8333 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667Z"
fill="#E6E6E6"></path>
<path
d="M27.8333 40H6.66667C3 40 0 37 0 33.3333V27.8333L3.83333 24C6 21.8333 9.66667 21.8333 11.8333 24L27.8333 40Z"
fill="#999999"></path>
<path
d="M39.9987 23.834V33.334C39.9987 37.0007 36.9987 40.0007 33.332 40.0007H6.33203L27.1654 19.0007C29.332 16.834 32.9987 16.834 35.1654 19.0007L39.9987 23.834ZM24.332 10.5007H21.6654V17.334C21.6654 18.334 20.832 19.0007 19.9987 19.0007C19.1654 19.0007 18.332 18.334 18.332 17.334V10.5007H15.6654C14.6654 10.5007 13.9987 9.33398 14.6654 8.50065L18.9987 3.33398C19.4987 2.66732 20.4987 2.66732 20.832 3.33398L25.1654 8.66732C25.832 9.33398 25.332 10.5007 24.332 10.5007Z"
fill="#999999"></path>
</g>
<defs>
<clipPath id="clip0_40001300_65043">
<rect width="40" height="40" fill="white"></rect>
</clipPath>
</defs>
</svg>
<div class="upload-text">{{__('Drag & drop image')}}</div>
<input type="file" name="productPicture" accept="image/*" class="handle-image-Upload">
<div class="preview-wrapper">
<img class="preview-img" src="{{ asset($product->productPicture ?? 'assets/images/icons/upload.png') }}"><span class="close-icon">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 4L4 12" stroke="#C52127" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M4 4L12 12" stroke="#C52127" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
</svg>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-12">
<div class="upload-product-img m-0">
<div class="upload-img-title">
<h3>{{__('Product Image')}}</h3>
</div>
<div class="upload-container mt-2" id="uploadContainer">
<div class="upload-img-title border-0 p-0 m-0 mb-1">
<h3><span>{{__('Image (Size 150x130)')}}</span></h3>
</div>
<div class="upload-box uploaded">
<svg width="40" height="40" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_40001300_65043)">
<path
d="M33.3333 40H6.66667C3 40 0 37 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667V33.3333C40 37 37 40 33.3333 40Z"
fill="#69A1FF"></path>
<path
d="M40 6.66667V33.3333C40 37 37 40 33.3333 40H6.33333C2.83333 39.8333 0 36.8333 0 33.3333V6.66667C0 3 3 0 6.66667 0H33.3333C37 0 40 3 40 6.66667Z"
fill="#E6E6E6"></path>
<path
d="M27.8333 40H6.66667C3 40 0 37 0 33.3333V27.8333L3.83333 24C6 21.8333 9.66667 21.8333 11.8333 24L27.8333 40Z"
fill="#999999"></path>
<path
d="M39.9987 23.834V33.334C39.9987 37.0007 36.9987 40.0007 33.332 40.0007H6.33203L27.1654 19.0007C29.332 16.834 32.9987 16.834 35.1654 19.0007L39.9987 23.834ZM24.332 10.5007H21.6654V17.334C21.6654 18.334 20.832 19.0007 19.9987 19.0007C19.1654 19.0007 18.332 18.334 18.332 17.334V10.5007H15.6654C14.6654 10.5007 13.9987 9.33398 14.6654 8.50065L18.9987 3.33398C19.4987 2.66732 20.4987 2.66732 20.832 3.33398L25.1654 8.66732C25.832 9.33398 25.332 10.5007 24.332 10.5007Z"
fill="#999999"></path>
</g>
<defs>
<clipPath id="clip0_40001300_65043">
<rect width="40" height="40" fill="white"></rect>
</clipPath>
</defs>
</svg>
<div class="upload-text">{{__('Drag & drop image')}}</div>
<input type="file" name="productPicture" accept="image/*" class="handle-image-Upload">
<div class="preview-wrapper">
<img class="preview-img" src="{{ asset($product->productPicture ?? 'assets/images/icons/upload.png') }}"><span class="close-icon">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 4L4 12" stroke="#C52127" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M4 4L12 12" stroke="#C52127" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
</svg>
</span>
</div>
</div>
</div>
</div>
@endif
</div>
</div>
</form>
@@ -362,9 +353,11 @@
<input type="hidden" id="warehouses-data" value='@json($warehouses)'>
<input type="hidden" id="variations-data" value='@json($variations)'>
<input type="hidden" id="permissions-data" value='@json($modules ?? $defaultPermissions)'>
<input type="hidden" id="has-serial-code-addon" value="{{ moduleCheck('SerialCodeAddon') }}">
<input type="hidden" id="has-warehouse-addon" value="{{ moduleCheck('WarehouseAddon') }}">
@endsection
@push('js')
<script src="{{ asset('assets/js/custom/product.js') }}"></script>
<script src="{{ asset('assets/js/custom/product.js') }}?v={{ time() }}"></script>
@endpush

View File

@@ -1,43 +1,70 @@
<table>
<table class="table" id="datatable">
<thead>
<tr>
<th>{{ __('SL') }}. </th>
<th>{{ __('Product Name') }} </th>
<th>{{ __('Code') }} </th>
<th>{{ __('Brand') }} </th>
<th>{{ __('Category') }} </th>
<th>{{ __('Unit') }} </th>
<th>{{ __('Purchase Price') }}</th>
<th class="d-print-none">{{ __('SL') }}.</th>
<th class="text-start">{{ __('Product Name') }}</th>
<th class="d-print-none">{{ __('Type') }}</th>
<th class="d-print-none">{{ __('Code') }}</th>
<th class="d-print-none">{{ __('HSN Code') }}</th>
<th class="d-print-none">{{ __('Brand') }}</th>
<th>{{ __('Category') }}</th>
@usercan('products.price')
<th>{{ __('Purchase price') }}</th>
@endusercan
<th>{{ __('Sale price') }}</th>
<th>{{ __('Stock') }}</th>
<th class="d-print-none">{{ __('Rack') }}</th>
<th class="d-print-none">{{ __('Shelf') }}</th>
</tr>
</thead>
<tbody>
<tbody id="product-data">
@foreach ($products as $product)
@php
$nonEmptyStock = $product->stocks->firstWhere('productStock', '>', 0);
$fallbackStock = $product->stocks->first(); // fallback if no stock > 0
$fallbackStock = $product->stocks->first();
$stock = $nonEmptyStock ?? $fallbackStock;
$latestPurchasePrice = $stock?->productPurchasePrice ?? 0;
$latestSalePrice = $stock?->productSalePrice ?? 0;
$latestWholeSalePrice = $stock?->productWholeSalePrice ?? 0;
$latestDealerPrice = $stock?->productDealerPrice ?? 0;
$productStock = $product->total_stock ?? 0;
@endphp
<tr>
<td>{{ $loop->index + 1 }}</td>
<td>{{ $product->productName }}</td>
<td>{{ $product->productCode }}</td>
<td>{{ $product->brand->brandName ?? '' }}</td>
<td class="d-print-none">
{{ $loop->iteration }}
</td>
<td class="text-start">$product->productName</td>
<td class="d-print-none">{{ ucfirst($product->product_type) }}</td>
<td class="d-print-none">{{ $product->productCode }}</td>
<td class="d-print-none">{{ $product->hsn_code }}</td>
<td class="d-print-none">{{ $product->brand->brandName ?? '' }}</td>
<td>{{ $product->category->categoryName ?? '' }}</td>
<td>{{ $product->unit->unitName ?? '' }}</td>
<td>{{ currency_format($latestPurchasePrice, currency: business_currency()) }}</td>
<td>{{ currency_format($latestSalePrice, currency: business_currency()) }}</td>
<td>{{ $product->total_stock }}</td>
@usercan('products.price')
<td>
{{ $product->product_type == 'combo'
? currency_format($product->price_without_tax, currency: business_currency())
: currency_format($latestPurchasePrice, currency: business_currency())
}}
</td>
@endusercan
<td>
{{ currency_format(
$product->product_type == 'combo'
? $product->productSalePrice
: $latestSalePrice,
currency: business_currency()
) }}
</td>
<td class="{{ $product->total_stock <= $product->alert_qty ? 'text-danger' : 'text-success' }}">
<span class="fw-bold">
{{ $product->product_type == 'combo' ? 'Combo' : ($product->total_stock ?? 0) }}
</span>
<small class="text-dark">{{ $product->unit->unitName ?? '' }}</small>
</td>
<td class="d-print-none">{{ $product->rack->name ?? '' }}</td>
<td class="d-print-none">{{ $product->shelf->name ?? '' }}</td>
</tr>
@endforeach
</tbody>
</table>

View File

@@ -58,7 +58,7 @@
</a>
</li>
<li>
<a target="blank" href="{{ route('business.expired.product.reports.pdf') }}">
<a target="_blank" href="{{ route('business.expired.product.reports.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

View File

@@ -56,17 +56,17 @@ class="btn btn-primary"><i class="fas fa-plus-circle me-1"></i>{{ __('Add new Pr
<div class="table-top-btn-group d-print-none">
<ul>
<li>
<a href="{{ route('business.products.csv') }}">
<a class="export-btn" href="{{ route('business.products.csv') }}">
<img src="{{ asset('assets/images/logo/csv.svg') }}" alt="">
</a>
</li>
<li>
<a href="{{ route('business.products.excel') }}">
<a class="export-btn" href="{{ route('business.products.excel') }}">
<img src="{{ asset('assets/images/logo/excel.svg') }}" alt="">
</a>
</li>
<li>
<a target="blank" href="{{ route('business.products.pdf') }}">
<a class="export-btn" target="_blank" href="{{ route('business.products.pdf') }}">
<img src="{{ asset('assets/images/logo/pdf.svg') }}" alt="">
</a>
</li>

Some files were not shown because too many files have changed in this diff Show More