ria/app/Models/Mrir_model.php
2024-09-11 08:54:25 +05:30

355 lines
17 KiB
PHP
Executable File

<?php
namespace App\Models;
use CodeIgniter\Model;
use DateTime;
use DateTimeZone;
class Mrir_model extends Model
{
/* This function is used to get the user listing count*/
/* This function is used to display the IGR in dropdown box*/
function getIGRNOonly()
{
$builder = $this->db->table('t_igr_master')->select('IGRNO')
->orderBy('IGRNO', 'asc');
$res = $builder->get();
return $res->getResult();
}
/* This function is used to get the igr value (button link)*/
function get_IGR($IgrNo)
{
$builder = $this->db->table('t_igr_master IGRM')
->distinct()
->select('IGRM.DeliveryChellanDate,IGRM.CreatedDate,IGRM.IGRNO,IGRM.VehicleNo,IGRM.DeliveryChellanOrInvoiceNo,IGRM.CourierNo,IGRM.PONO,IGRD.MaterialCode,IGRD.QuantityAsPerInvoice,POMR.ServiceDescription,POMR.PODate,POMR.DeliveryDate,POMR.CreatedBy,SUPP.SupplierName,SUPP.Address,MM.UOM,MM.MaterialName,POLT.Quantity,POLT.ReceivedQuantity,ED.FirstName')
//->select("DATE_FORMAT(IGRM.DeliveryChellanDate, '%d %m %Y') as DCdate")
->join('t_purchaseorder_master POMR ', 'IGRM.PONO=POMR.PONO')
->join('t_igr_details IGRD', 'IGRM.IGRNO=IGRD.IGRNO')
->join('t_supplierdetailsn SUPP', 'POMR.SupplierID=SUPP.SupplierID')
->join('t_materialmaster MM', ' MM.MaterialCode=IGRD.MaterialCode')
->join('t_purchaseorder_lineitem POLT', 'IGRM.PONO=POLT.PONO and IGRD.MaterialCode = POLT.MaterialCode')
->join('tbl_users user', 'user.userid=POMR.CreatedBy', 'left')
->join('t_employee_details ED', 'ED.EmpID = user.EmpID', 'left')
->where('IGRM.IGRNO', $IgrNo);
$query = $builder->get();
$result = $query->getResult();
return $result;
}
function ViewDistributionList()
{
$subQuery = 'Select distinct ReqLine.MaterialCode, MR.PONO, REQ.ReqNo,MM.MaterialName,MM.UOM,
EMP.FirstName,DD.DEPCode,DD.DepartmentName,ReqLine.Quantity as RequestedQty,POL.Quantity
as OrderedQuantity ,(MD.ActualQuantityReceived) as ActualReceivedqty,(MD.QuantityAccepted) as
AcceptedQty,REQ.ReqDate, ReqLine.Status as ReqStatus,
st.StatusCode as ReqStatus,st.StatusName,
ReqLine.Remarks
from t_requestion_details ReqLine join t_purchaseorder_lineitem POL
on ReqLine.ReqNo = POL.ReqNo and ReqLine.MaterialCode = POL.MaterialCode
join t_requestion_master REQ on REQ.ReqNo = ReqLine.ReqNo
join t_purchaseorder_master POMast on POMast.PONO=POL.PONO
join t_status st on ReqLine.Status = st.StatusCode
join t_mrir_master MR on MR.PONO = POL.PONO join t_mrir_details MD
on MD.MRIRNO = MR.MRIRNO and ReqLine.MaterialCode = MD.MaterialCode join t_materialmaster MM on
MM.MaterialCode = ReqLine.MaterialCode join
t_employee_details EMP on EMP.EmpID = REQ.Requestedby join
t_departmentdetails DD on DD.DEPCode = EMP.Departmentcode where
POL.status in (?,?)
and ReqLine.Status not in(?) and POMast.status not in(?)
group by ReqLine.MaterialCode ,POL.PONO';
$query = $this->db->query($subQuery, array(MRIR_APPROVED, PARTIAL_MRIRAPPROVED, REQITEM_NEW, PO_AMENDED));
return $query->getResult();
}
/* This function is used to list the MRIR value*/
function view_mrir()
{
$builder = $this->db->table('t_mrir_master TMM')
->distinct()
->select('TMM.MRIRNO,TMM.PONO,TMM.IGRNO,TMM.MRIRStatus,ST.StatusName,IGRM.DeliveryChellanOrInvoiceNo,IGRM.DeliveryChellanDate,IGRM.VehicleNo,IGRM.CourierNo,TMD.StoreInchargeID,TMD.QualityInchargeID,TMD.PlantInchargeID,TMD.UpdateBY,POM.PODate,POM.POType,POM.CreatedBy,ED.FirstName as UpdatedbyName,ED1.FirstName as CreatedByName')
->join('t_mrir_details TMD', 'TMM.MRIRNO=TMD.MRIRNO')
->join('t_igr_master IGRM', 'TMM.IGRNO=IGRM.IGRNO')
->join('t_igr_details IGRD', 'IGRM.IGRNO=IGRD.IGRNO')
->join('t_purchaseorder_master POM', 'TMM.PONO=POM.PONO')
->join('tbl_users user', 'user.userid=TMD.UpdateBY', 'left')
->join('t_employee_details ED', 'ED.EmpID = user.EmpID', 'left')
->join('tbl_users user1', 'user1.userid = POM.CreatedBy', 'left')
->join('t_employee_details ED1', 'ED1.EmpID = user1.EmpID', 'left')
->join('t_status ST', 'ST.StatusCode = TMM.MRIRStatus')
//->where('POM.IsQualityChkReqired !=','0')
->orderBy('TMM.MRIRNO', 'desc');
$query = $builder->get();
return $query->getResult();
}
function getStatus()
{
$builder = $this->db->table('t_status')
->select('StatusCode,StatusName')
->where('StatusType', 8);
$query = $builder->get();
return $query->getResult();
}
/* This function is used to list the MRIR value*/
function view_mrir_Billing()
{
$builder = $this->db->table('t_mrir_master TMM')
->distinct()
->select('TMM.MRIRNO,TMM.PONO, TMM.IGRNO,IGRM.DeliveryChellanOrInvoiceNo,
IGRM.DeliveryChellanDate,IGRM.VehicleNo,IGRM.CourierNo,TMD.QualityInchargeID,
TMD.PlantInchargeID,TMD.UpdateBY, POM.PODate,POM.POType,POM.ReleasedBy,ED2.FirstName as StoreinchargeName,POM.IsQualityChkReqired,POM.POType,POM.CapitalRange,POM.Status,
ED.FirstName as UpdatedbyName,ED1.FirstName as ReleasedbyName,MM.MaterialCode,MM.MaterialName,
MM.UOM, POL.Quantity,IGRD.QuantityAsPerInvoice, TMD.ActualQuantityReceived,TMD.QuantityAccepted,
TMD.QuantityRejected,ST.StatusName,TMD.Remarks,AdvanceAmount ')
->join('t_mrir_details TMD', 'TMM.MRIRNO=TMD.MRIRNO', 'left')
->join('t_igr_master IGRM', 'TMM.IGRNO=IGRM.IGRNO')
->join('t_igr_details IGRD', 'IGRM.IGRNO=IGRD.IGRNO and IGRD.MaterialCode = TMD.MaterialCode')
->join('t_purchaseorder_master POM', 'POM.PONO=IGRM.PONO')
->join('t_purchaseorder_lineitem POL', 'POL.PONO=POM.PONO and TMD.MaterialCode = POL.MaterialCode')
->join('t_purchaseorder_advancerequest PUADV', 'POM.PONO=PUADV.PONO', 'left')
->join('tbl_users user', 'user.userid=TMD.UpdateBY', 'left')
->join('t_employee_details ED', 'ED.EmpID = user.EmpID', 'left')
->join('tbl_users user1', 'user1.userid = POM.ReleasedBy', 'left')
->join('t_employee_details ED1', 'ED1.EmpID = user1.EmpID', 'left')
->join('tbl_users user2', 'user2.userid=TMD.StoreInchargeID', 'left')
->join('t_employee_details ED2', 'ED2.EmpID = user2.EmpID', 'left')
->join('t_materialmaster MM', 'MM.MaterialCode = IGRD.MaterialCode and POL.MaterialCode = MM.MaterialCode')
->join('t_status ST', 'ST.StatusCode = TMD.MRIRStatus')
->where('TMM.MRIRStatus', MRIR_APPROVED)
->orderBy('TMM.UpdatedOn', 'desc');
$query = $builder->get();
return $query->getResult();
}
/* This function is used to get the MRIR value for edit*/
function edit_mrir($MrirNo)
{
$builder = $this->db->table('t_mrir_master TMM')
->distinct()->select('TMM.MRIRNO,TMM.PONO,TMM.IGRNO,TMM.Createdon as MRIRCreatedon,TMD.MRIRItemNo,TMD.ActualQuantityReceived,TMD.QuantityAccepted,TMD.QuantityRejected,IGRM.DeliveryChellanOrInvoiceNo,IGRM.DeliveryChellanDate,IGRM.VehicleNo,IGRM.CourierNo,IGRM.CreatedDate as IGRCreated,IGRD.QuantityAsPerInvoice,SUPP.SupplierName,SUPP.Address,POMR.PODate,POMR.DeliveryDate,POMR.ServiceDescription,TMD.MaterialCode,MM.MaterialName,MM.UOM,Line.Quantity,Line.ReceivedQuantity,ED.FirstName as PORasiedbyName,ED1.FirstName as MRIRRasiedbyName, ED2.FirstName as IGRRasiedbyName,TMM.MRIRStatus,Line.CostCenterCode,COST.CostCenterName,TMD.Remarks')
->join('t_mrir_details TMD', 'TMM.MRIRNO = TMD.MRIRNO') //to get IGRNO,PONO,MRIRNO,mrirdate,
->join('t_igr_master IGRM', 'IGRM.IGRNO = TMM.IGRNO') //to get actualquantity,deliverydate,Invoicedate,vechileno,courierno,igrdate,
->join('t_purchaseorder_master POMR ', 'IGRM.PONO = POMR.PONO') //to get podate,deliverydate,servicedescription
// ->join ('t_purchaseorder_lineitem POLT','IGRM.PONO=POLT.PONO');//to get receivedquantity,quantity
->join('t_purchaseorder_lineitem Line', 'TMM.PONO=Line.PONO and TMD.MaterialCode=Line.MaterialCode')
->join('t_costcenter_master COST', 'Line.CostCenterCode=COST.CostCenterCode', 'left')
//->join ('t_igr_details IGRD','IGRD.IGRNO = IGRM.IGRNO');//to get invoicequantity
->join('t_igr_details IGRD', 'IGRD.IGRNO = TMM.IGRNO and TMD.MaterialCode=IGRD.MaterialCode')
->join('t_materialmaster MM', 'TMD.MaterialCode = MM.MaterialCode')
->join('t_supplierdetailsn SUPP', 'POMR.SupplierID = SUPP.SupplierID') //to get suppliername,supplieraddress
->join('tbl_users user', 'user.userid = POMR.CreatedBy') //to get poraisedby
->join('t_employee_details ED', 'ED.EmpID = user.EmpID')
->join('tbl_users user1', 'user1.userid=TMM.CreatedBy') //to get mrirraisedby
->join('t_employee_details ED1', 'ED1.EmpID = user1.EmpID')
->join('tbl_users user2', 'user2.userid=IGRM.CreatedBy') //to get igrraisedby
->join('t_employee_details ED2', 'ED2.EmpID = user2.EmpID')
->where('TMM.MRIRNO', $MrirNo)
->groupBy('TMM.MRIRNO,TMD.MaterialCode');
$query = $builder->get();
$result = $query->getResult();
return $result;
}
/* This function is used to store the MRIR value in master table*/
function master_mrir($mrirmastervalues)
{
$builder = $this->db->table('t_mrir_master');
$builder->insert($mrirmastervalues);
$insert_id = $this->db->affectedRows();
if ($insert_id > 0) {
//$subQuery = 'select max(MRIRNO) as MRIRNo from t_mrir_master';
$subQuery = 'select MRIRNO from t_mrir_master order by Createdon desc limit 1';
$query = $this->db->query($subQuery);
return $query->getResult(); //_array();
}
}
/* This function is used to store the MRIR value in detail table*/
function detail_mrir($mrirdetailvalues)
{
$builder = $this->db->table('t_mrir_details');
$builder->insert($mrirdetailvalues);
$insert_id = $this->db->affectedRows();
return $insert_id;
}
/* This function is used to update the value in MRIR master table*/
function update_mrirmaster($updatemastervalues, $mrir_no)
{
$builder = $this->db->table('t_mrir_master')
->where('MRIRNO', $mrir_no)
->update($updatemastervalues);
$r = $this->db->affectedRows();
return $r;
}
function UpdateReqStatus()
{
}
/* This function is used to update the value in MRIR detail table*/
function update_mrirdetail($updatedetailvalues, $Lineitm)
{
$builder = $this->db->table('t_mrir_details')
->where('MRIRItemNo', $Lineitm)
->update($updatedetailvalues);
}
/* This function is used to get the value for modal in view MRIR page */
function get_MRIRs($mrir)
{
$builder = $this->db->table('t_mrir_master TMM')
->select('TMM.MRIRNO,TMM.PONO,TMM.IGRNO,TMD.*,IGRM.DeliveryChellanOrInvoiceNo,IGRM.DeliveryChellanDate,IGRM.VehicleNo,IGRD.*,SUPP.SupplierName,SUPP.Address,POMR.DeliveryDate,POMR.ServiceDescription,MM.MaterialCode,MM.UOM,MM.MaterialName,POLT.Quantity,POLT.ReceivedQuantity,POMR.POType,ED.FirstName as StoreinchargeName')
->join('t_mrir_details TMD', 'TMM.MRIRNO = TMD.MRIRNO')
->join('t_materialmaster MM', 'TMD.MaterialCode = MM.MaterialCode')
->join('t_igr_master IGRM', 'IGRM.IGRNO=TMM.IGRNO')
->join('t_purchaseorder_master POMR ', 'IGRM.PONO=POMR.PONO')
->join('t_purchaseorder_lineitem POLT', 'IGRM.PONO=POLT.PONO and POLT.MaterialCode=TMD.MaterialCode')
->join('t_igr_details IGRD', 'IGRD.IGRNO= IGRM.IGRNO and IGRD.MaterialCode=TMD.MaterialCode')
->join('t_supplierdetailsn SUPP', 'POMR.SupplierID=SUPP.SupplierID')
->join('tbl_users user', 'user.userid=TMD.StoreInchargeID', 'left')
->join('t_employee_details ED', 'ED.EmpID = user.EmpID', 'left')
->where('TMD.MRIRNO', $mrir);
//->orderBy('TMD.MRIRNO','asc');
$query = $builder->get();
$result = $query->getResult();
//print_r($result);
return $result;
}
function get_IGRdatas()
{
$builder = $this->db->table('t_igr_master IGRM')
->select('IGRM.*,IGRD.*,SUPP.SupplierName,SUPP.Address,TMM.PONO,TMD.*,MM.MaterialCode,MM.UOM,MM.MaterialName,POLT.Quantity,POLT.ReceivedQuantity')
->join('t_purchaseorder_master POMR ', 'IGRM.PONO=POMR.PONO', 'left')
->join('t_mrir_master TMM', 'TMM.IGRNO=IGRM.IGRNO')
->join('t_mrir_details TMD', 'TMD.MRIRNO=TMM.MRIRNO')
->join('t_igr_details IGRD', 'IGRD.IGRNO= IGRM.IGRNO', 'left')
->join('t_purchaseorder_lineitem POLT', 'IGRM.PONO=POLT.PONO', 'left')
->join('t_supplierdetailsn SUPP', 'POMR.SupplierID=SUPP.SupplierID', 'left')
->join('t_materialmaster MM', ' MM.MaterialCode=TMD.MaterialCode', 'left');
//->where('IGRM.IGRNO ');
$query = $builder->get();
$result = $query->getResult();
//print_r($result);
return $result;
}
function UpdateIGRStatus($IGRDetails, $IGRNO)
{
$builder = $this->db->table('t_igr_master')
->where('IGRNO', $IGRNO)
->update($IGRDetails);
return TRUE;
}
function getItemQuantityFromStock($MaterialCode)
{
// echo $MaterialCode;
// die();
$subQuery = 'select Quantity from t_store_stockdetails where MaterialCode=?';
$query = $this->db->query($subQuery, array($MaterialCode));
return $query->getResultArray();
}
function UpdateStock($StockDetails, $MaterialCode)
{
$builder = $this->db->table('t_store_stockdetails')
->where('MaterialCode', $MaterialCode)
->update($StockDetails);
return TRUE;
}
function getMRIRBillingList()
{
}
function UpdatePOLineItem($LineItem, $PONO, $MaterialCode)
{
$subQuery = 'select * from t_purchaseorder_lineitem where Quantity = ReceivedQuantity and PONO=? and MaterialCode=? ';
$query = $this->db->query($subQuery, array($PONO, $MaterialCode));
$ApprovedCount = $query->getNumRows();
$subQuery = 'select * from t_purchaseorder_lineitem where Quantity > ReceivedQuantity and ReceivedQuantity != 0 and PONO=? and MaterialCode=?';
$query = $this->db->query($subQuery, array($PONO, $MaterialCode));
$PartialApproved = $query->getNumRows();
// echo 'Partialcount'.$PartialApproved;
if ($ApprovedCount > 0) {
$builder = $this->db->table('t_purchaseorder_lineitem')
->where('PONO', $PONO)
->where('MaterialCode', $MaterialCode)
->update($LineItem);
return TRUE;
} elseif ($PartialApproved > 0) {
$updateby = $this->session->get('userId');
$updateon = get_current_date_time();
$POLineItem = array('Status' => PARTIAL_MRIRAPPROVED, 'UpdateBY' => $updateby, 'UpdatedOn' => $updateon);
$builder = $this->db->table('t_purchaseorder_lineitem')
->where('PONO', $PONO)
->where('MaterialCode', $MaterialCode)
->update($POLineItem);
return TRUE;
}
}
function UpdatePOMaster($PONO, $PoMrirStatus, $updatedBy)
{
$builder = $this->db->table('t_purchaseorder_lineitem')
->select('*')
->where('PONO', $PONO)
->where('Status !=', MRIR_APPROVED);
$query = $builder->get();
$ApprovedCnt = $query->getNumRows();
$builder1 = $this->db->table('t_purchaseorder_lineitem')->select('*')
->where('PONO', $PONO)
->where('Status !=', MRIR_REJECTED);
$query1 = $builder1->get();
$RejectedCnt = $query1->getNumRows();
if ($ApprovedCnt == 0) {
$POStatus = array('status' => MRIR_APPROVED, 'UpdateBY' => $updatedBy);
$builder = $this->db->table('t_purchaseorder_master')
->where('PONO', $PONO)
->update($POStatus);
return TRUE;
}
if ($RejectedCnt == 0) {
$POStatus = array('status' => MRIR_REJECTED, 'UpdateBY' => $updatedBy);
$builder = $this->db->table('t_purchaseorder_master')
->where('PONO', $PONO)
->update($POStatus);
return TRUE;
}
}
}