%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/resources/views/orders/ajax/ |
Upload File : |
@php
$addProductPermission = user()->permission('add_product');
@endphp
<!-- CREATE INVOICE START -->
<div class="bg-white rounded b-shadow-4 create-inv">
<!-- HEADING START -->
<div class="px-lg-4 px-md-4 px-3 py-3">
<h4 class="mb-0 f-21 font-weight-normal text-capitalize">@lang('modules.orders.createOrder')</h4>
</div>
<!-- HEADING END -->
<hr class="m-0 border-top-grey">
<!-- FORM START -->
<x-form class="c-inv-form" id="saveInvoiceForm">
<input type="hidden" name="type" value="send">
<!-- CLIENT, PROJECT, GST, BILLING, SHIPPING ADDRESS START -->
<div class="row px-lg-4 px-md-4 px-3 pt-3">
<!-- INVOICE NUMBER START -->
<div class="col-md-4 mb-4">
<div class="form-group mb-lg-0 mb-md-0 mb-4">
<x-forms.label class="mb-12" fieldId="order_number" :fieldLabel="__('modules.orders.orderNumber')" fieldRequired="true">
</x-forms.label>
<x-forms.input-group>
<x-slot name="prepend">
<span
class="input-group-text">{{ invoice_setting()->order_prefix }}{{ invoice_setting()->order_number_separator }}{{ $zero }}</span>
</x-slot>
<input type="text" name="order_number" id="order_number"
class="form-control height-35 f-15" value="{{ is_null($lastOrder) ? 1 : $lastOrder }}">
</x-forms.input-group>
</div>
</div>
<!-- INVOICE NUMBER END -->
<!-- CLIENT START -->
<div class="col-md-4 mb-4">
<x-client-selection-dropdown :clients="$clients" :selected="null" />
</div>
<!-- CLIENT END -->
<!-- BILLING ADDRESS START -->
<div class="col-md-4 mb-4">
<div class="form-group c-inv-select mb-0">
<label class="f-14 text-dark-grey mb-12 text-capitalize w-100"
for="usr">@lang('modules.invoices.billingAddress')</label>
<p class="f-15" id="client_billing_address">
<span class="text-lightest">@lang('messages.selectCustomerForBillingAddress')</span>
</p>
</div>
</div>
<!-- SHIPPING ADDRESS START -->
<div class="col-md-4">
<div class="form-group c-inv-select mb-lg-0 mb-md-0 mb-4">
<label class="f-14 text-dark-grey mb-12 text-capitalize w-100"
for="usr">@lang('modules.invoices.shippingAddress') </label>
<p class="f-15" id="client_shipping_address">
@if (isset($estimate) && $estimate->client && $estimate->client->clientDetails->shipping_address)
{!! nl2br($estimate->client->clientDetails->shipping_address) !!}
@elseif(isset($client) && $client->clientDetails && $client->clientDetails->shipping_address)
{!! nl2br($client->clientDetails->shipping_address) !!}
@else
<a href="javascript:;" class="text-capitalize" id="show-shipping-field"><i
class="f-12 mr-2 fa fa-plus"></i>@lang('app.addShippingAddress')</a>
@endif
</p>
<p class="d-none" id="add-shipping-field">
<textarea class="form-control f-14 pt-2" rows="3" placeholder="@lang('placeholders.address')"
name="shipping_address"
id="shipping_address">@if (isset($estimate) && $estimate->client) {!! nl2br($estimate->client->clientDetails->shipping_address) !!} @endif</textarea>
</p>
</div>
</div>
<!-- SHIPPING ADDRESS END -->
<div class="col-md-4">
<div class="form-group c-inv-select mb-4">
<x-forms.label fieldId="company_address_id" :fieldLabel="__('modules.invoices.generatedBy')">
</x-forms.label>
<div class="select-others height-35 rounded">
<select class="form-control select-picker" data-live-search="true" data-size="8"
name="company_address_id" id="company_address_id">
@foreach ($companyAddresses as $item)
<option {{ $item->is_default ? 'selected' : '' }} value="{{ $item->id }}">
{{ $item->location }}</option>
@endforeach
</select>
</div>
</div>
</div>
<!-- Order Status -->
<div class="col-md-4">
<x-forms.label fieldId="status" :fieldLabel="__('app.status')" :fieldRequired="true" class="mt-0"></x-forms.label>
<select class="form-control select-picker" name="status" id="status">
<option value="pending" data-content="<i class='fa fa-circle mr-2 text-yellow'></i> @lang('app.pending') ">@lang('app.pending')</option>
<option value="on-hold" data-content="<i class='fa fa-circle mr-2 text-info'></i> @lang('app.on-hold') ">@lang('app.on-hold')</option>
<option value="failed" data-content="<i class='fa fa-circle mr-2 text-muted'></i> @lang('app.failed') ">@lang('app.failed')</option>
<option value="processing" data-content="<i class='fa fa-circle mr-2 text-blue'></i> @lang('app.processing') ">@lang('app.processing')</option>
<option value="completed" data-content="<i class='fa fa-circle mr-2 text-dark-green'></i> @lang('app.completed') ">@lang('app.completed')</option>
<option value="canceled" data-content="<i class='fa fa-circle mr-2 text-red'></i> @lang('app.canceled') ">@lang('app.canceled')</option>
</select>
</div>
<input type="hidden" id="calculate_tax" value="after_discount">
</div>
<hr class="m-0 mt-2 border-top-grey">
<div class="row px-lg-4 px-md-4 px-3 py-3">
<div class="col-md-3 d-none product-category-filter">
<div class="form-group c-inv-select mb-4">
<x-forms.input-group>
<select class="form-control select-picker" name="category_id"
id="product_category_id" data-live-search="true">
<option value="">{{ __('app.select') . ' ' . __('app.product') . ' ' . __('app.category') }}</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}">
{{ $category->category_name }}</option>
@endforeach
</select>
</x-forms.input-group>
</div>
</div>
<div class="col-md-3">
<div class="form-group c-inv-select mb-4">
<x-forms.input-group>
<select class="form-control select-picker" data-live-search="true" data-size="8" id="add-products" title="{{ __('app.menu.selectProduct') }}">
@foreach ($products as $item)
<option data-content="{{ $item->name }}" value="{{ $item->id }}">
{{ $item->name }}</option>
@endforeach
</select>
<x-slot name="preappend">
<a href="javascript:;"
class="btn btn-outline-secondary border-grey toggle-product-category"
data-toggle="tooltip" data-original-title="{{ __('modules.productCategory.filterByCategory') }}"><i class="fa fa-filter"></i></a>
</x-slot>
@if ($addProductPermission == 'all' || $addProductPermission == 'added')
<x-slot name="append">
<a href="{{ route('products.create') }}" data-redirect-url="no"
class="btn btn-outline-secondary border-grey openRightModal"
data-toggle="tooltip" data-original-title="{{ __('app.add').' '.__('modules.dashboard.newproduct') }}">@lang('app.add')</a>
</x-slot>
@endif
</x-forms.input-group>
</div>
</div>
</div>
<x-alert class="my-4 mx-4" id="alertMessage" type="danger">@lang('messages.addItem')</x-alert>
<div id="sortable">
</div>
<hr class="m-0 border-top-grey">
<!-- TOTAL, DISCOUNT START -->
<div class="d-flex px-lg-4 px-md-4 px-3 pb-3 c-inv-total">
<table width="100%" class="text-right f-14 text-capitalize">
<tbody>
<tr>
<td width="50%" class="border-0 d-lg-table d-md-table d-none"></td>
<td width="50%" class="p-0 border-0 c-inv-total-right">
<table width="100%">
<tbody>
<tr>
<td colspan="2" class="border-top-0 text-dark-grey">
@lang('modules.invoices.subTotal')</td>
<td width="30%" class="border-top-0 sub-total">0.00</td>
<input type="hidden" class="sub-total-field" name="sub_total" value="0">
</tr>
<tr>
<td width="20%" class="text-dark-grey">@lang('modules.invoices.discount')
</td>
<td width="40%" style="padding: 5px;">
<table width="100%">
<tbody>
<tr>
<td width="70%" class="c-inv-sub-padding">
<input type="number" min="0" name="discount_value"
class="form-control f-14 border-0 w-100 text-right discount_value"
placeholder="0"
value="{{ isset($estimate) ? $estimate->discount : '0' }}">
</td>
<td width="30%" align="left" class="c-inv-sub-padding">
<div
class="select-others select-tax height-35 rounded border-0">
<select class="form-control select-picker"
id="discount_type" name="discount_type">
<option @if (isset($estimate) && $estimate->discount_type == 'percent') selected @endif value="percent">%
</option>
<option @if (isset($estimate) && $estimate->discount_type == 'fixed') selected @endif value="fixed">
@lang('modules.invoices.amount')</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</td>
<td><span
id="discount_amount">{{ isset($estimate) ? number_format((float) $estimate->discount, 2, '.', '') : '0.00' }}</span>
</td>
</tr>
<tr>
<td>@lang('modules.invoices.tax')</td>
<td colspan="2" class="p-0 border-0">
<table width="100%" id="invoice-taxes">
<tr>
<td colspan="2"><span class="tax-percent">0.00</span></td>
</tr>
</table>
</td>
</tr>
<tr class="bg-amt-grey f-16 f-w-500">
<td colspan="2">@lang('modules.invoices.total')</td>
<td><span class="total">0.00</span></td>
<input type="hidden" class="total-field" name="total" value="0">
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<!-- TOTAL, DISCOUNT END -->
<!-- NOTE AND TERMS AND CONDITIONS START -->
<div class="d-flex flex-wrap px-lg-4 px-md-4 px-3 py-3">
<div class="col-md-6 col-sm-12 c-inv-note-terms p-0 mb-lg-0 mb-md-0 mb-3">
<label class="f-14 text-dark-grey mb-12 text-capitalize w-100"
for="usr">@lang('app.clientNote')</label>
<textarea class="form-control" name="note" id="note" rows="4"></textarea>
</div>
</div>
<!-- NOTE AND TERMS AND CONDITIONS END -->
<!-- CANCEL SAVE SEND START -->
<x-form-actions class="c-inv-btns d-block d-lg-flex d-md-flex">
<x-forms.button-primary id="createOrder">@lang('app.submit')</x-forms.button-primary>
<x-forms.button-cancel :link="route('orders.index')" class="ml-2 border-0 ">@lang('app.cancel')
</x-forms.button-cancel>
</x-form-actions>
<!-- CANCEL SAVE SEND END -->
</x-form>
<!-- FORM END -->
</div>
<!-- CREATE INVOICE END -->
<script>
$(document).ready(function() {
$('.toggle-product-category').click(function() {
$('.product-category-filter').toggleClass('d-none');
});
$('#product_category_id').on('change', function(){
var categoryId = $(this).val();
var url = "{{route('invoices.product_category', ':id')}}",
url = (categoryId) ? url.replace(':id', categoryId) : url.replace(':id', null);;
$.easyAjax({
url : url,
type : "GET",
container: '#saveInvoiceForm',
blockUI: true,
success: function (response) {
if (response.status == 'success') {
var options = [];
var rData = [];
rData = response.data;
$.each(rData, function(index, value) {
var selectData = '';
selectData = '<option value="' + value.id + '">' + value.name +
'</option>';
options.push(selectData);
});
$('#add-products').html(
'<option value="" class="form-control" >{{ __('app.select') . ' ' . __('app.product') }}</option>' +
options);
$('#add-products').selectpicker('refresh');
}
}
});
});
const hsn_status = {{ $invoiceSetting->hsn_sac_code_show }};
$('#client_list_id').change(function() {
var id = $(this).val();
changeClient(id);
});
function changeClient(id) {
if (id == '') {
id = 0;
}
console.log(id);
var token = "{{ csrf_token() }}";
var url = "{{ route('clients.ajax_details', ':id') }}";
url = url.replace(':id', id);
$.easyAjax({
url: url,
container: '#saveInvoiceForm',
type: "POST",
blockUI: true,
data: {
_token: token
},
success: function(response) {
if (response.status == 'success') {
if (response.data !== null) {
$('#client_billing_address').html(nl2br(response.data.client_details
.address));
$('#add-shipping-field').addClass('d-none');
$('#client_shipping_address').removeClass('d-none');
if (response.data.client_details.shipping_address === null) {
var addShippingLink =
'<a href="javascript:;" class="text-capitalize" id="show-shipping-field"><i class="f-12 mr-2 fa fa-plus"></i>@lang("app.addShippingAddress")</a>';
$('#client_shipping_address').html(addShippingLink);
} else {
$('#client_shipping_address').html(nl2br(response.data
.client_details
.shipping_address));
}
} else {
$('#client_billing_address').html(
"<span class='text-lightest'>@lang('messages.selectCustomerForBillingAddress')</span>"
);
}
} else {
var addShippingLink =
'<a href="javascript:;" class="text-capitalize" id="show-shipping-field"><i class="f-12 mr-2 fa fa-plus"></i>@lang("app.addShippingAddress")</a>';
$('#client_shipping_address').html(addShippingLink);
}
}
});
}
$('body').on('click', '#show-shipping-field', function() {
$('#add-shipping-field, #client_shipping_address').toggleClass('d-none');
});
const resetAddProductButton = () => {
$("#add-products").val('').selectpicker("refresh");
};
$('#add-products').on('changed.bs.select', function(e, clickedIndex, isSelected, previousValue) {
e.stopImmediatePropagation()
var id = $(this).val();
if (previousValue != id && id != '') {
addProduct(id);
resetAddProductButton();
}
});
function ucWord(str){
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
return str;
}
function addProduct(id) {
$.easyAjax({
url: "{{ route('orders.add_item') }}",
type: "GET",
data: {
id: id
},
blockUI: true,
success: function(response) {
if($('input[name="item_name[]"]').val() == ''){
$("#sortable .item-row").remove();
}
$(response.view).hide().appendTo("#sortable").fadeIn(500);
$('.selectpicker').selectpicker('refresh');
calculateTotal();
$('.dropify').dropify();
$('#alertMessage').hide().fadeOut(500);
var noOfRows = $(document).find('#sortable .item-row').length;
var i = $(document).find('.item_name').length - 1;
var itemRow = $(document).find('#sortable .item-row:nth-child(' + noOfRows +
') select.type');
itemRow.attr('id', 'multiselect' + i);
itemRow.attr('name', 'taxes[' + i + '][]');
$(document).find('#multiselect' + i).selectpicker();
$(document).find('#dropify' + i).dropify({
messages: dropifyMessages
});
}
});
}
$('#saveInvoiceForm').on('click', '.remove-item', function() {
$(this).closest('.item-row').fadeOut(300, function() {
$(this).remove();
$('select.customSequence').each(function(index) {
$(this).attr('name', 'taxes[' + index + '][]');
$(this).attr('id', 'multiselect' + index + '');
});
if($(document).find('#sortable .item-row').length == 0){
$('#alertMessage').show().fadeIn(500);
}
calculateTotal();
});
});
$('#createOrder').click(function() {
if (KTUtil.isMobileDevice()) {
$('.desktop-description').remove();
} else {
$('.mobile-description').remove();
}
calculateTotal();
var discount = $('#discount_amount').html();
var total = $('.sub-total-field').val();
if (parseFloat(discount) > parseFloat(total)) {
Swal.fire({
icon: 'error',
text: "{{ __('messages.discountExceed') }}",
customClass: {
confirmButton: 'btn btn-primary',
},
showClass: {
popup: 'swal2-noanimation',
backdrop: 'swal2-noanimation'
},
buttonsStyling: false
});
return false;
}
$.easyAjax({
url: "{{ route('orders.store') }}",
container: '#saveInvoiceForm',
type: "POST",
blockUI: true,
redirect: true,
file: true,
data: $('#saveInvoiceForm').serialize()
})
});
$('#saveInvoiceForm').on('click', '.remove-item', function() {
$(this).closest('.item-row').fadeOut(300, function() {
$(this).remove();
$('select.customSequence').each(function(index) {
$(this).attr('name', 'taxes[' + index + '][]');
$(this).attr('id', 'multiselect' + index + '');
});
calculateTotal();
});
});
$('#saveInvoiceForm').on('keyup', '.quantity,.cost_per_item,.item_name, .discount_value', function() {
var quantity = $(this).closest('.item-row').find('.quantity').val();
var perItemCost = $(this).closest('.item-row').find('.cost_per_item').val();
var amount = (quantity * perItemCost);
$(this).closest('.item-row').find('.amount').val(decimalupto2(amount));
$(this).closest('.item-row').find('.amount-html').html(decimalupto2(amount));
calculateTotal();
});
$('#saveInvoiceForm').on('change', '.type, #discount_type, #calculate_tax', function() {
var quantity = $(this).closest('.item-row').find('.quantity').val();
var perItemCost = $(this).closest('.item-row').find('.cost_per_item').val();
var amount = (quantity * perItemCost);
$(this).closest('.item-row').find('.amount').val(decimalupto2(amount));
$(this).closest('.item-row').find('.amount-html').html(decimalupto2(amount));
calculateTotal();
});
$('#saveInvoiceForm').on('input', '.quantity', function() {
var quantity = $(this).closest('.item-row').find('.quantity').val();
var perItemCost = $(this).closest('.item-row').find('.cost_per_item').val();
var amount = (quantity * perItemCost);
$(this).closest('.item-row').find('.amount').val(decimalupto2(amount));
$(this).closest('.item-row').find('.amount-html').html(decimalupto2(amount));
calculateTotal();
});
calculateTotal();
init(RIGHT_MODAL);
});
</script>