���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /home/zhaagvlk/web.zhaap.com/resources__1b5d5ff/views/proposal/edit.blade.php
���ѧ٧ѧ�
@extends('layouts.admin') @section('page-title') {{ __('Proposal Edit') }} @endsection @push('script-page') <script src="{{ asset('js/jquery-ui.min.js') }}"></script> <script src="{{ asset('js/jquery.repeater.min.js') }}"></script> <script src="{{ asset('js/jquery-searchbox.js') }}"></script> <script> var selector = "body"; if ($(selector + " .repeater").length) { var $dragAndDrop = $("body .repeaer tbody").sortable({ handle: '.sort-handler' }); var $repeater = $(selector + ' .repeater').repeater({ initEmpty: true, defaultValues: { 'status': 1 }, show: function() { $(this).slideDown(); var file_uploads = $(this).find('input.multi'); if (file_uploads.length) { $(this).find('input.multi').MultiFile({ max: 3, accept: 'png|jpg|jpeg', max_size: 2048 }); } // for item SearchBox ( this function is custom Js ) JsSearchBox(); // if($('.select2').length) { // $('.select2').select2(); // } }, hide: function(deleteElement) { $(this).slideUp(deleteElement); $(this).remove(); var inputs = $(".amount"); var subTotal = 0; for (var i = 0; i < inputs.length; i++) { subTotal = parseFloat(subTotal) + parseFloat($(inputs[i]).html()); } $('.subTotal').html(subTotal.toFixed(2)); $('.totalAmount').html(subTotal.toFixed(2)); }, ready: function(setIndexes) { $dragAndDrop.on('drop', setIndexes); } , isFirstItemUndeletable: true }); var value = $(selector + " .repeater").attr('data-value'); if (typeof value != 'undefined' && value.length != 0) { value = JSON.parse(value); $repeater.setList(value); for (var i = 0; i < value.length; i++) { var tr = $('#sortable-table .id[value="' + value[i].id + '"]').parent(); tr.find('.item').val(value[i].product_id); changeItem(tr.find('.item')); } } } $(document).on('change', '#customer', function() { $('#customer_detail').removeClass('d-none'); $('#customer_detail').addClass('d-block'); $('#customer-box').removeClass('d-block'); $('#customer-box').addClass('d-none'); var id = $(this).val(); var url = $(this).data('url'); $.ajax({ url: url, type: 'POST', headers: { 'X-CSRF-TOKEN': jQuery('#token').val() }, data: { 'id': id }, cache: false, success: function(data) { if (data != '') { $('#customer_detail').html(data); } else { $('#customer-box').removeClass('d-none'); $('#customer-box').addClass('d-block'); $('#customer_detail').removeClass('d-block'); $('#customer_detail').addClass('d-none'); } }, }); }); $(document).on('click', '#remove', function() { $('#customer-box').removeClass('d-none'); $('#customer-box').addClass('d-block'); $('#customer_detail').removeClass('d-block'); $('#customer_detail').addClass('d-none'); }) $(document).on('change', '.item', function() { changeItem($(this)); }); var proposal_id = '{{ $proposal->id }}'; function changeItem(element) { var iteams_id = element.val(); var url = element.data('url'); var el = element; $.ajax({ url: url, type: 'POST', headers: { 'X-CSRF-TOKEN': jQuery('#token').val() }, data: { 'product_id': iteams_id }, cache: false, success: function(data) { var item = JSON.parse(data); $.ajax({ url: '{{ route('proposal.items') }}', type: 'GET', headers: { 'X-CSRF-TOKEN': jQuery('#token').val() }, data: { 'proposal_id': proposal_id, 'product_id': iteams_id, }, cache: false, success: function(data) { var proposalItems = JSON.parse(data); if (proposalItems != null) { var amount = (proposalItems.price * proposalItems.quantity); $(el.parent().parent().parent().find('.quantity')).val(proposalItems .quantity); $(el.parent().parent().parent().find('.price')).val(proposalItems .price); $(el.parent().parent().parent().find('.discount')).val(proposalItems .discount); $(el.parent().parent().parent().find('.pro_description')).val( proposalItems.description); } else { $(el.parent().parent().parent().find('.quantity')).val(1); $(el.parent().parent().parent().find('.price')).val(item.product .sale_price); $(el.parent().parent().parent().find('.discount')).val(0); $(el.parent().parent().parent().find('.pro_description')).val(item .product.description); } var taxes = ''; var tax = []; var totalItemTaxRate = 0; for (var i = 0; i < item.taxes.length; i++) { taxes += '<span class="badge bg-primary p-2 px-3 rounded mt-1 mr-1">' + item.taxes[i].name + ' ' + '(' + item.taxes[i].rate + '%)' + '</span>'; tax.push(item.taxes[i].id); totalItemTaxRate += parseFloat(item.taxes[i].rate); } var discount = $(el.parent().parent().parent().find('.discount')).val(); if (proposalItems != null) { var itemTaxPrice = parseFloat((totalItemTaxRate / 100)) * parseFloat((proposalItems.price * proposalItems.quantity) - discount); } else { var itemTaxPrice = parseFloat((totalItemTaxRate / 100)) * parseFloat((item.product.sale_price * 1) - discount); } $(el.parent().parent().parent().find('.itemTaxPrice')).val(itemTaxPrice .toFixed(2)); $(el.parent().parent().parent().find('.itemTaxRate')).val( totalItemTaxRate.toFixed(2)); $(el.parent().parent().parent().find('.taxes')).html(taxes); $(el.parent().parent().parent().find('.tax')).val(tax); $(el.parent().parent().parent().find('.unit')).html(item.unit); // $(el.parent().parent().parent().find('.discount')).val(item.discount); var inputs = $(".amount"); var subTotal = 0; for (var i = 0; i < inputs.length; i++) { subTotal = parseFloat(subTotal) + parseFloat($(inputs[i]).html()); } var totalItemPrice = 0; var inputs_quantity = $(".quantity"); var priceInput = $('.price'); for (var j = 0; j < priceInput.length; j++) { totalItemPrice += (parseFloat(priceInput[j].value) * parseFloat( inputs_quantity[j].value)); } var totalItemTaxPrice = 0; var itemTaxPriceInput = $('.itemTaxPrice'); for (var j = 0; j < itemTaxPriceInput.length; j++) { totalItemTaxPrice += parseFloat(itemTaxPriceInput[j].value); if (proposalItems != null) { $(el.parent().parent().parent().find('.amount')).html( parseFloat(amount) + parseFloat(itemTaxPrice) - parseFloat(discount)); } else { $(el.parent().parent().parent().find('.amount')).html( parseFloat(item.totalAmount) + parseFloat(itemTaxPrice)); } } var totalItemDiscountPrice = 0; var itemDiscountPriceInput = $('.discount'); for (var k = 0; k < itemDiscountPriceInput.length; k++) { totalItemDiscountPrice += parseFloat(itemDiscountPriceInput[k] .value); } $('.subTotal').html(totalItemPrice.toFixed(2)); $('.totalTax').html(totalItemTaxPrice.toFixed(2)); $('.totalAmount').html((parseFloat(totalItemPrice) - parseFloat( totalItemDiscountPrice) + parseFloat(totalItemTaxPrice)) .toFixed(2)); $('.totalDiscount').html(totalItemDiscountPrice.toFixed(2)); } }); }, }); } $(document).on('keyup', '.quantity', function() { var quntityTotalTaxPrice = 0; var el = $(this).parent().parent().parent().parent(); var quantity = $(this).val(); var price = $(el.find('.price')).val(); var discount = $(el.find('.discount')).val(); if (discount.length <= 0) { discount = 0; } var totalItemPrice = (quantity * price) - discount; var amount = (totalItemPrice); var totalItemTaxRate = $(el.find('.itemTaxRate')).val(); var itemTaxPrice = parseFloat((totalItemTaxRate / 100) * (totalItemPrice)); $(el.find('.itemTaxPrice')).val(itemTaxPrice.toFixed(2)); $(el.find('.amount')).html(parseFloat(itemTaxPrice) + parseFloat(amount)); var totalItemTaxPrice = 0; var itemTaxPriceInput = $('.itemTaxPrice'); for (var j = 0; j < itemTaxPriceInput.length; j++) { totalItemTaxPrice += parseFloat(itemTaxPriceInput[j].value); } var totalItemPrice = 0; var inputs_quantity = $(".quantity"); var priceInput = $('.price'); for (var j = 0; j < priceInput.length; j++) { totalItemPrice += (parseFloat(priceInput[j].value) * parseFloat(inputs_quantity[j].value)); } var inputs = $(".amount"); var subTotal = 0; for (var i = 0; i < inputs.length; i++) { subTotal = parseFloat(subTotal) + parseFloat($(inputs[i]).html()); } $('.subTotal').html(totalItemPrice.toFixed(2)); $('.totalTax').html(totalItemTaxPrice.toFixed(2)); $('.totalAmount').html((parseFloat(subTotal)).toFixed(2)); }) $(document).on('keyup change', '.price', function() { var el = $(this).parent().parent().parent().parent(); var price = $(this).val(); var quantity = $(el.find('.quantity')).val(); var discount = $(el.find('.discount')).val(); if (discount.length <= 0) { discount = 0; } var totalItemPrice = (quantity * price) - discount; var amount = (totalItemPrice); var totalItemTaxRate = $(el.find('.itemTaxRate')).val(); var itemTaxPrice = parseFloat((totalItemTaxRate / 100) * (totalItemPrice)); $(el.find('.itemTaxPrice')).val(itemTaxPrice.toFixed(2)); $(el.find('.amount')).html(parseFloat(itemTaxPrice) + parseFloat(amount)); var totalItemTaxPrice = 0; var itemTaxPriceInput = $('.itemTaxPrice'); for (var j = 0; j < itemTaxPriceInput.length; j++) { totalItemTaxPrice += parseFloat(itemTaxPriceInput[j].value); } var totalItemPrice = 0; var inputs_quantity = $(".quantity"); var priceInput = $('.price'); for (var j = 0; j < priceInput.length; j++) { totalItemPrice += (parseFloat(priceInput[j].value) * parseFloat(inputs_quantity[j].value)); } var inputs = $(".amount"); var subTotal = 0; for (var i = 0; i < inputs.length; i++) { subTotal = parseFloat(subTotal) + parseFloat($(inputs[i]).html()); } $('.subTotal').html(totalItemPrice.toFixed(2)); $('.totalTax').html(totalItemTaxPrice.toFixed(2)); $('.totalAmount').html((parseFloat(subTotal)).toFixed(2)); }) $(document).on('keyup change', '.discount', function() { var el = $(this).parent().parent().parent(); var discount = $(this).val(); if (discount.length <= 0) { discount = 0; } var price = $(el.find('.price')).val(); var quantity = $(el.find('.quantity')).val(); var totalItemPrice = (quantity * price) - discount; var amount = (totalItemPrice); var totalItemTaxRate = $(el.find('.itemTaxRate')).val(); var itemTaxPrice = parseFloat((totalItemTaxRate / 100) * (totalItemPrice)); $(el.find('.itemTaxPrice')).val(itemTaxPrice.toFixed(2)); $(el.find('.amount')).html(parseFloat(itemTaxPrice) + parseFloat(amount)); var totalItemTaxPrice = 0; var itemTaxPriceInput = $('.itemTaxPrice'); for (var j = 0; j < itemTaxPriceInput.length; j++) { totalItemTaxPrice += parseFloat(itemTaxPriceInput[j].value); } var totalItemPrice = 0; var inputs_quantity = $(".quantity"); var priceInput = $('.price'); for (var j = 0; j < priceInput.length; j++) { totalItemPrice += (parseFloat(priceInput[j].value) * parseFloat(inputs_quantity[j].value)); } var inputs = $(".amount"); var subTotal = 0; for (var i = 0; i < inputs.length; i++) { subTotal = parseFloat(subTotal) + parseFloat($(inputs[i]).html()); } var totalItemDiscountPrice = 0; var itemDiscountPriceInput = $('.discount'); for (var k = 0; k < itemDiscountPriceInput.length; k++) { totalItemDiscountPrice += parseFloat(itemDiscountPriceInput[k].value); } $('.subTotal').html(totalItemPrice.toFixed(2)); $('.totalTax').html(totalItemTaxPrice.toFixed(2)); $('.totalAmount').html((parseFloat(subTotal)).toFixed(2)); $('.totalDiscount').html(totalItemDiscountPrice.toFixed(2)); }) $(document).on('click', '[data-repeater-create]', function() { $('.item :selected').each(function() { var id = $(this).val(); $(".item option[value=" + id + "]").prop("disabled", true); }); }) $(document).on('click', '[data-repeater-delete]', function() { // $('.delete_item').click(function () { if (confirm('Are you sure you want to delete this element?')) { var el = $(this).parent().parent(); var id = $(el.find('.id')).val(); $.ajax({ url: '{{ route('proposal.product.destroy') }}', type: 'POST', headers: { 'X-CSRF-TOKEN': jQuery('#token').val() }, data: { 'id': id }, cache: false, success: function(data) { }, }); } }); </script> <script> $(document).on('click', '[data-repeater-delete]', function() { $(".price").change(); $(".discount").change(); }); // for item SearchBox ( this function is custom Js ) JsSearchBox(); </script> <script> setTimeout(() => { $('#due_date').trigger('click'); }, 1500); </script> @endpush @section('breadcrumb') <li class="breadcrumb-item"><a href="{{ route('dashboard') }}">{{ __('Dashboard') }}</a></li> <li class="breadcrumb-item"><a href="{{ route('proposal.index') }}">{{ __('Proposal') }}</a></li> <li class="breadcrumb-item">{{ AUth::user()->proposalNumberFormat($proposal->proposal_id) }}</li> @endsection @section('content') <div class="row"> {{ Form::model($proposal, ['route' => ['proposal.update', $proposal->id], 'method' => 'PUT', 'class' => 'w-100']) }} <div class="col-12"> <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}"> <div class="card"> <div class="card-body"> <div class="row"> <div class="col-md-6"> <div class="form-group" id="customer-box"> {{ Form::label('customer_id', __('Customer'), ['class' => 'form-label']) }} {{ Form::select('customer_id', $customers, null, ['class' => 'form-control select ', 'id' => 'customer', 'data-url' => route('proposal.customer'), 'required' => 'required']) }} </div> <div id="customer_detail" class="d-none"> </div> </div> <div class="col-md-6"> <div class="row"> <div class="col-md-6"> <div class="form-group"> {{ Form::label('issue_date', __('Issue Date'), ['class' => 'form-label']) }} <div class="form-icon-user"> {{ Form::date('issue_date', null, ['class' => 'form-control', 'required' => 'required']) }} </div> </div> </div> <div class="col-md-6"> {{ Form::label('category_id', __('Category'), ['class' => 'form-label']) }} {{ Form::select('category_id', $category, null, ['class' => 'form-control select', 'required' => 'required']) }} </div> <div class="col-md-6"> <div class="form-group"> {{ Form::label('proposal_number', __('Proposal Number'), ['class' => 'form-label']) }} <div class="form-icon-user"> <input type="text" class="form-control" value="{{ $proposal_number }}" readonly> </div> </div> </div> {{-- <div class="col-md-6"> --}} {{-- <div class="form-check custom-checkbox mt-4"> --}} {{-- <input class="form-check-input" type="checkbox" name="discount_apply" id="discount_apply" {{$proposal->discount_apply==1?'checked':''}}> --}} {{-- <label class="form-check-label " for="discount_apply">{{__('Discount Apply')}}</label> --}} {{-- </div> --}} {{-- </div> --}} {{-- <div class="col-md-6"> --}} {{-- <div class="form-group"> --}} {{-- {{Form::label('sku',__('SKU')) }} --}} {{-- {!!Form::text('sku', null,array('class' => 'form-control','required'=>'required')) !!} --}} {{-- </div> --}} {{-- </div> --}} @if (!$customFields->isEmpty()) <div class="col-md-6"> <div class="tab-pane fade show" id="tab-2" role="tabpanel"> @include('customFields.formBuilder') </div> </div> @endif </div> </div> </div> </div> </div> </div> <div class="col-12"> <h5 class="d-inline-block mb-4">{{ __('Product & Services') }}</h5> <div class="card repeater" data-value='{!! json_encode($proposal->items) !!}'> <div class="item-section py-2"> <div class="row justify-content-between align-items-center"> <div class="col-md-12 d-flex align-items-center justify-content-between justify-content-md-end"> <div class="all-button-box me-2"> <a href="javascript:void(0)" data-repeater-create="" class="btn btn-primary" data-bs-toggle="modal" data-target="#add-bank"> <i class="ti ti-plus"></i> {{ __('Add Item') }} </a> </div> </div> </div> </div> <div class="card-body table-border-style"> <div class="table-responsive"> <table class="table mb-0" data-repeater-list="items" id="sortable-table"> <thead> <tr> <th>{{ __('Items') }}</th> <th>{{ __('Quantity') }}</th> <th>{{ __('Price') }} </th> <th>{{ __('Discount') }}</th> <th>{{ __('Tax') }} (%)</th> <th class="text-end">{{ __('Amount') }} <br><small class="text-danger font-weight-bold">{{ __('after tax & discount') }}</small> </th> <th></th> </tr> </thead> <tbody class="ui-sortable" data-repeater-item> <tr> {{ Form::hidden('id', null, ['class' => 'form-control id']) }} <td width="25%" class="form-group pt-0 flex-nowrap"> {{ Form::select('item', $product_services, null, ['class' => 'form-control select item', 'data-url' => route('proposal.product')]) }} </td> <td> <div class="form-group price-input input-group search-form flex-nowrap"> {{ Form::text('quantity', null, ['class' => 'form-control quantity', 'required' => 'required', 'placeholder' => __('Qty'), 'required' => 'required']) }} <span class="unit input-group-text bg-transparent"></span> </div> </td> <td> <div class="form-group price-input input-group search-form flex-nowrap"> {{ Form::text('price', null, ['class' => 'form-control price', 'required' => 'required', 'placeholder' => __('Price'), 'required' => 'required']) }} <span class="input-group-text bg-transparent">{{ \Auth::user()->currencySymbol() }}</span> </div> </td> <td> <div class="form-group price-input input-group search-form flex-nowrap"> {{ Form::text('discount', null, ['class' => 'form-control discount', 'required' => 'required', 'placeholder' => __('Discount')]) }} <span class="input-group-text bg-transparent">{{ \Auth::user()->currencySymbol() }}</span> </div> </td> <td> <div class="form-group"> <div class="input-group flex-nowrap"> <div class="taxes"></div> {{ Form::hidden('tax', '', ['class' => 'form-control tax']) }} {{ Form::hidden('itemTaxPrice', '', ['class' => 'form-control itemTaxPrice']) }} {{ Form::hidden('itemTaxRate', '', ['class' => 'form-control itemTaxRate']) }} </div> </div> </td> <td class="text-end amount">0.00</td> <td> @can('delete proposal product') <a href="#" class="ti ti-trash text-white repeater-action-btn bg-danger ms-2" data-repeater-delete></a> @endcan </td> </tr> <tr> <td colspan="2"> <div class="form-group"> {{ Form::textarea('description', null, ['class' => 'form-control pro_description', 'rows' => '2', 'placeholder' => __('Description')]) }} </div> </td> <td colspan="5"></td> </tr> </tbody> <tfoot> <tr> <td> </td> <td> </td> <td> </td> <td></td> <td><strong>{{ __('Sub Total') }} ({{ \Auth::user()->currencySymbol() }})</strong> </td> <td class="text-end subTotal">0.00</td> <td></td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td></td> <td><strong>{{ __('Discount') }} ({{ \Auth::user()->currencySymbol() }})</strong></td> <td class="text-end totalDiscount">0.00</td> <td></td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td></td> <td><strong>{{ __('Tax') }} ({{ \Auth::user()->currencySymbol() }})</strong></td> <td class="text-end totalTax">0.00</td> <td></td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td class="blue-text border-none"><strong>{{ __('Total Amount') }} ({{ \Auth::user()->currencySymbol() }})</strong></td> <td class="text-end totalAmount blue-text border-none">0.00</td> <td></td> </tr> </tfoot> </table> </div> </div> </div> </div> <div class="modal-footer"> <input type="button" value="{{ __('Cancel') }}" onclick="location.href = '{{ route('proposal.index') }}';" class="btn btn-light mx-3"> <input type="submit" value="{{ __('Update') }}" class="btn btn-primary"> </div> {{ Form::close() }} </div> @endsection
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | ���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��: 0 |
proxy
|
phpinfo
|
���ѧ����ۧܧ�