diff --git a/app/Controllers/StockController.php b/app/Controllers/StockController.php index bf26151b..cbb9f924 100644 --- a/app/Controllers/StockController.php +++ b/app/Controllers/StockController.php @@ -1189,7 +1189,7 @@ class StockController extends BaseController //diesel stock details - + public function dieselMachineStockDetails(){ @@ -2064,9 +2064,17 @@ class StockController extends BaseController ->where('stock_category','resin') ->findAll(); + $filterUpdateNeeded = true ; + + if( empty($customisedMaterialCodes) && !empty($existingCustomMaterialCodes)){ + $customisedMaterialCodes = array_column($existingCustomMaterialCodes, 'materialCode') ; + $filterUpdateNeeded = false ; + + } + //check user applies for filter currently - if(!empty($customisedMaterialCodes)){ + if(!empty($customisedMaterialCodes) && $filterUpdateNeeded){ //user applied filter, @@ -2201,7 +2209,35 @@ class StockController extends BaseController $groupedByDate[$date][] = $detail; } + // Sort each date's materials based on the custom order to set table body td + if (!empty($customisedMaterialCodes)) { + + foreach ($groupedByDate as $date => &$materials) { + + usort($materials, function ($a, $b) use ($customisedMaterialCodes) { + + $indexA = array_search($a['materialCode'], $customisedMaterialCodes); + $indexB = array_search($b['materialCode'], $customisedMaterialCodes); + + if ($indexA === false && $indexB === false) { + return 0; + } + if ($indexA === false) { + return 1; + } + if ($indexB === false) { + return -1; + } + + return $indexA - $indexB; + }); + } + unset($materials); + } + // Reset the structure to have indexed arrays without the date keys + + //this is for tbody table data td $data['groupedResinStockDetails'] = array_values($groupedByDate); @@ -2219,6 +2255,30 @@ class StockController extends BaseController ->first()['customer'] ?? ''; } + // Sort each date's materials based on the custom order to set table header th + if (!empty($customisedMaterialCodes)) { + + usort($resinMaterials, function ($a, $b) use ($customisedMaterialCodes) { + + $indexA = array_search($a['MaterialCode'], $customisedMaterialCodes); + $indexB = array_search($b['MaterialCode'], $customisedMaterialCodes); + + if ($indexA === false && $indexB === false) { + return 0; + } + if ($indexA === false) { + return 1; + } + if ($indexB === false) { + return -1; + } + + return $indexA - $indexB; + }); + + } + + $resinMaterialCount = count($resinMaterials); $data['resinMaterialCount'] = $resinMaterialCount; diff --git a/app/Models/Dashboard_model.php b/app/Models/Dashboard_model.php index b9580445..82e2cd67 100755 --- a/app/Models/Dashboard_model.php +++ b/app/Models/Dashboard_model.php @@ -2188,12 +2188,20 @@ category = '" . $cat . "' "; function pending_purchase($cname, $prod, $fa, $aa, $m, $frm, $t, $purchaseorder_number) { - $sql = "select po.PONO as po,date_format(po.PODate,'%d-%m-%Y') as pdate,sup.SupplierName as supplier,mm.MaterialName as material,mm.Category as category,pl.Quantity as quantity,pl.ReceivedQuantity as received, (pl.Quantity - pl.ReceivedQuantity) as pending + $sql = "select po.PONO as po, + date_format(po.PODate,'%d-%m-%Y') as pdate, + sup.SupplierName as supplier, + mm.MaterialName as material, + cd.ConfigValue as category, + pl.Quantity as quantity, + pl.ReceivedQuantity as received, + (pl.Quantity - pl.ReceivedQuantity) as pending from t_purchaseorder_lineitem pl join t_purchaseorder_master po on po.PONO = pl.PONO join t_supplierdetailsn sup on sup.SupplierID=po.SupplierID join t_materialmaster mm on mm.MaterialCode=pl.MaterialCode -where po.Status != 'ST030' and po.Status = 'ST026' +join t_configdetails cd on cd.key = mm.Category +where po.Status != 'ST030' and po.Status = 'ST026' "; if ($cname != '') { @@ -2231,7 +2239,7 @@ where po.Status != 'ST030' and po.Status = 'ST026' if($purchaseorder_number != ''){ $sql .= " and po.PONO = '" . $purchaseorder_number . "' "; } - $sql .= "order by po.PONO"; + $sql .= "order by date(po.PODate) desc"; $query = $this->db->query($sql); //echo $sql; return $query->getResult(); diff --git a/app/Views/Report_pending_purchase.php b/app/Views/Report_pending_purchase.php index 901e3a75..bc2f926f 100755 --- a/app/Views/Report_pending_purchase.php +++ b/app/Views/Report_pending_purchase.php @@ -220,11 +220,12 @@ $yqt = 0.00; $yvt = 0.00; - + foreach ($ppurchse as $rel) { $cat = $rel->category; + //dd($rel); ?> @@ -363,140 +364,21 @@ // Bootstrap datepicker // Set up your table $(document).ready(function() { - // $.fn.dataTable.moment('DD-MM-YYYY'); - // table = $('#cc').DataTable({ - // "language": { - // "emptyTable": "
Data Not Found !
" - // }, - // "aaSorting": [ - // [0, "desc"] - // ], - // "pageLength": 10, - // "lengthMenu": [10, 25, 50, 100], - // "autoWidth": false, - // orderCellsTop: true, - // "dom": "<'row'<'col-md-6'l><'col-md-6'Bf>>" + - // "<'row'<'col-md-6'><'col-md-6'>>" + - // "<'row'<'col-md-12't>><'row'<'col-md-4'i><'col-md-8'p>>", - // buttons: [ - - // // { - // // extend: 'excelHtml5', - // // footer: 'true', - // // //messageTop: $('h3').text(), - // // title: $('h3').text(), - // // exportOptions: { - // // columns: ':visible' - // // } - // // }, - - // 'colvis' - // ], - // "footerCallback": function(row, data, start, end, display) { - // var api = this.api(), - // data; - - // // Remove the formatting to get integer data for summation - // var intVal = function(i) { - // return typeof i === 'string' ? - // parseFloat(i.replace(/[^0-9]+/g, "") * 1) : - // typeof i === 'number' ? - // parseFloat(i) : 0; - // }; - - // TotalOrderedQTY = api - // .column(5, { - // search: 'applied' - // }) - // .data() - // .reduce(function(a, b) { - // return intVal(a) + intVal(b); - // }, 0); - - // $(api.column(5).footer()).html(TotalOrderedQTY.toFixed().bold()); - - // TotalRcvdQTY = api - // .column(6, { - // search: 'applied' - // }) - // .data() - // .reduce(function(a, b) { - // return intVal(a) + intVal(b); - // }, 0); - - // $(api.column(6).footer()).html(TotalRcvdQTY.toFixed().bold()); - - // TotalPendingQTY = api - // .column(7, { - // search: 'applied' - // }) - // .data() - // .reduce(function(a, b) { - // return intVal(a) + intVal(b); - // }, 0); - - // $(api.column(7).footer()).html(TotalPendingQTY.toFixed().bold()); - // } - // }); - - // Initialize the DataTable - var table = $('#cc').DataTable({ - dom: 'Blfrtip', // Buttons, length menu, filter, table, information, pagination - buttons: [ - 'copy', 'csv' // Export buttons - ], - pageLength: 10, // Default rows per page - lengthMenu: [ - [10, 20, 30, 50, -1], - [10, 20, 30, 50, "All"] - ], // Rows per page options - responsive: true, // Responsive table - order: [ - [0, 'desc'] - ], // Default ordering (column index 0, descending) - language: { - paginate: { - next: '', // Next button icon - previous: '' // Previous button icon - } - } - }); - }); - $('#mySelect').on('change', function() { - - table - .column(4) - .search(this.value) - .draw(); - }); - - $(function() { - var dateFormat = 'dd-mm-yyyy'; - - // Initialize min-date (Start Date) - var from = $("#min-date").datepicker({ - format: dateFormat, - autoclose: true, - todayHighlight: true, - clearBtn: true, - orientation: 'bottom' - }).on('changeDate', function(e) { - // When a date is selected in #min-date, update the minDate option for #max-date - // to.datepicker('setStartDate', e.date); - }); - - // Initialize max-date (End Date) - var to = $("#max-date").datepicker({ - format: dateFormat, - // startDate: new Date(), // Start date cannot be in the past - autoclose: true, - todayHighlight: true, - clearBtn: true, - orientation: 'bottom' - }).on('changeDate', function(e) { - // When a date is selected in #max-date, update the endDate option for #min-date - from.datepicker('setStartDate', e.date); + // Initialize the DataTable with only pagination enabled + var table = $('#cc').DataTable({ + paging: true, // Enable pagination + searching: true, // Disable search + ordering: false, // Disable column sorting + info: false, // Disable table information + lengthChange: false, // Disable page length options + pageLength: 10, // Default rows per page + responsive: true, // Keep responsive design + language: { + paginate: { + next: '', // Next button icon + previous: '' // Previous button icon + } + } }); }); - \ No newline at end of file