/
home
/
sjslayjy
/
public_html
/
tabson
/
resources
/
views
/
dashboard
/
bom
/
Upload File
HOME
@extends('dashboard.layouts.app') @section('title','Edit Bill Of Material') @section('style') <style type="text/css"> span.close-now { background: red; width: 25px; height: 25px; display: block; text-align: center; border-radius: 50%; padding: 3px; color: #fff; margin-top: 30px; } </style> @endsection @section('content') <div class="main-content"> <div class="main-content-inner"> <div class="breadcrumbs ace-save-state" id="breadcrumbs"> <ul class="breadcrumb"> <li> <i class="ace-icon fa fa-home home-icon"></i> <a href="#">Home</a> </li> <li class="active">Edit Bill Of Material</li> </ul> </div> <div class="page-content"> <div class="row"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">Edit Bill Of Material</h3> </div> <div class="panel-body"> <form action="{{ URL('/user/bill-of-material/'.$billOfMaterial->id.'/update') }}" role="form" method="post" id="editBillOfMaterialForm" enctype="multipart/form-data"> {{csrf_field()}} <div class="row grid-margin"> <div class="col-lg-3"> <div class="form-group"> <label>BOM Submitted By :</label> <input type="text" id="requested_by" value="{{ $billOfMaterial->requested_by }}" name="requested_by" onkeyup="get_requested_by(this)" placeholder="Enter Requestor Name" class="form-control"> </div> </div> <div class="col-lg-3"> <div class="form-group"> <label for="module_id">BOM Category :</label> <select class="form-control e1" id="project_category" name="project_category" onchange="get_project_category(this)"> <option value="">Select Project Category</option> @foreach($project_categories as $project_category) <option value="{{$project_category->id}}" {{ $billOfMaterial->project_category == $project_category->name ? 'selected' : '' }}>{{$project_category->name}}</option> @endforeach </select> <span class="label label-danger" id="add_project_category_error" style="display: none;"></span> </div> </div> <div class="col-lg-3"> <div class="form-group"> <label>BOM Product Name:</label> <select class="form-control e1" id="product" name="product" onchange="get_product(this)"> <option value="">Select Product</option> @foreach($products as $product) <option value="{{$product->id}}" {{ $billOfMaterial->product_id == $product->product_name ? 'selected' : '' }}>{{$product->product_name}}</option> @endforeach </select> <span class="label label-danger" id="add_product_error" style="display: none;"></span> </div> </div> <div class="col-lg-3"> <div class="form-group"> <label>Business Unit :</label> <select class="form-control e1" id="business_unit" name="business_unit" onchange="get_business_unit(this)"> <option value="">Select Business Unit</option> @foreach($business_units as $business_unit) <option value="{{$business_unit->id}}" {{ $billOfMaterial->business_unit == $business_unit->id ? 'selected' : '' }}>{{$business_unit->name}} - {{$business_unit->short_name}}</option> @endforeach </select> <span class="label label-danger" id="add_business_unit_error" style="display: none;"></span> </div> </div> </div> <div class="row grid-margin"> <div class="col-lg-3"> <div class="form-group"> <label>BOM Version(M.M.R):</label> <input type="text" id="version" name="version" value="{{ $billOfMaterial->version }}" onkeyup="get_version(this)" placeholder="Enter Version(1.0.0)" class="form-control"> </div> </div> <div class="col-lg-3"> <div class="form-group"> <label>BOM Creation Date :</label> <input type="date" id="bom_date" name="bom_date" value="{{ $billOfMaterial->bom_date }}" onkeyup="get_bom_date(this)" placeholder="Enter BOM Creation Date" class="form-control"> </div> </div> <div class="col-lg-3"> <div class="form-group"> <label>BOM Project Name:</label> <input type="text" id="project" name="project" value="{{ $billOfMaterial->project }}" onkeyup="get_project(this)" placeholder="Enter Project Name" class="form-control"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="name">BOM Reference Document :</label> <input class="form-control" type="file" name="document1" id="document1" onchange="getFile1(this)"> @if($billOfMaterial->document1) <a href="{{ asset($billOfMaterial->document1) }}" target="_blank">View Current Document</a> @endif <span class="label label-danger" id="add_document1_error" style="display: none;"></span> </div> </div> </div> <div class="row grid-margin"> <div class="col-lg-3"> <div class="form-group"> <label for="bom_comment">Description :</label> <textarea id="bom_comment" name="bom_comment" onkeyup="get_bom_comment(this)" placeholder="Enter Remark" class="form-control">{{ $billOfMaterial->bom_comment }}</textarea> </div> </div> </div> <hr> <hr> <div class="row grid-margin"> <div class="col-lg-4"> <h4 class="card-title">Item List</h4> </div> <div class="col-lg-8"> <select class="e1" name="code" id="Code" class="form-control" onchange="addselectedItem(this.value)"> <option value="">Search and Enter Item Code</option> @foreach($items as $item) <option value="{{$item->code}}">{{$item->code}}({{$item->description}})</option> @endforeach </select> </div> </div> <div class="clearfix"> <div class="pull-right tableTools-container"> </div> </div> <div> <table class="table table-striped table-bordered"> <thead> <tr> <th> Item Code</th> <th> Description</th> <th>Make</th> <th>UOM</th> <th>Specification</th> <th> Qty</th> <th> Unit Price </th> <th> Total </th> <th> --- </th> </tr> </thead> <tbody id="tbody"> @foreach($bom_items as $item) <tr id="item_{{ $item->id }}"> <td>{{ $item->item_code }}</td> <td>{{ $item->description ?? '' }}</td> <td><input type="text" id="input_{{ $item->id }}" name="make" placeholder="Make" value="{{ $item->make }}" onkeyup="getMake(this,{{ $item->id }})" required/></td> <td>{{ $item->Uom ?? '' }}</td> <td><input type="text" id="input_{{ $item->id }}" name="specification" placeholder="Specification" value="{{ $item->specification }}" onkeyup="getSpecification(this,{{ $item->id }})" required/></td> <td><input type="text" id="input_{{ $item->id }}" onkeypress="return onlyCurrency(event)" onblur="check_zero(this)" data-id="id_{{ $item->bom_id }}_{{ $item->id }}" name="item_qty[{{ $item->id }}]" onkeyup="getvalue(this,{{ $item->id }})" value="{{ $item->qty }}" style="width:100px;" /> </td> <td><input type="text" id="input_{{ $item->id }}" onkeypress="return onlyCurrency(event)" onblur="check_zero(this)" data-id="id_{{ $item->bom_id }}_{{ $item->id }}" name="item_rate[{{ $item->id }}]" onkeyup="getRate(this,{{ $item->id }})" value="{{ $item->rate }}"/></td> <td id="itemtotal_{{ $item->id }}">{{ $item->qty * $item->rate }}</td> <td><button type="button" class="btn btn-sm btn-danger" onclick="deleteItem({{ $item->id }})"><i class="fa fa-trash"></i></button></td> </tr> <tr id="itemm_{{ $item->id }}"> <td><input type="text" id="input_{{ $item->id }}" name="recomended" placeholder="Recomended" value="{{ $item->recomended }}" onkeyup="getRecomended(this,{{ $item->id }})"/></td> <td><input type="text" id="input_{{ $item->id }}" name="remark" placeholder="Remarks" value="{{ $item->remark }}" onkeyup="getRemark(this,{{ $item->id }})"/></td> </tr> @endforeach </tbody> </table> </div> <div class="row grid-margin"> <div class="col-md-9"> </div> <div class="col-md-3"> <div class="form-group"> <label>Grand Total :</label> <input type="text" id="bom_amount" name="bom_amount" class="form-control" readonly> </div> </div> </div> <button type="submit" id="updateOrderBtn" class="btn btn-primary float-right">Update</button> </form> </div> </div> </div> </div><!-- /.page-content --> </div> </div> @endsection @section('script') {{ Html::script("assets/js/jquery.dataTables.min.js")}} {{ Html::script("assets/js/jquery.dataTables.bootstrap.min.js")}} {{ Html::script("assets/js/dataTables.buttons.min.js")}} {{ Html::script("assets/js/buttons.flash.min.js")}} {{ Html::script("assets/js/buttons.html5.min.js")}} {{ Html::script("assets/js/buttons.print.min.js")}} {{ Html::script("assets/js/buttons.colVis.min.js")}} {{ Html::script("assets/js/dataTables.select.min.js")}} {{ Html::script("assets/js/ace-elements.min.js")}} {{ Html::script("assets/js/ace.min.js")}} <script type="text/javascript"> // Initialize bomData with existing BOM and items var bomData = { items: [ @foreach($bom_items as $item) { id: {{ $item->id }}, code: "{{ $item->item_code }}", description: "{{ $item->description ?? '' }}", make: "{{ $item->make }}", Uom: "{{ $item->Uom ?? '' }}", specification: "{{ $item->specification }}", qty: {{ $item->qty }}, rate: {{ $item->rate }}, total: {{ $item->qty * $item->rate }}, recomended: "{{ $item->recomended }}", remark: "{{ $item->remark }}" }, @endforeach ], version: "{{ $billOfMaterial->version }}", project_category: "{{ $billOfMaterial->project_category }}", description: "{{ $billOfMaterial->bom_comment }}", project: "{{ $billOfMaterial->project }}", requested_by: "{{ $billOfMaterial->requested_by }}", source: '', bom_comment: "{{ $billOfMaterial->bom_comment }}", supplier_contact: '', site_name: '', vertical: '', product: "{{ $billOfMaterial->product_id }}", business_unit: "{{ $billOfMaterial->business_unit }}", bom_date: "{{ $billOfMaterial->bom_date }}", _token: $('meta[name="_token"]').attr('content') }; localStorage.setItem('bomData', JSON.stringify(bomData)); function get_version(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.version = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_project_category(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.project_category = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_description(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.description = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_project(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.project = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_requested_by(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.requested_by = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_source(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.source = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_bom_comment(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.bom_comment = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_supplier_contact(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.supplier_contact = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_site_name(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.site_name = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_vertical(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.vertical = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_product(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.product = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_business_unit(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.business_unit = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function get_bom_date(t){ var bomData = JSON.parse(localStorage.getItem('bomData')); bomData.bom_date = $(t).val(); localStorage.setItem('bomData',JSON.stringify(bomData)); } function getFile1(t){ var fileSelect = document.getElementById('document1'); var bomData = JSON.parse(localStorage.getItem('bomData')); if(fileSelect.files.length > 0) { bomData.file=fileSelect.files[0]['name']; localStorage.setItem('bomData',JSON.stringify(bomData)); } } function addselectedItem(code){ $('#Code').val(code); var html = ""; if(code != ""){ var url = window.location.origin+"/user/get-bom-item"; var data = {}; data.code = code; $('#loaderAction').show && $('#loaderAction').show(); $.ajax({ type: "POST", url: url, data: $('#editBillOfMaterialForm').serialize(), success:function(res){ var bomData = JSON.parse(localStorage.getItem('bomData')); var is_added = false; $.each(bomData.items,function(key,val){ if(val.code == code){ is_added = true; } }); if(is_added == false){ $.each(res.item,function(key,val){ html +=`<tr id="item_`+val.id+`"> <td>`+val.code+`</td> <td>`+val.description+`</td> <td><input type="text" id="input_`+val.id+`" name="make" placeholder="Make" value="`+val.make+`" onkeyup="getMake(this,`+val.id+`)" required/></td> <td>`+val.Uom+`</td> <td><input type="text" id="input_`+val.id+`" name="specification" placeholder="Specification" value="`+val.specification+`" onkeyup="getSpecification(this,`+val.id+`)" required/></td> <td><input type="text" id="input_`+val.id+`" onkeypress="return onlyCurrency(event)" onblur="check_zero(this)" data-id="id_`+val.bom_id+`_`+val.id+`" name="item_qty[`+val.id+`]" onkeyup="getvalue(this,`+val.id+`)" value="0" style="width:100px;" /> </td> <td><input type="text" id="input_`+val.id+`" onkeypress="return onlyCurrency(event)" onblur="check_zero(this)" data-id="id_`+val.bom_id+`_`+val.id+`" name="item_rate[`+val.id+`]" onkeyup="getRate(this,`+val.id+`)" value="`+val.rate+`"/></td> <td id="itemtotal_`+val.id+`"></td> <td><button type="button" class="btn btn-sm btn-danger" onclick="deleteItem(`+val.id+`)"><i class="fa fa-trash"></i></button></td> </tr> <tr id="itemm_`+val.id+`"> <td><input type="text" id="input_`+val.id+`" name="recomended" placeholder="Recomended" onkeyup="getRecomended(this,`+val.id+`)"/></td> <td><input type="text" id="input_`+val.id+`" name="remark" placeholder="Remarks" onkeyup="getRemark(this,`+val.id+`)"/></td> </tr>`; val.qty = 0; val.total = 0; bomData.items.push(val); }); localStorage.setItem('bomData',JSON.stringify(bomData)); $('#tbody').append(html); calculate_total(); }else{ swal('Error','Selected Item Alredy added !! !!!','warning'); } }, error:function(error){ console.log(error); }, dataType: 'json' }); }else{ swal('Error','Please Enter Item Code !', 'error'); } } function deleteItem(id){ var bomData = JSON.parse(localStorage.getItem('bomData')); var items = bomData.items; $(items).each(function (index){ if(items[index].id == id){ items.splice(index,1); $('#item_'+id).remove(); $('#itemm_'+id).remove(); return false; } }); bomData.items = items; localStorage.setItem('bomData',JSON.stringify(bomData)); calculate_total(); } function onlyCurrency(event){ if(event.which == 8 || event.which == 0){ return true; } if(event.which < 46 || event.which > 59) { return false; } if(event.which == 46 && $(this).val().indexOf('.') != -1) { return false; } } function check_zero(t){ var qty = $(t).val(); if(qty == "" || qty == null){ $(t).val(0); } } function calculate_total(){ var bomData = JSON.parse(localStorage.getItem('bomData')); var sub_total = 0; $.each(bomData.items,function(k,val){ let subtotal = parseFloat((val.qty * val.rate).toFixed(2)); sub_total = sub_total + subtotal; $('#itemtotal_'+val.id).text(subtotal.toFixed(2)); }); var grand_total = sub_total; $('#bom_amount').val(grand_total.toFixed(2)); bomData.grand_total = parseFloat(grand_total.toFixed(2)); localStorage.setItem('bomData',JSON.stringify(bomData)); } function calculate(id){ var bomData = JSON.parse(localStorage.getItem('bomData')); $.each(bomData.items,function(key,val){ if(val.id == id){ let qty = parseFloat(val.qty).toFixed(2); let rate =parseFloat(val.rate).toFixed(2); let total = qty*rate; $('#itemtotal_'+id).text(total.toFixed(2)); addCartValueInKey(id,'qty',qty); addCartValueInKey(id,'total',total.toFixed(2)); } }); calculate_total(); } function getvalue(t,id){ var item_qty = $(t).val(); if(item_qty != "" && item_qty != null){ var item_qty = parseFloat(item_qty).toFixed(2); addCartValueInKey(id,'qty',item_qty); calculate(id); }else{ addCartValueInKey(id,'qty',0); calculate(id); } } function getRate(t,id){ var item_rate = $(t).val(); if(item_rate != "" && item_rate != null){ var item_rate = parseFloat(item_rate).toFixed(2); addCartValueInKey(id,'rate',item_rate); calculate(id); }else{ addCartValueInKey(id,'rate',0); calculate(id); } } function getRecomended(t,id){ var recomended = $(t).val(); if(recomended != "" && recomended != null){ addCartValueInKey(id,'recomended',recomended); }else{ addCartValueInKey(id,'recomended',null); } } function getRemark(t,id){ var remark = $(t).val(); addCartValueInKey(id,'remark',remark); } function getMake(t,id){ var make = $(t).val(); addCartValueInKey(id,'make',make); } function getSpecification(t,id){ var specification = $(t).val(); addCartValueInKey(id,'specification',specification); } function addCartValueInKey(id,key,value){ var bomData = JSON.parse(localStorage.getItem('bomData')); $.each(bomData.items,function(k,val){ if(parseInt(val.id) == id){ bomData.items[k][key] = value; } }); localStorage.setItem('bomData',JSON.stringify(bomData)); } function is_valid(){ var bomData = JSON.parse(localStorage.getItem('bomData')); var check = true; $.each(bomData.items,function(key,val){ if(val.qty == 0 ){ check = false; $('#input_'+val.id).css({'border':'1px solid #D5D5D5','border-color':'#bf0606'}); return false; }else{ $('#input_'+val.id).css({'border':'1px solid #D5D5D5','border-color':'#b5b5b5'}); } }); if(check == false){ return false; }else{ return true; } } function showError(id,error){ if(typeof(error) === "undefined"){ $('#'+id).hide(); }else{ $('#'+id).show(); $('#'+id).text(error); } } $(document).ready(function(){ $('#editBillOfMaterialForm').on('submit', function(e){ e.preventDefault(); var bomData = JSON.parse(localStorage.getItem('bomData')); if(bomData.project_category == "" || bomData.project == "" || bomData.product == "" || bomData.business_unit == "" ){ swal('Error','Please select Project Category, Business Unit, Project, BOM Date!! !!!','error'); }else if(bomData.items.length < 1){ swal('Error','Please Added atleast one item !! !!!','error'); }else if(!is_valid()){ swal('Error','Quantity can not be zero. please check!!','error'); }else{ var url = $('#editBillOfMaterialForm').attr('action'); var formData = new FormData(this); formData.append('items', JSON.stringify(bomData.items)); $('.loading-bg').show(); $.ajax({ url: url, method: 'POST', data: formData, dataType:'json', contentType:false, cache:false, processData:false, success: function(data){ $('.loading-bg').hide(); if(data.success == true){ swal({ title: "Success", text: "Bill Of Material Updated Successfully!!", type: "success" }, function(){ location.reload(); }); } if (data.flag == false) { $.each(data.error, function(key,val) { showError('add_'+key+'_error',val); }); } }, error:function(error){ //console.log("this is else part"+error); } }); } return false; }); }); </script> <script> $(document).ready(function() { $(".e1").select2(); }); </script> @endsection