diff --git a/app/Config/Routes.php b/app/Config/Routes.php index eb6f5064..3e22539f 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -471,6 +471,7 @@ $routes->match(['GET', 'POST'], 'coatingMachineDetails', 'StockController::loadV $routes->post('addNewCoatingMachineDetails', 'StockController::addNewCoatingMachineDetails'); $routes->post('updateCoatingMachineDetails', 'StockController::updateCoatingMachineDetails'); $routes->post('deleteBatchCardFile','StockController::deleteBatchCardFile'); +$routes->get('download-batchcard-zip','StockController::downloadBatchCardZip'); //drier machine details $routes->match(['GET', 'POST', 'PUT', 'DELETE'], 'drierMachineDetails', 'StockController::drierMachineDetails'); diff --git a/app/Controllers/StockController.php b/app/Controllers/StockController.php index 3fc57845..08de9d9d 100644 --- a/app/Controllers/StockController.php +++ b/app/Controllers/StockController.php @@ -168,7 +168,8 @@ class StockController extends BaseController JSON_OBJECT( "client_given_name", t_batchcard_files.client_file_name, "filename", t_batchcard_files.filename, - "batchCardId" , t_batchcard_files.id + "batchCardId" , t_batchcard_files.id, + "coating_id", t_batchcard_files.coating_id ) ) as batchcard_files') ->join('t_batchcard_files', 't_batchcard_files.coating_id = t_coatingMachineDetails.id', 'left') @@ -437,6 +438,59 @@ class StockController extends BaseController 'message' => "Invalid Request..!!" ]); } + + + public function downloadBatchcardZip() + { + $coatingId = $this->request->getGet('coating_id'); + $date = $this->request->getGet('date'); + $batchCardFiles = $this->getBatchCardFiles($coatingId); // Fetch files from DB + + if (empty($batchCardFiles)) { + return redirect()->back()->with('error', 'No batchcard files found.'); + } + + $zipFileName = 'batchcard_files_' . $date . '.zip'; + $zipFilePath = WRITEPATH . 'uploads/batchcard' . $zipFileName; // CI4 WRITEPATH safe directory + + $zip = new \ZipArchive(); + if ($zip->open($zipFilePath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) === true) { + foreach ($batchCardFiles as $file) { + $originalFilePath = WRITEPATH . 'uploads/batchcard/' . $file['filename']; // Actual stored file + $clientFileName = $file['client_file_name'] ?? $file['filename']; // Use client name if available + + if (file_exists($originalFilePath)) { + $zip->addFile($originalFilePath, $clientFileName); // Rename inside ZIP + } + } + $zip->close(); + + $response = $this->response->download($zipFilePath, null)->setFileName($zipFileName); + + // Delete ZIP after response is sent + register_shutdown_function(function () use ($zipFilePath) { + if (file_exists($zipFilePath)) { + unlink($zipFilePath); + } + }); + + return $response; + } + + return redirect()->back()->with('error', 'Failed to create ZIP file.'); + } + + // Example function to get batchcard files from DB + private function getBatchCardFiles($coatingId) + { + $batchCardFiles = $this->db->table('t_batchcard_files') + ->where('coating_id', $coatingId) + ->get() + ->getResultArray(); + + return $batchCardFiles; + } + //incoming Silica Sand Details starts diff --git a/app/Views/stock/CoatingMachineDetail.php b/app/Views/stock/CoatingMachineDetail.php index 4ff0b62b..bf975bca 100644 --- a/app/Views/stock/CoatingMachineDetail.php +++ b/app/Views/stock/CoatingMachineDetail.php @@ -356,6 +356,9 @@ $summary = [] ; foreach ($coatingMachineDetails as $record) { + + $batchCardFiles =json_decode($record['batchcard_files'],true); + ?> + + + @@ -403,6 +409,22 @@     + $files) { + if ($index === 0 && !empty($files['batchCardId']) && $files['coating_id'] == $record['id']) + { + ?> + + + + + + diff --git a/app/Views/stock/bagStockDetails.php b/app/Views/stock/bagStockDetails.php index 2675cd81..d95a023c 100644 --- a/app/Views/stock/bagStockDetails.php +++ b/app/Views/stock/bagStockDetails.php @@ -221,6 +221,12 @@ } + /* .fht-table td[contenteditable="true"] { + background-color: lightyellow; + color:rgb(13, 7, 7); + } */ + + @@ -353,8 +359,8 @@ Date - material - customer + Material + Customer Opening Stock Receipt Used @@ -1036,4 +1042,42 @@ + + + \ No newline at end of file diff --git a/app/Views/stock/dieselStockDetails.php b/app/Views/stock/dieselStockDetails.php index 2c0af006..778e53c6 100644 --- a/app/Views/stock/dieselStockDetails.php +++ b/app/Views/stock/dieselStockDetails.php @@ -1033,10 +1033,10 @@ foreach ($period as $day) { let closingReading = validateInput(document.querySelector(`td.closingReading[data-id="${dataId}"]`).innerText); let consumption = validateInput(document.querySelector(`td.consumption[data-id="${dataId}"]`).innerText); let runningHours = Math.abs(Number(closingReading) - Number(openingReading)); - let mileage = consumption == 0 || runningHours == 0 ? 0 : (Number(consumption) / Number(runningHours)).toFixed(2) ; + let mileage = consumption == 0 || runningHours == 0 ? 0 : (Number(consumption) / Number(runningHours)) ; - document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = (runningHours).toFixed(2); - document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = mileage; + document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = parseFloat(runningHours).toFixed(2); + document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = parseFloat(mileage).toFixed(2); updateStockValue(date,machine_id,closingReading) @@ -1058,10 +1058,10 @@ foreach ($period as $day) { let openingReading = validateInput(document.querySelector(`td.openingReading[data-id="${dataId}"]`).innerText); let consumption = validateInput(document.querySelector(`td.consumption[data-id="${dataId}"]`).innerText); let runningHours = Math.abs(Number(closingReading) - Number(openingReading)); - let mileage = consumption == 0 || runningHours == 0 ? 0 : (Number(consumption) / Number(runningHours)).toFixed(2) ; + let mileage = consumption == 0 || runningHours == 0 ? 0 : Number(consumption) / Number(runningHours) ; - document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = (runningHours).toFixed(2); - document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = mileage; + document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = parseFloat(runningHours).toFixed(2); + document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = parseFloat(mileage).toFixed(2); updateStockValue(date, machine_id, closingReading) @@ -1083,10 +1083,10 @@ foreach ($period as $day) { let openingReading = validateInput(document.querySelector(`td.openingReading[data-id="${dataId}"]`).innerText); let consumption = validateInput(tdElement.innerText); let runningHours = Math.abs(Number(closingReading) - Number(openingReading)); - let mileage = consumption == 0 || runningHours == 0 ? 0 : (Number(consumption) / Number(runningHours)).toFixed(2) ; + let mileage = consumption == 0 || runningHours == 0 ? 0 : (Number(consumption) / Number(runningHours)) ; - document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = (runningHours).toFixed(2); - document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = mileage; + document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = parseFloat(runningHours).toFixed(2); + document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = parseFloat(mileage).toFixed(2); updateStockValue(date, machine_id, closingReading) @@ -1119,7 +1119,7 @@ foreach ($period as $day) { )}); - document.querySelector(`td.fillingTD[data-id="${date}"]`).innerText = totalFillingDiesel; + document.querySelector(`td.fillingTD[data-id="${date}"]`).innerText = parseFloat(totalFillingDiesel).toFixed(2) ; let openingTD = validateInput(document.querySelector(`td.openingTD[data-id="${date}"]`).innerText); @@ -1127,7 +1127,7 @@ foreach ($period as $day) { let balanceTD = (Number(openingTD) + Number(purchaseTD)) - Number(totalFillingDiesel) ; - document.querySelector(`td.balanceTD[data-id="${date}"]`).innerText = balanceTD ; + document.querySelector(`td.balanceTD[data-id="${date}"]`).innerText = parseFloat(balanceTD).toFixed(2) ; updateTotalStockValue(date, balanceTD) ; @@ -1157,7 +1157,7 @@ foreach ($period as $day) { let balanceTD = (Number(openingTD) + Number(purchaseTD)) - Number(fillingTD) ; - document.querySelector(`td.balanceTD[data-id="${dataId}"]`).innerText = balanceTD ; + document.querySelector(`td.balanceTD[data-id="${dataId}"]`).innerText = parseFloat(balanceTD).toFixed(2) ; updateTotalStockValue(dataId , balanceTD) @@ -1181,7 +1181,7 @@ foreach ($period as $day) { balanceTD = (Number(openingTD) + Number(purchaseTD)) - Number(fillingTD) ; - document.querySelector(`td.balanceTD[data-id="${dataId}"]`).innerText = balanceTD ; + document.querySelector(`td.balanceTD[data-id="${dataId}"]`).innerText = parseFloat(balanceTD).toFixed(2) ; updateTotalStockValue(dataId, balanceTD) ; @@ -1263,9 +1263,9 @@ foreach ($period as $day) { document.querySelector(`td.runningHours[data-id="${dataId}"]`).innerText = runningHours == 0 ? " " : (runningHours).toFixed(2) ; - document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = mileage == 0 ? " " : mileage ; + document.querySelector(`td.mileage[data-id="${dataId}"]`).innerText = mileage == 0 ? " " : parseFloat(mileage).toFixed(2) ; - document.querySelector(`td.closingReading[data-id="${dataId}"]`).innerText = closingReading == 0 ? " " : (closingReading).toFixed(2) ; + document.querySelector(`td.closingReading[data-id="${dataId}"]`).innerText = closingReading == 0 ? " " : parseFloat(closingReading).toFixed(2) ; } @@ -1297,7 +1297,7 @@ foreach ($period as $day) { let dataId = `${otherDate}`; - document.querySelector(`td.openingTD[data-id="${dataId}"]`).innerText = balanceTD; + document.querySelector(`td.openingTD[data-id="${dataId}"]`).innerText = parseFloat(balanceTD).toFixed(2) ; let openingTD = document.querySelector(`td.openingTD[data-id="${dataId}"]`).innerText; @@ -1310,7 +1310,7 @@ foreach ($period as $day) { balanceTD = (Number(openingTD) + Number(purchaseTD)) - Number(fillingTD) ; - document.querySelector(`td.balanceTD[data-id="${dataId}"]`).innerText = balanceTD ; + document.querySelector(`td.balanceTD[data-id="${dataId}"]`).innerText = parseFloat(balanceTD).toFixed(2) ; } @@ -1360,4 +1360,42 @@ foreach ($period as $day) { + + + \ No newline at end of file diff --git a/app/Views/stock/dustAndRoughStockDetails.php b/app/Views/stock/dustAndRoughStockDetails.php index a30577b2..e799142e 100644 --- a/app/Views/stock/dustAndRoughStockDetails.php +++ b/app/Views/stock/dustAndRoughStockDetails.php @@ -650,3 +650,41 @@ + + diff --git a/app/Views/stock/gasStockDetails.php b/app/Views/stock/gasStockDetails.php index 1637cac4..406a7da0 100644 --- a/app/Views/stock/gasStockDetails.php +++ b/app/Views/stock/gasStockDetails.php @@ -291,21 +291,18 @@ - - - SEP- GAS CONSUMPTION-422 & 425 kg - + RIPL Gas Stock - 10 Ton + FBD 10 Ton Dryer Sand Dried Coating Machine Sand Coated - Trp Machine + TRP Sand TRP Rotary Drier @@ -319,12 +316,12 @@ Consumption Balance Stock Consumption - ton + Ton Consumption - ton + Ton Panel Consumption Physical Consumption - ton + Ton Consumption @@ -514,11 +511,11 @@ RIPL Gas Stock - 10 Ton + FBD 10 Ton Dryer Sand Dried Coating Machine Sand Coated - Trp Machine + TRP Sand TRP Rotary Drier @@ -1141,4 +1138,42 @@ function convertToDate(dateString) { return input; } + + + \ No newline at end of file diff --git a/app/Views/stock/incomingSilicaSandDetails.php b/app/Views/stock/incomingSilicaSandDetails.php index 0526be34..080ee3fe 100644 --- a/app/Views/stock/incomingSilicaSandDetails.php +++ b/app/Views/stock/incomingSilicaSandDetails.php @@ -28,6 +28,12 @@ color: #ffffff; } + /* .fht-table td[contenteditable="true"] { + background-color: lightyellow; + color:rgb(13, 7, 7); + } */ + + .fht-table { border: 0 none; height: auto; @@ -1755,4 +1761,43 @@ $(document).ready(function() { - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/Views/stock/powerConsumptionDetails.php b/app/Views/stock/powerConsumptionDetails.php index f1a01491..1925e8ac 100644 --- a/app/Views/stock/powerConsumptionDetails.php +++ b/app/Views/stock/powerConsumptionDetails.php @@ -17,6 +17,11 @@ text-align: center; } + /* .fht-table td[contenteditable="true"] { + background-color: lightyellow; + color:rgb(13, 7, 7); + } */ + .fht-table td:hover { background-color: #50bbd9; color: #ffffff; @@ -1075,7 +1080,7 @@ foreach ($period as $day) { let totalUnits = parseFloat(closingUnits) - parseFloat(openingUnits) ; - document.querySelector(`td.totalUnits[data-id="${dataId}"]`).innerText = (totalUnits).toFixed(2); + document.querySelector(`td.totalUnits[data-id="${dataId}"]`).innerText = parseFloat(totalUnits).toFixed(2); updateStockValue(date,machine_id,closingUnits) @@ -1098,7 +1103,7 @@ foreach ($period as $day) { let totalUnits = parseFloat(closingUnits) - parseFloat(openingUnits) ; - document.querySelector(`td.totalUnits[data-id="${dataId}"]`).innerText = (totalUnits).toFixed(2); + document.querySelector(`td.totalUnits[data-id="${dataId}"]`).innerText = parseFloat(totalUnits).toFixed(2); updateStockValue(date,machine_id,closingUnits) @@ -1125,9 +1130,9 @@ foreach ($period as $day) { let totalUnitsTP = totalReadingTP * 60 ; - document.querySelector(`td.totalReadingTP[data-id="${dataId}"]`).innerText = (totalReadingTP).toFixed(2) ; + document.querySelector(`td.totalReadingTP[data-id="${dataId}"]`).innerText = parseFloat(totalReadingTP).toFixed(2) ; - document.querySelector(`td.totalUnitsTP[data-id="${dataId}"]`).innerText = (totalUnitsTP).toFixed(2) ; + document.querySelector(`td.totalUnitsTP[data-id="${dataId}"]`).innerText = parseFloat(totalUnitsTP).toFixed(2) ; updateTotalStockValue(dataId , finalTP) ; @@ -1153,9 +1158,9 @@ foreach ($period as $day) { let totalUnitsTP = totalReadingTP * 60 ; - document.querySelector(`td.totalReadingTP[data-id="${dataId}"]`).innerText = (totalReadingTP).toFixed(2) ; + document.querySelector(`td.totalReadingTP[data-id="${dataId}"]`).innerText = parseFloat(totalReadingTP).toFixed(2) ; - document.querySelector(`td.totalUnitsTP[data-id="${dataId}"]`).innerText = (totalUnitsTP).toFixed(2) ; + document.querySelector(`td.totalUnitsTP[data-id="${dataId}"]`).innerText = parseFloat(totalUnitsTP).toFixed(2) ; updateTotalStockValue(dataId , finalTP) @@ -1176,7 +1181,7 @@ foreach ($period as $day) { let mdTP = validateInput(tdElement.innerText); - document.querySelector(`td.mfTP[data-id="${dataId}"]`).innerText = (mdTP * 60).toFixed(2) ; + document.querySelector(`td.mfTP[data-id="${dataId}"]`).innerText = parseFloat(mdTP * 60).toFixed(2) ; } catch (error) { @@ -1236,7 +1241,7 @@ foreach ($period as $day) { let dataId = `${otherDate} ${machine_id}`; - document.querySelector(`td.openingUnits[data-id="${dataId}"]`).innerText = closingUnits == 0 ? " " : closingUnits ; + document.querySelector(`td.openingUnits[data-id="${dataId}"]`).innerText = closingUnits == 0 ? " " : parseFloat(closingUnits).toFixed(2) ; let openingUnits = validateInput(document.querySelector(`td.openingUnits[data-id="${dataId}"]`).innerText); @@ -1244,7 +1249,7 @@ foreach ($period as $day) { closingUnits = Math.abs(Number(openingUnits) + Number(totalUnits)); - document.querySelector(`td.closingUnits[data-id="${dataId}"]`).innerText = closingUnits == 0 ? " " : closingUnits ; + document.querySelector(`td.closingUnits[data-id="${dataId}"]`).innerText = closingUnits == 0 ? " " : parseFloat(closingUnits).toFixed(2) ; } @@ -1275,7 +1280,7 @@ foreach ($period as $day) { let dataId = `${otherDate}`; - document.querySelector(`td.openingTP[data-id="${dataId}"]`).innerText = finalTP == 0 ? " " : finalTP ; + document.querySelector(`td.openingTP[data-id="${dataId}"]`).innerText = finalTP == 0 ? " " : parseFloat(finalTP).toFixed(2) ; let openingTP = validateInput(document.querySelector(`td.openingTP[data-id="${dataId}"]`).innerText) ; @@ -1290,9 +1295,9 @@ foreach ($period as $day) { - document.querySelector(`td.finalTP[data-id="${dataId}"]`).innerText = finalTP == 0 ? " " : finalTP; - document.querySelector(`td.totalReadingTP[data-id="${dataId}"]`).innerText = totalReadingTP == 0 ? " " : totalReadingTP ; - document.querySelector(`td.totalUnitsTP[data-id="${dataId}"]`).innerText = totalUnitsTP == 0 ? " " : totalUnitsTP; + document.querySelector(`td.finalTP[data-id="${dataId}"]`).innerText = finalTP == 0 ? " " : parseFloat(finalTP).toFixed(2) ; + document.querySelector(`td.totalReadingTP[data-id="${dataId}"]`).innerText = totalReadingTP == 0 ? " " : parseFloat(totalReadingTP).toFixed(2) ; + document.querySelector(`td.totalUnitsTP[data-id="${dataId}"]`).innerText = totalUnitsTP == 0 ? " " : parseFloat(totalUnitsTP).toFixed(2) ; @@ -1344,4 +1349,39 @@ foreach ($period as $day) { + + + \ No newline at end of file diff --git a/app/Views/stock/resinStockDetails.php b/app/Views/stock/resinStockDetails.php index da4ea4dd..f39ae0ef 100644 --- a/app/Views/stock/resinStockDetails.php +++ b/app/Views/stock/resinStockDetails.php @@ -21,6 +21,11 @@ background-color: #50bbd9; color: #ffffff; } +/* + .fht-table td[contenteditable="true"] { + background-color: lightyellow; + color:rgb(13, 7, 7); + } */ .fht-table { border: 0 none; @@ -953,4 +958,42 @@ foreach ($period as $day) { + + + \ No newline at end of file diff --git a/app/Views/stock/trpSandUseStockDetails.php b/app/Views/stock/trpSandUseStockDetails.php index d21f1b50..ef86e42b 100644 --- a/app/Views/stock/trpSandUseStockDetails.php +++ b/app/Views/stock/trpSandUseStockDetails.php @@ -706,3 +706,43 @@ + + + +