IMMREX7
@extends('schools.school_layout')
@section('content')
<div class="row clearfix">
<div class="col-sm-12">
<div class="card">
<div class="header">
<h2><strong>@if(isset($invoice))Edit @else Add @endif Invoice</strong></h2>
</div>
<div class="body">
{!! Form::model($invoice,['method' => 'PATCH', 'action' => ['School\Stock\InvoiceController@update', $invoice->idInvoice], 'class' => 'form-horizontal','files'=>true]) !!}
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Customer Type</label>
</div>
<div class="col-sm-6">
<div class="form-group">
{!! Form::select('customerType',[''=>'---Select---','Student'=>'Student','Staff'=>'Staff','Customer'=>'Customer'],null,['class' => 'form-control show-tick ms','required'=>'required']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Customer </label>
</div>
<div class="col-sm-6">
<div class="form-group">
@if($invoice->customerType == 'Student')
{!! Form::text('idCustomer',$invoice->student->name,['class' => 'form-control show-tick ms select2','id'=>'enrollment']) !!}
@else
@if($invoice->customerType == 'Customer')
{!! Form::text('idCustomer',$invoice->customer->customerName,['class' => 'form-control show-tick ms select2','id'=>'enrollment']) !!}
@else
{!! Form::text('idCustomer',$invoice->employee->name,['class' => 'form-control show-tick ms select2','id'=>'enrollment']) !!}
@endif
@endif
<span id='customer_error'></span>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Invoice No </label>
</div>
<div class="col-sm-3">
<div class="form-group">
{!! Form::text('invoiceNo',null,['class' => 'form-control','readonly'=>'readonly']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Date</label>
</div>
<div class="col-sm-3">
<div class="form-group">
{!! Form::text('invoiceDate',null,['class' => 'form-control datepicker','required'=>'required']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-3 form-control-label">
<label for="classname">Reference</label>
</div>
<div class="col-sm-3">
<div class="form-group">
{!! Form::text('reference',null,['class' => 'form-control']) !!}
@if ($errors->has('reference'))
<label id="minmaxlength-error" class="error" for="minmaxlength">
<strong>{{ $errors->first('reference') }}</strong>
</label>
@endif
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-3 form-control-label">
<label for="classname">Salesperson</label>
</div>
<div class="col-sm-3">
<div class="form-group">
{!! Form::text('salesperson',null,['class' => 'form-control']) !!}
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-12">
<table class="table table-bordered">
<thead>
<tr>
<th></th>
<th>Item</th>
<th>Quantity</th>
<th>Rate</th>
<th>Tax</th>
<th>Amount</th>
<th></th>
</tr>
</thead>
<tbody id="optional_list">
<?php $i =1;?>
@foreach($invoice->details as $det)
<tr>
<td class="sno">{{$i}}</td>
<td>
{!! Form::text('products['.$i.'][idProduct]',$det->product->productName,['class' => 'form-control','onchange'=>'getProductRate(this,'.$i.')']) !!}
</td>
<td>
{!! Form::text('products['.$i.'][quantity]',$det->quantity,['class' => 'form-control','required'=>'required','id'=>'qty'.$i,'onkeyup'=>'CalculateRate('.$i.')']) !!}
<span id="available_quantity{{$i}}" class="help-block"></span>
<span id="qtyerror{{$i}}" class="help-block"></span>
</td>
<td>
{!! Form::text('products['.$i.'][rate]',$det->rate,['class' => 'form-control','required'=>'required','id'=>'price1','onkeyup'=>'CalculateRate('.$i.')' ]) !!}
</td>
<td>
{!! Form::select('products['.$i.'][tax]',getProductTaxes(),$det->tax,['class' => 'form-control show-tick ms','onchange'=>'getTaxedAmount(this,'.$i.')','required'=>'required']) !!}
</td>
<td>
{!! Form::text('products['.$i.'][productTotal]',$det->productTotal,['class' => 'form-control amount','required'=>'required','id'=>'productamount'.$i]) !!}
</td>
<td></td>
</tr>
<?php $i++ ; ?>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-md-6">
</div>
<div class="col-md-6 text-right">
<div class="row clearfix">
<div class="col-sm-6 form-control-label">
<label for="classname"><strong>Sub Total</strong></label>
</div>
<div class="col-sm-6">
<div class="form-group">
{!! Form::text('subTotal',null,['class' => 'form-control','id'=>'subtotal']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-6 form-control-label">
<label for="classname">Discount</label>
</div>
<div class="col-sm-6">
<div class="form-group">
{!! Form::text('discountTotal',null,['class' => 'form-control','id'=>'discount','onblur'=>'calculateDiscount()']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-6 form-control-label">
<label for="classname">Adjustment</label>
</div>
<div class="col-sm-6">
<div class="form-group">
{!! Form::text('adjustment',null,['class' => 'form-control','id'=>'adjustment','onblur'=>'calculateAdjustment()']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-6 form-control-label">
<label for="classname"><strong>Total Amount</strong></label>
</div>
<div class="col-sm-6">
<div class="form-group">
{!! Form::text('totalAmount',null,['class' => 'form-control','id'=>'netamt']) !!}
</div>
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-md-6">
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">Customer Note</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::textarea('notes',null,['class' => 'form-control','size'=>'30x2']) !!}
@if ($errors->has('notes'))
<label id="minmaxlength-error" class="error" for="minmaxlength">
<strong>{{ $errors->first('notes') }}</strong>
</label>
@endif
</div>
</div>
</div>
</div>
<div class="col-md-6 text-right">
<div class="row clearfix">
<div class="col-sm-3 form-control-label">
<label for="classname"><strong>Free Allowed</strong></label>
</div>
<div class="col-sm-4">
<div class="form-group">
<input type="checkbox" id="free_allowed" name="freeAllowed" class="checkbox-inline" onchange="valueChanged()">
</div>
</div>
</div>
<div id='notfree'>
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">Payable Amount</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::text('amountPayable',null,['class' => 'form-control','id'=>'payableamt']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-4 form-control-label required">
<label for="classname">Pay Amount</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::text('paidAmount',null,['class' => 'form-control','id'=>'paidamt','onblur'=>'calculateBalance()']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">Balance Amount</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::text('balanceAmount',null,['class' => 'form-control','id'=>'balance']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">Select Payment Mode</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::select('paymentMode',['Unpaid' => 'Unpaid']+ payMode(),null,['class' => 'form-control show-tick ms paymentMode','id'=>'paymode', 'required' => 'required']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">UTR Number</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::text('utr',null,['class' => 'form-control']) !!}
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">UTR Screenshot/File</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::file('utrFile',null,['class' => 'form-control']) !!}
</div>
</div>
</div>
<div class="row clearfix cardpayment">
<div class="col-sm-4 form-control-label">
<label for="classname">CardNo./Trans ID</label>
</div>
<div class="col-sm-8">
<div class="form-group">
<input type="text" name="cardNo" class="form-control">
<span id='cardnoerror'></span>
</div>
</div>
</div>
<div class="row bankaccount" style="display: none;">
<div class="col-sm-12">
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Bank Accounts</label>
</div>
<div class="col-sm-9">
<div class="form-group">
{!! Form::select('idAccount',fetchAccounts(),null,['class' => 'form-control show-tick ms select2']) !!}
<span id='bankerror'></span>
</div>
</div>
</div>
</div>
</div>
<div class="row otherpaymode">
<div class="col-sm-12">
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Bank</label>
</div>
<div class="col-sm-3">
<div class="form-group">
{!! Form::select('idBank',banks(),null,['class' => 'form-control show-tick ms select2']) !!}
<span id='bankerror'></span>
</div>
</div>
<div class="col-sm-3 form-control-label required">
<label for="classname">Cheque No. / DD No.</label>
</div>
<div class="col-sm-3">
<div class="form-group">
<input type="text" name="chequeNo" class="form-control">
<span id='chequenoerror'></span>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-sm-3 form-control-label required">
<label for="classname">Cheque / DD Date</label>
</div>
<div class="col-sm-3">
<div class="form-group">
<input type="text" name="chequeDate" class="form-control datepicker">
<span id='chequedateerror'></span>
</div>
</div>
<div class="col-sm-3 form-control-label required">
<label for="classname">Amount</label>
</div>
<div class="col-sm-3">
<div class="form-group">
<input type="text" name="chequeAmount" class="form-control" onkeypress = 'return onlyNumbersandSpecialChar(event)'>
<span id='amounterror'></span>
</div>
</div>
</div>
</div>
</div>
</div>
<div id='free' style="display: none;">
<div class="row clearfix">
<div class="col-sm-4 form-control-label">
<label for="classname">Purpose</label>
</div>
<div class="col-sm-8">
<div class="form-group">
{!! Form::textarea('purpose',null,['class' => 'form-control','size'=>'30x2']) !!}
@if ($errors->has('purpose'))
<label id="minmaxlength-error" class="error" for="minmaxlength">
<strong>{{ $errors->first('purpose') }}</strong>
</label>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
<div id="errors"></div>
<div class="row clearfix">
<div class="col-sm-8 offset-sm-2">
@if(isset($invoice))
{!! Form::submit('Print',['class' => 'btn btn-raised btn-primary btn-round waves-effect']) !!}
@endif
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
</div>
@stop
@section('script')
<script>
$(document).ready(function() {
$('select[name="customerType"]').on('change', function() {
var cardholderVal = $(this).val();
var schid = {{Auth::guard('school')->user()->idSchool}}
if(cardholderVal == 'Student') {
$.ajax({
url: "{{url('/school/') }}"+'/' +schid + "/students",
type: "GET",
dataType: "json",
success:function(data) {
$('#enrollment').empty();
$('#enrollment').append('<option value="">--- Select ---</option>');
$.each(data, function(key, value) {
$('#enrollment').append('<option value="'+ key +'">'+ value +'</option>');
});
}
});
}else if(cardholderVal == 'Customer') {
$.ajax({
url: "{{url('/school/') }}"+'/' +schid + "/customer",
type: "GET",
dataType: "json",
success:function(data) {
$('#enrollment').empty();
$('#enrollment').append('<option value="">--- Select ---</option>');
$.each(data, function(key, value) {
$('#enrollment').append('<option value="'+ key +'">'+ value +'</option>');
});
}
});
}else{
$.ajax({
url: "{{url('/school/') }}"+'/' +schid + "/employees",
type: "GET",
dataType: "json",
success:function(data) {
$('#enrollment').empty();
$('#enrollment').append('<option value="">--- Select ---</option>');
$.each(data, function(key, value) {
$('#enrollment').append('<option value="'+ key +'">'+ value +'</option>');
});
}
});
}
});
});
function getProductRate(selected,keyid){
var val = selected.value;
if(val) {
$.ajax({
url: "{{url('/school/products') }}"+'/' +val,
type: "GET",
dataType: "json",
success:function(data) {
// $('#price'+keyid).empty();
$('#price'+keyid).val(data['salePrice']);
}
});
$.ajax({
url: "{{url('/school/prodinstock') }}"+'/' +val,
type: "GET",
dataType: "json",
success:function(data) {
// $('#price'+keyid).empty();
$('#available_quantity'+keyid).html("Available Quantity : " + data['quantityInStock']);
}
});
}
}
function valueChanged()
{
if($("#free_allowed").is(":checked")) {
$("#free").show();
$("#notfree").hide();
$('#paidamt').prop('required',false);
}else{
$("#notfree").show();
$("#free").hide();
$('#paidamt').prop('required',true);
}
}
function CalculateRate($key){
var rate = '#price' + $key;
var rt = $(rate).val();
var qty = '#qty' + $key;
var qt = $(qty).val();
var amt = rt * qt;
var amount = '#productamount' + $key;
$(amount).val(amt.toFixed(2));
var grandTotal = 0;
$(".amount").each(function (){
var stval = parseFloat($(this).val());
grandTotal += isNaN(stval) ? 0 : stval;
});
$('#subtotal').val(grandTotal.toFixed(2));
// $('#compamount').val(grandTotal.toFixed(2));
var subtotal = $('#subtotal').val(grandTotal.toFixed(2));
$('#netamt').val(grandTotal.toFixed(2));
$('#payableamt').val(grandTotal.toFixed(2));
}
function Calculation($key){
var rate = '#price' + $key;
var rt = $(rate).val();
var qty = '#qty' + $key;
var qt = $(qty).val();
var amt = rt * qt;
var amount = '#productamount' + $key;
$(amount).val(amt.toFixed(2));
var grandTotal = 0;
$(".amount").each(function (){
var stval = parseFloat($(this).val());
grandTotal += isNaN(stval) ? 0 : stval;
});
$('#subtotal').val(grandTotal.toFixed(2));
// $('#compamount').val(grandTotal.toFixed(2));
var subtotal = $('#subtotal').val(grandTotal.toFixed(2));
$('#netamt').val(grandTotal.toFixed(2));
$('#payableamt').val(grandTotal.toFixed(2));
}
function getTaxedAmount(selected,keyid){
var val = selected.value;
if(val) {
var rate = '#price' + keyid;
var rt = $(rate).val();
var qty = '#qty' + keyid;
var qt = $(qty).val();
var amt = rt * qt;
var tax = amt*val/100;
var taxedamt = amt + tax;
var amount = '#productamount' + keyid;
$(amount).val(taxedamt.toFixed(2));
var grandTotal = 0;
$(".amount").each(function (){
var stval = parseFloat($(this).val());
grandTotal += isNaN(stval) ? 0 : stval;
});
$('#subtotal').val(grandTotal.toFixed(2));
// $('#compamount').val(grandTotal.toFixed(2));
var subtotal = $('#subtotal').val(grandTotal.toFixed(2));
$('#netamt').val(grandTotal.toFixed(2));
$('#payableamt').val(grandTotal.toFixed(2));
}
}
function calculateDiscount(){
var discount = $('#discount').val();
var adjustment = $('#adjustment').val();
var netamt = $('#subtotal').val();
var total = netamt - discount - adjustment;
$('#netamt').val(total.toFixed(2));
$('#payableamt').val(total.toFixed(2));
}
function calculateBalance(){
var paid = $('#paidamt').val();
var netamt = $('#payableamt').val();
var balance = netamt - paid;
$('#balance').val(balance.toFixed(2));
}
function calculateAdjustment (){
var discount = $('#discount').val();
var adjustment = $('#adjustment').val();
var netamt = $('#subtotal').val();
var total = netamt - discount - adjustment;
$('#netamt').val(total.toFixed(2));
$('#payableamt').val(total.toFixed(2));
}
$('.otherpaymode').hide();
$('.cardpayment').hide();
$('#paymode').change(function() {
var val = $(this).val();
$('.bankaccount').hide();
$('#paidamt').prop('required',true);
$('#paidamt').prop('readonly',false);
if((val == 'Cheque')){
$('.cardpayment').hide();
$('.otherpaymode').show();
}else if((val == 'Unpaid')){
$('.cardpayment').hide();
$('.otherpaymode').hide();
$('#paidamt').val('0.00');
$('#paidamt').prop('required',false);
$('#paidamt').prop('readonly',true);
calculateBalance();
}else if(val == 'DD'){
$('.cardpayment').hide();
$('.otherpaymode').show();
}else if(val == 'Card'){
$('.cardpayment').show();
$('.otherpaymode').hide();
}else if(val == 'IMPS'){
$('.cardpayment').hide();
$('.otherpaymode').hide();
$('.bankaccount').show();
}else{
$('.otherpaymode').hide();
$('.cardpayment').hide();
}
});
$(document).on('click', '.js-sweetalert', function (e) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
e.preventDefault();
var id = $(this).data('id');
swal({
title: "Are you sure?",
text: "Are You sure you want to delete this Invoice!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: true
},
function() {
// console.log('here');
$.ajax({
type: "DELETE",
url: "{{url('/school/invoices/')}}" +"/"+id,
data: {id:id}
})
.done(function(data) {
swal({
title: "Deleted",
text: "Invoice has been successfully deleted",
type: "success"
},function() {
location.reload();
});
})
.error(function(data) {
swal("Oops", "We couldn't connect to the server!", "error");
});
return false;
});
});
// Saving form data
$('#form').on('submit',function(e){
$.ajaxSetup({
header:$('meta[name="_token"]').attr('content')
});
var formData = new FormData($('#form')[0]);
$("#submit-btn").prop('disabled', true);
$.ajax({
type:"POST",
url: "{{url('school/invoices') }}",
processData: false,
contentType: false,
data:formData,
dataType: 'json',
success:function(data){
if( data[Object.keys(data)[0]] === 'SUCCESS' ){
$("#submit-btn").prop('disabled', true);
window.location = "{{url('school/invoices')}}";
}
else { //False Case: With error msg
$("#msg").html(data); //$msg is the id of empty msg
}
},
error: function(data){
if( data.status === 422 ) {
$("#submit-btn").prop('disabled', false);
var errors = data.responseJSON.errors;
var errorHtml = '<div class="alert alert-danger"><ul>';
$.each( errors, function( key, value ) {
if (key.split(".")[1] + '.idProduct' === key.split(".")[1] + '.' +key.split(".")[2])
{
errorrate = '<p class="help-block">' + value + '</p>';
$( '#producterror'+key.split(".")[1] ).html( errorrate );
}else{
if (key.split(".")[1] + '.noitem' === key.split(".")[1] + '.' +key.split(".")[2])
{
errorrate = '<p class="help-block">' + value + '</p>';
$( '#qtyerror'+key.split(".")[1] ).html( errorrate );
}else{
if (key.split(".")[1] + '.aval_qty' === key.split(".")[1] + '.' +key.split(".")[2])
{
errorrate = '<p class="help-block">' + value + '</p>';
$( '#qtyerror'+key.split(".")[1] ).html( errorrate );
}else{
errorHtml += '<li>' + value + '</li>';
}
}
}
});
errorHtml += '<ul></div>';
$('#errors').html(errorHtml);
if(errors['idCustomer']=== undefined){
$( '#customer_error' ).empty();
}else{
errorname = '<span class="help-block"><strong>'+errors['idCustomer']+'</strong></span>';
$( '#customer_error' ).html( errorname );
}
}
}
});
return false;
});
</script>
@stop
Copyright © 2021 -