stock module latest today vadivel J 14-02-2025

This commit is contained in:
vadivelJ96 2025-02-14 19:25:44 +05:30
parent 9908ebeb2f
commit 11d693693b
3 changed files with 167 additions and 133 deletions

View File

@ -1538,6 +1538,7 @@ class User extends BaseController
if (isset($rs['line_items']) && count($rs['line_items']) > 0) { if (isset($rs['line_items']) && count($rs['line_items']) > 0) {
log_message('error', 'Processing line items' . count($rs['line_items'])); log_message('error', 'Processing line items' . count($rs['line_items']));
dd($rs);
for ($i = 0; $i < count($rs['line_items']); $i++) { //start insert line items for ($i = 0; $i < count($rs['line_items']); $i++) { //start insert line items
$sku = $rs['line_items'][$i]['sku']; $sku = $rs['line_items'][$i]['sku'];

View File

@ -3,6 +3,7 @@
namespace App\Models; namespace App\Models;
use CodeIgniter\Model; use CodeIgniter\Model;
use Predis\Client;
class TrpProductionModel extends Model class TrpProductionModel extends Model
{ {
@ -67,155 +68,185 @@ class TrpProductionModel extends Model
$materialCodes = array_column($subquery, 'materialCode'); // Extracts 'materialCode' values $materialCodes = array_column($subquery, 'materialCode'); // Extracts 'materialCode' values
// Convert the array of material codes to a comma-separated string // Convert the array of material codes to a comma-separated string
$materialCodesString = "'" . implode("','", $materialCodes) . "'"; // $materialCodesString = "'" . implode("','", $materialCodes) . "'";
// dd($materialCodes); // dd($materialCodes);
$sql = "SELECT // Define your table
$builder = $this->db->table('t_trpProductionMaintenanceDetails tpmd');
tpmd.date, // Select required columns
tpmd.openingTime, $builder->select([
tpmd.closingTime, 'tpmd.date',
tpmd.totalHours, 'tpmd.openingTime',
tpmd.coldStart, 'tpmd.closingTime',
tpmd.breakdownHours, 'tpmd.totalHours',
tpmd.burnerFiringHours, 'tpmd.coldStart',
tpmd.sandFeedingHours, 'tpmd.breakdownHours',
tpmd.workingPersonEngineers, 'tpmd.burnerFiringHours',
tpmd.workingPersonSupervisiors, 'tpmd.sandFeedingHours',
tpmd.workingPersonOperators, 'tpmd.workingPersonEngineers',
tpmd.rollerDrivers, 'tpmd.workingPersonSupervisiors',
tpmd.natureOfMaintenance, 'tpmd.workingPersonOperators',
tpmd.location, 'tpmd.rollerDrivers',
tpmd.description, 'tpmd.natureOfMaintenance',
'tpmd.location',
'tpmd.description',
tpd.gasReceiptBg, 'tpd.gasReceiptBg',
tpd.gasReceiptPg, 'tpd.gasReceiptPg',
tpd.physicalGasConsumption, 'tpd.physicalGasConsumption',
tpd.trpPlusDrierGasConsumption, 'tpd.trpPlusDrierGasConsumption',
tpd.trpPhysicalGasPerTon, 'tpd.trpPhysicalGasPerTon',
tpd.panelGasConsumption, 'tpd.panelGasConsumption',
tpd.panelGasPerTon, 'tpd.panelGasPerTon',
tpd.edRunningHours, 'tpd.edRunningHours',
tpd.edProduction, 'tpd.edProduction',
tpd.edUsage, 'tpd.edUsage',
tpd.trpProduction, 'tpd.trpProduction',
tpd.trpProductionPerHour, 'tpd.trpProductionPerHour',
tpd.waterReceipt, 'tpd.waterReceipt',
tpd.waterConsumption, 'tpd.waterConsumption',
tpd.ebReading, 'tpd.ebReading',
tpd.ebReadingPerUnitTon, 'tpd.ebReadingPerUnitTon',
tpwd.msSeperation, 'tpwd.msSeperation',
tpwd.edWaste, 'tpwd.edWaste',
tpwd.coolerBags, 'tpwd.coolerBags',
tpwd.edPlus20Waste, 'tpwd.edPlus20Waste',
tpwd.cycloneWaste, 'tpwd.cycloneWaste',
-- Aggregated totalGasConsumption for Coating Machine // Aggregated gas consumption
IFNULL(tcmd.totalGasConsumption, 0) AS coatingGasConsumption, 'IFNULL(tcmd.totalGasConsumption, 0) AS coatingGasConsumption',
'IFNULL(tdmd.totalGasConsumption, 0) AS drierGasConsumption',
-- Aggregated totalGasConsumption for Drier Machine 'tsu.total_kgs AS coating' ,
IFNULL(tdmd.totalGasConsumption, 0) AS drierGasConsumption,
tsu.total_kgs AS coating, 'tigrdot.*',
'invItems.*'
invItems.*,
tigrdot.*
FROM ]);
t_trpProductionMaintenanceDetails tpmd
JOIN // Join with other tables
t_trpProductionDetails tpd ON tpd.date = tpmd.date $builder->join('t_trpProductionDetails tpd', 'tpd.date = tpmd.date', 'inner');
JOIN $builder->join('t_trpProductionWasteDetails tpwd', 'tpwd.date = tpmd.date', 'inner');
t_trpProductionWasteDetails tpwd ON tpwd.date = tpmd.date $builder->join('t_trp_sand_use tsu', 'tsu.date = tpmd.date', 'left');
LEFT JOIN
t_trp_sand_use tsu ON tsu.date = tpmd.date
-- Aggregated Coating Machine Gas Consumption // Subquery: Coating Machine Gas Consumption
LEFT JOIN ( $subquery1 = $this->db->table('t_coatingMachineDetails')
SELECT date, SUM(totalGasConsumption) AS totalGasConsumption ->select('date, SUM(totalGasConsumption) AS totalGasConsumption')
FROM t_coatingMachineDetails ->groupBy('date')
GROUP BY date ->getCompiledSelect(false); // Convert Query Builder to raw SQL;
) tcmd ON tcmd.date = tpmd.date
-- Aggregated Drier Machine Gas Consumption $builder->join("({$subquery1}) tcmd", 'tcmd.date = tpmd.date', 'left');
LEFT JOIN (
SELECT date, SUM(total_gas_consumption) AS totalGasConsumption
FROM t_drierMachineDetails
GROUP BY date
) tdmd ON tdmd.date = tpmd.date
-- Aggregating Core Sand Reclaimed by Client // Subquery: Drier Machine Gas Consumption
LEFT JOIN ( $subquery2 = $this->db->table('t_drierMachineDetails')
SELECT ->select('date, SUM(total_gas_consumption) AS totalGasConsumption')
invItems.item_date_added, ->groupBy('date')
SUM(CASE WHEN clients.client_name = 'ASHOK LEYLAND LIMITED (FOUNDRY DIVISION-SRIPERUMBUDUR)' THEN invItems.item_quantity ELSE 0 END) AS `ALs_crs`, ->getCompiledSelect(false); // Convert Query Builder to raw SQL;
SUM(CASE WHEN clients.client_name = 'NEMAK ALUMINIUM CASTING INDIA PVT LTD' THEN invItems.item_quantity ELSE 0 END) AS `Nemak_crs`,
SUM(CASE WHEN clients.client_name = 'MADRAS ENGINEERING INDUSTRIES PRIVATE LIMITED' THEN invItems.item_quantity ELSE 0 END) AS `ME_crs`,
SUM(CASE WHEN clients.client_name = 'BRAKES INDIA PRIVATE LIMITED' THEN invItems.item_quantity ELSE 0 END) AS `BI_crs`,
SUM(CASE WHEN clients.client_name = 'KARMEN INTERNATIONAL PVT LTD' THEN invItems.item_quantity ELSE 0 END) AS `Karmen_crs`
FROM
ip_invoice_items invItems
LEFT JOIN
ip_invoices inv ON inv.invoice_id = invItems.invoice_id
LEFT JOIN
ip_clients clients ON clients.client_id = inv.client_id
WHERE
invItems.item_name = 'Core Sand Reclaimed'
OR invItems.item_name = 'Core Sand Reclaimed - Code No: 1203838'
OR invItems.item_name = 'Nemak Reclaimed Silica Sand 39-43'
AND invItems.item_date_added >= '$startDate'
AND invItems.item_date_added <= '$endDate'
GROUP BY
invItems.item_date_added
) invItems ON invItems.item_date_added = tpmd.date
-- Aggregating Waste Core Sand Suppliers $builder->join("({$subquery2}) tdmd", 'tdmd.date = tpmd.date', 'left');
LEFT JOIN (
SELECT
tigrd.CreatedDate,
SUM(CASE WHEN ts.SupplierName = 'Ashok leyland limited foundry divn-SPU' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `ALs_wcs`,
SUM(CASE WHEN ts.SupplierName = 'Ashok leyland limited foundry divn-ENU' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `ALe_wcs`,
SUM(CASE WHEN ts.SupplierName = 'MADRAS ENGINEERING INDUSTRIES PRIVATE LIMITED' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `ME_wcs`,
SUM(CASE WHEN ts.SupplierName = 'SIDDHARTH INDUSTRIES' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `SI_wcs`,
SUM(CASE WHEN ts.SupplierName = 'Caparo Engineering India Limited' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `caparo_wcs`,
SUM(CASE WHEN ts.SupplierName = 'NEMAK ALUMINIUM CASTING INDIA PVT LTD' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `Nemak_wcs`,
SUM(CASE WHEN ts.SupplierName = 'DR Axion India Private Limited' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS `DR_wcs`
FROM t_igr_details tigrd
LEFT JOIN t_igr_master tigm ON tigm.IGRNo = tigrd.IGRNo
LEFT JOIN t_purchaseorder_master tpom ON tpom.PONO = tigm.PONO
LEFT JOIN t_supplierdetailsn ts ON tpom.SupplierID = ts.SupplierID
WHERE
tigrd.MaterialCode IN ($materialCodesString)
AND Date(tigrd.CreatedDate) >= '$startDate'
AND Date(tigrd.CreatedDate) <= '$endDate'
GROUP BY Date(tigrd.CreatedDate)
) tigrdot ON DATE(tigrdot.CreatedDate) = tpmd.date
WHERE // Subquery: Core Sand Reclaimed by Clients
tpmd.date >= ?
AND tpmd.date <= ?
ORDER BY $crsClientList = $this->db->table('ip_clients clients')
tpmd.date ASC"; ->distinct()
->select( 'clients.client_name')
->join('ip_invoices inv', 'inv.client_id = clients.client_id')
->join('ip_invoice_items invItems', 'inv.invoice_id = invItems.invoice_id')
->whereIn('invItems.item_product_id', [81, 93])
->where('invItems.item_date_added >=', $startDate)
->where('invItems.item_date_added <=', $endDate)
->get()
->getResultArray();
if(!empty($crsClientList)){
$crsClientList = array_column($crsClientList, 'client_name');
// Initialize an empty array for dynamic SQL conditions
$caseStatements = [];
// Loop through the client list and build dynamic SUM(CASE WHEN...)
foreach ($crsClientList as $client) {
// Escape column name (remove spaces and special characters)
$safeClient = str_replace(' ', '_', $client);
// Add the condition to the array
$caseStatements[] = "SUM(CASE WHEN clients.client_name = " . $this->db->escape($client) . " THEN invItems.item_quantity ELSE 0 END) AS `$safeClient`";
}
// Convert array to a comma-separated string
$caseSQL = implode(', ', $caseStatements);
$subquery3 = $this->db->table('ip_invoice_items invItems')
->select([
'invItems.*',
$caseSQL
])
->join('ip_invoices inv', 'inv.invoice_id = invItems.invoice_id', 'left')
->join('ip_clients clients', 'clients.client_id = inv.client_id', 'left')
->whereIn('invItems.item_product_id', [81, 93])
->where('invItems.item_date_added >=', $startDate)
->where('invItems.item_date_added <=', $endDate)
->groupBy('invItems.item_date_added')
->getCompiledSelect(false); // Convert Query Builder to raw SQL;
$builder->join("({$subquery3}) invItems", 'invItems.item_date_added = tpmd.date', 'left');
}
// Subquery: Waste Core Sand Suppliers
$subquery4 = $this->db->table('t_igr_details tigrd')
->select([
'DATE(tigrd.CreatedDate) AS CreatedDate', // Convert CreatedDate to DATE format
"SUM(CASE WHEN ts.SupplierName = 'Ashok leyland limited foundry divn-SPU' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS ALs_wcs",
"SUM(CASE WHEN ts.SupplierName = 'Ashok leyland limited foundry divn-ENU' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS ALe_wcs",
"SUM(CASE WHEN ts.SupplierName = 'MADRAS ENGINEERING INDUSTRIES PRIVATE LIMITED' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS ME_wcs",
"SUM(CASE WHEN ts.SupplierName = 'SIDDHARTH INDUSTRIES' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS SI_wcs",
"SUM(CASE WHEN ts.SupplierName = 'Caparo Engineering India Limited' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS caparo_wcs",
"SUM(CASE WHEN ts.SupplierName = 'NEMAK ALUMINIUM CASTING INDIA PVT LTD' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS Nemak_wcs",
"SUM(CASE WHEN ts.SupplierName = 'DR Axion India Private Limited' THEN tigrd.QuantityAsPerInvoice ELSE 0 END) AS DR_wcs"
])
->join('t_igr_master tigm', 'tigm.IGRNo = tigrd.IGRNo', 'left')
->join('t_purchaseorder_master tpom', 'tpom.PONO = tigm.PONO', 'left')
->join('t_supplierdetailsn ts', 'tpom.SupplierID = ts.SupplierID', 'left')
->whereIn('tigrd.MaterialCode', $materialCodes) // FIXED: Now correctly formatted
->where('tigrd.CreatedDate >=', $startDate)
->where('tigrd.CreatedDate <=', $endDate)
->groupBy('DATE(tigrd.CreatedDate)')
->getCompiledSelect(false); // Convert Query Builder to raw SQL
// Correcting the JOIN condition
$builder->join("($subquery4) tigrdot", "CAST(tigrdot.CreatedDate AS DATE) = CAST(tpmd.date AS DATE)", 'left');
// Where conditions for main query
$builder->where('tpmd.date >=', $startDate);
$builder->where('tpmd.date <=', $endDate);
// Order by date
$builder->orderBy('tpmd.date', 'ASC');
// Execute the query // Execute the query
$query = $this->db->query($sql, [ $startDate, $endDate]); $query = $builder->get();
$result = $query->getResultArray(); $result = $query->getResultArray();
return $result; return $result;
} }

View File

@ -484,6 +484,8 @@ $timeOtions[] = "12:00 AM";
<?php if (!empty($trpProductionDetails)) { <?php if (!empty($trpProductionDetails)) {
// dd($trpProductionDetails);
?> ?>
<?php foreach ($trpProductionDetails as $trpProductionDetailIndex => $trpProductionDetail) { <?php foreach ($trpProductionDetails as $trpProductionDetailIndex => $trpProductionDetail) {