355 lines
17 KiB
PHP
Executable File
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;
|
|
}
|
|
}
|
|
}
|