changes in purchase module 11-03-2025

This commit is contained in:
vadivelJ96 2025-03-11 18:30:48 +05:30
parent 976a77d344
commit 77ddd302dd
3 changed files with 90 additions and 140 deletions

View File

@ -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;

View File

@ -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();

View File

@ -220,11 +220,12 @@
$yqt = 0.00;
$yvt = 0.00;
foreach ($ppurchse as $rel) {
$cat = $rel->category;
//dd($rel);
?>
<tr>
@ -363,140 +364,21 @@
// Bootstrap datepicker
// Set up your table
$(document).ready(function() {
// $.fn.dataTable.moment('DD-MM-YYYY');
// table = $('#cc').DataTable({
// "language": {
// "emptyTable": "<center> Data Not Found ! </center>"
// },
// "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: '<i class="fas fa-angle-right"></i>', // Next button icon
previous: '<i class="fas fa-angle-left"></i>' // 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: '<i class="fas fa-angle-right"></i>', // Next button icon
previous: '<i class="fas fa-angle-left"></i>' // Previous button icon
}
}
});
});
</script>