diff --git a/app/Controllers/Inwardgateregister.php b/app/Controllers/Inwardgateregister.php index d42892c6..6715fd49 100755 --- a/app/Controllers/Inwardgateregister.php +++ b/app/Controllers/Inwardgateregister.php @@ -501,6 +501,10 @@ class Inwardgateregister extends BaseController $IGRItemStatus = REQITEM_NEW; $TotalPendingQty = ''; $TotalPendingQty = (int)$TotalPendingQty; + + // $PONO_array = $this->inwardgateregister_model->getAllPONO($PONO); + + #Step 7 To Update the Date PO MASTER , Material Master , Historydetails and IGR line Item Details Updating OGR Details for ($i = 1; $i <= (int)$RowCount; $i++) { $MaterialCode = $this->request->getPost('MaterialCode' . $i); @@ -609,17 +613,19 @@ class Inwardgateregister extends BaseController $totalReceivedqty = 0 ; - if(!$IsThisOpenOrderPO && $PreIGRStatus == 1){ + if(!$IsThisOpenOrderPO && $PreIGRStatus == "ST027"){ - $quantitiesReceived = $this->inwardgateregister_model->getOldIgrReceivedQty($MaterialCode,$PONO); + // $quantitiesReceived = $this->inwardgateregister_model->getOldIgrReceivedQty($MaterialCode,$PONO_array); + + $oldQuantityReceived = 0 ; $newQuantitiesReceived = $QuantityAsPerInvoice; - $changeInQuantities = $newQuantitiesReceived - $quantitiesReceived; + $changeInQuantities = $newQuantitiesReceived - $oldQuantityReceived; - $quantityToBeUpdated = $quantitiesReceived + $changeInQuantities; + $quantityToBeUpdated = $changeInQuantities; - $totalReceivedqty = $quantityToBeUpdated; + $totalReceivedqty = $oldQuantityReceived + $quantityToBeUpdated; $POLineItem = array('ReceivedQuantity' => $totalReceivedqty, 'Status' => $ItemStatus, 'UpdateBY' => $CreatedBy, 'UpdatedOn' => $createddt); @@ -909,6 +915,8 @@ function viewIGRDetails() $updateigrmaster = $this->inwardgateregister_model->updateigr($igrarr, $IGRNo); log_message('error', "Master updated successfully: " . $updateigrmaster); +// $PONO_array = $this->inwardgateregister_model->getAllPONO($PONo); + # Step 4 : loop starts here for IGRlineitem to save if(!empty($tableData )){ @@ -960,15 +968,18 @@ function viewIGRDetails() # Step 4.3 : IGRlineitem affectedRow have value and MaterialCode have value means # : updated the polineitem Qty - if(!$IsThisOpenOrderPO && $PreIGRStatus){ + if(!$IsThisOpenOrderPO && $PreIGRStatus == "ST027"){ - $quantitiesReceived = $this->inwardgateregister_model->getOldIgrReceivedQty($MaterialCode,$PONo); + + // $quantitiesReceived = $this->inwardgateregister_model->getOldIgrReceivedQty($MaterialCode,$PONO_array);d + + $oldQuantityReceived = $this->inwardgateregister_model->getOldIgrReceivedIndividualQty($IGRNo , $MaterialCode ); $newQuantitiesReceived = $quantityAsPerInvoice; - $changeInQuantities = $newQuantitiesReceived - $quantitiesReceived; + $changeInQuantities = $newQuantitiesReceived - $oldQuantityReceived; - $quantityToBeUpdated = $quantitiesReceived + $changeInQuantities; + $quantityToBeUpdated = $oldQuantityReceived + $changeInQuantities; $totalReceivedqty = $quantityToBeUpdated; diff --git a/app/Models/Inwardgateregister_model.php b/app/Models/Inwardgateregister_model.php index da505f6b..5a2a97de 100755 --- a/app/Models/Inwardgateregister_model.php +++ b/app/Models/Inwardgateregister_model.php @@ -721,20 +721,74 @@ class Inwardgateregister_model extends Model return $result; } - function getOldIgrReceivedQty( $MaterialCode, $PONO) { + + function getAllPONO($PONO){ + + $sql_first = "SELECT + Distinct tpol.PONO + From t_purchaseorder_lineitem tpol + Where tpol.ReqNo = ( + SELECT Distinct ReqNO from t_purchaseorder_lineitem tpol where tpol.PONO = ? + )"; + + $query_first = $this->db->query($sql_first, [$PONO]); + + $relatedPonosResult = $query_first->getResultArray(); + + log_message('info', print_r($relatedPonosResult, true)); + + + $PONO_array = []; + + if (!empty($relatedPonosResult)) { + $PONO_array = array_column($relatedPonosResult, 'PONO'); + return $PONO_array; + } + + if (empty($PONO_array)) { + log_message('info', 'No related PONOs found for given PONO. Returning 0.'); + return []; + } + + + } + + + function getOldIgrReceivedQty( $MaterialCode, $PONO_array) { + $builder = $this->db->table('t_igr_details tigrd') - ->selectSum('tigrd.QuantityAsPerInvoice') - ->join('t_igr_master tigrm','tigrm.IGRNO = tigrd.IGRNO AND tigrm.PONO = ' . $this->db->escape($PONO),'inner') - ->where('tigrm.IGRStatus', 'ST027') - ->where('tigrd.MaterialCode', $MaterialCode) - ->groupBy('tigrd.MaterialCode'); + ->selectSum('tigrd.QuantityAsPerInvoice') + ->join('t_igr_master tigrm', 'tigrm.IGRNO = tigrd.IGRNO', 'inner') + ->whereIn('tigrm.PONO', $PONO_array) + ->where('tigrm.IGRStatus', 'ST027') + ->where('tigrd.MaterialCode', $MaterialCode) + ->groupBy('tigrd.MaterialCode'); - $query = $builder->get()->getRow(); + $result = $builder->get()->getRow(); - log_message('info', 'getOldIgrReceivedQty Query: ' . $this->db->getLastQuery()->getQuery()); + log_message('info', 'getOldIgrReceivedQty Second Query: ' . $this->db->getLastQuery()->getQuery()); + + // Return the sum or 0 if no result from the second query + return $result ? $result->QuantityAsPerInvoice : 0; + } + + function getOldIgrReceivedIndividualQty($IGRNo , $MaterialCode){ + + $builder = $this->db->table('t_igr_details tigrd') + ->selectSum('tigrd.QuantityAsPerInvoice') + ->where('tigrd.IGRNO',$IGRNo) + ->where('tigrd.mIGRStatus', 'ST027') + ->where('tigrd.MaterialCode', $MaterialCode) + ->groupBy('tigrd.MaterialCode'); + + $result = $builder->get()->getRow(); + + log_message('info', 'getOldIgrReceivedIndividualQty Query: ' . $this->db->getLastQuery()->getQuery()); + + // Return the sum or 0 if no result from the second query + return $result ? $result->QuantityAsPerInvoice : 0; - return $query ? $query->QuantityAsPerInvoice : 0; } diff --git a/app/Views/Report_consolidate.php b/app/Views/Report_consolidate.php index 01027b2f..3814e333 100755 --- a/app/Views/Report_consolidate.php +++ b/app/Views/Report_consolidate.php @@ -101,7 +101,7 @@