499 lines
18 KiB
PHP
499 lines
18 KiB
PHP
<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
class purchaseorder_model extends CI_Model
|
|
{
|
|
/**
|
|
* This function is used to get the user listing count
|
|
* @param string $searchText : This is optional search text
|
|
* @return number $count : This is row count
|
|
*/
|
|
function purchaseorderListingCount($searchText = '')
|
|
{
|
|
$this->db->select('BaseT.PONO, BaseT.POType, BaseT.PODate, ID.SupplierID,BaseT.SpecialOrder, users.UserID,BaseT.RequesterEmail,BaseT.RequesterPh,BaseT.RequestedDate,BaseT.BudgetManager,BaseT.BudgetManagerDepartment,BaseT.PurchasingCategory');
|
|
$this->db->from('T_PurchaseOrderDetails as BaseT');
|
|
$this->db->join('tbl_users as users', 'users.userId = BaseT.userId','left');
|
|
$this->db->join('T_SupplierDetailsN as ID', 'ID.SupplierID = BaseT.SupplierID','left');
|
|
if(!empty($searchText)) {
|
|
$likeCriteria = "(BaseT.PONO LIKE '%".$searchText."%'
|
|
OR BaseT.POType LIKE '%".$searchText."%'
|
|
OR BaseT.PODate LIKE '%".$searchText."%'
|
|
OR BaseT.SupplierID LIKE '%".$searchText."%'
|
|
OR BaseT.UserID LIKE '%".$searchText."%'
|
|
OR BaseT.RequesterEmail LIKE '%".$searchText."%'
|
|
OR BaseT.RequesterPh LIKE '%".$searchText."%'
|
|
OR BaseT.RequestedDate LIKE '%".$searchText."%'
|
|
OR BaseT.BudgetManager LIKE '%".$searchText."%'
|
|
OR BaseT.BudgetManagerDepartment LIKE '%".$searchText."%'
|
|
OR BaseT.PurchasingCategory LIKE '%".$searchText."%'
|
|
OR BaseT.SpecialOrder LIKE '%".$searchText."%')";
|
|
$this->db->where($likeCriteria);
|
|
}
|
|
//$this->db->where('BaseT.isDeleted', 0);
|
|
$this->db->where('BaseT.userId !=', 1);
|
|
$query = $this->db->get();
|
|
|
|
return count($query->result());
|
|
}
|
|
|
|
/**
|
|
* This function is used to get the user listing count
|
|
* @param string $searchText : This is optional search text
|
|
* @param number $page : This is pagination offset
|
|
* @param number $segment : This is pagination limit
|
|
* @return array $result : This is result
|
|
*/
|
|
function purchaseorderListing($searchText = '', $page, $segment)
|
|
{
|
|
$this->db->select('BaseT.PONO, BaseT.POType, BaseT.PODate, ID.SupplierID,BaseT.SpecialOrder, users.UserID,BaseT.RequesterEmail,BaseT.RequesterPh, BaseT.RequestedDate, BaseT.BudgetManager, BaseT.BudgetManagerDepartment, BaseT.PurchasingCategory');
|
|
$this->db->from('T_PurchaseOrderDetails as BaseT');
|
|
$this->db->join('tbl_users as users', 'users.userId = BaseT.userId','left');
|
|
$this->db->join('T_SupplierDetailsN as ID', 'ID.SupplierID = BaseT.SupplierID','left');
|
|
if(!empty($searchText)) {
|
|
$likeCriteria = "(BaseT.PONO LIKE '%".$searchfield."%'
|
|
OR BaseT.POType LIKE '%".$searchText."%'
|
|
OR BaseT.PODate LIKE '%".$searchText."%'
|
|
OR BaseT.SupplierID LIKE '%".$searchText."%'
|
|
OR BaseT.UserID LIKE '%".$searchText."%'
|
|
OR BaseT.RequesterEmail LIKE '%".$searchText."%'
|
|
OR BaseT.RequesterPh LIKE '%".$searchText."%'
|
|
OR BaseT.RequestedDate LIKE '%".$searchText."%'
|
|
OR BaseT.BudgetManager LIKE '%".$searchText."%'
|
|
OR BaseT.BudgetManagerDepartment LIKE '%".$searchText."%'
|
|
OR BaseT.PurchasingCategory LIKE '%".$searchText."%'
|
|
OR BaseT.SpecialOrder LIKE '%".$searchText."%')";
|
|
$this->db->where($likeCriteria);
|
|
}
|
|
//$this->db->where('BaseT.isDeleted', 0);
|
|
//$this->db->where('BaseT.userId !=', 1);
|
|
$this->db->limit($page, $segment);
|
|
$query = $this->db->get();
|
|
|
|
$result = $query->result();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* This function is used to get the SupplierID and SupplierName information
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getSupplierName($supID='')
|
|
{
|
|
$this->db->select('SupplierID, SupplierName,Address');
|
|
$this->db->from('T_SupplierDetailsN');
|
|
if($supID != '')
|
|
{
|
|
$this->db->where('SupplierID',$supID);
|
|
}
|
|
//$this->db->where('roleId !=', 1);
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
/**
|
|
* This function is used to get the userId information
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getusers()
|
|
{
|
|
$this->db->select('userId, name');
|
|
$this->db->from('tbl_users');
|
|
//$this->db->where('roleId !=', 1);
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
/**
|
|
* This function is used to get the Raw Material information
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getRawMaterialList($MatType='',$ReqNoList='')
|
|
{
|
|
|
|
$this->db->select('ReqNo,Req.MaterialCode,MaterialName,UOM,Req.Quantity');
|
|
$this->db->from('T_Requestion_Details Req');
|
|
$this->db->join('T_MaterialMaster mat', 'Req.MaterialCode = mat.MaterialCode');
|
|
$this->db->where('mat.MaterialType', $MatType);
|
|
$this->db->where_in('Req.ReqNo', $ReqNoList);
|
|
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
/**
|
|
* This function is used to get the Requsition List for the login user
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getRequistDetails($ReqNoList='')
|
|
{
|
|
$this->db->distinct();
|
|
$this->db->select('ReqNo,ReqType,Status,Requestedby,mast.CreatedDate,emp.FirstName,emp.EmpID,emp.Designation, Dept.DEPCode,Dept.DepartmentName,mast.ReqDate');
|
|
$this->db->from('T_Requestion_Master mast');
|
|
$this->db->join('T_Employee_Details emp', 'mast.Requestedby = emp.EmpID');
|
|
$this->db->join('T_DepartmentDetails Dept', 'emp.Departmentcode = Dept.DEPCode');
|
|
$this->db->where_in('mast.ReqNo', $ReqNoList);
|
|
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
/**
|
|
* This function is used to get the Cost center information
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getCostCenter()
|
|
{
|
|
|
|
$this->db->select('CostName, Description');
|
|
$this->db->from('T_CostCentre');
|
|
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to get the CostCenter for the Selected Requistion Number
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getCostCenterbyRequist($ReqNo='',$BudYear='',$ReqType='')
|
|
{
|
|
|
|
$this->db->distinct();
|
|
$this->db->select('Mast.CostCenterCode,Mast.CostCenterName,Bud.BudgetAmount,ReqNo');
|
|
$this->db->from('T_CostCenter_Master Mast');
|
|
$this->db->join('T_CostCenter_Departments CostDept', 'CostDept.CostCenterCode = Mast.CostCenterCode');
|
|
$this->db->join('T_CostCenter_Budget Bud', 'Bud.CostCenterCode = Mast.CostCenterCode');
|
|
$this->db->join('T_Employee_Details emp', 'CostDept.DEPCode = emp.Departmentcode');
|
|
$this->db->join('T_Requestion_Master req', 'req.Requestedby = emp.EmpID');
|
|
|
|
$this->db->where('BudgetType ',$ReqType );
|
|
$this->db->where('BudgetYear ',$BudYear );
|
|
if($ReqNo != '')
|
|
{
|
|
$this->db->where('ReqNo ',$ReqNo);
|
|
}
|
|
|
|
$query = $this->db->get();
|
|
return $query->result();
|
|
}
|
|
|
|
/**
|
|
* This function is used to get the Config value from configuration table
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getFormula($FormulaID='' ,$Type = '')
|
|
{
|
|
|
|
$this->db->select('FormulaID,Condition1,Condition2,Condition3,value1,value2,value3');
|
|
$this->db->from('T_Formula_Details');
|
|
if($FormulaID != '')
|
|
{
|
|
$this->db->where('FormulaID ',$FormulaID );
|
|
}
|
|
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to get the Config value from configuration table
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getConfigValue($ConfigID ,$ConfigValue = '')
|
|
{
|
|
|
|
$this->db->select('ConfigValue');
|
|
$this->db->from('T_ConfigDetails');
|
|
$this->db->where('Config_id ',$ConfigID );
|
|
if($ConfigValue != '')
|
|
{
|
|
$this->db->where('ConfigValue != ',$ConfigValue );
|
|
}
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to get the Purchase order Type
|
|
* @return array $result : This is result of the query
|
|
*/
|
|
function getAllEmployees()
|
|
{
|
|
$this->db->select('EmpID,FirstName,LastName');
|
|
$this->db->from('T_Employee_Details');
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* This function is used to add New Purchase order to the system
|
|
|
|
*/
|
|
function addPOMaster($POMaster)
|
|
{
|
|
$this->db->trans_start();
|
|
$this->db->insert('T_PurchaseOrder_Master', $POMaster);
|
|
$insert_id = $this->db->affected_rows();
|
|
$this->db->trans_complete();
|
|
// print_r($this->db->last_query());
|
|
if($insert_id>0)
|
|
{
|
|
$subQuery = 'select max(PONO) as PONO from T_PurchaseOrder_Master';
|
|
|
|
$query = $this->db->query($subQuery);
|
|
|
|
return $query->result_array();
|
|
}
|
|
}
|
|
/**
|
|
* This function is used to add New Purchase order Line Item to the system
|
|
*/
|
|
function addPOLineItem($POLineItem)
|
|
{
|
|
$this->db->trans_start();
|
|
$this->db->insert('T_PurchaseOrder_LineItem', $POLineItem);
|
|
$insert_id = $this->db->affected_rows();
|
|
$this->db->trans_complete();
|
|
// print_r($this->db->last_query());
|
|
if($insert_id>0)
|
|
{
|
|
$subQuery = 'select max(LineItemNo) as LineItemNo from T_PurchaseOrder_LineItem';
|
|
|
|
$query = $this->db->query($subQuery);
|
|
|
|
return $query->result_array();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This function is used to add New Purchase order Line Item to the system
|
|
*/
|
|
function addRevenueTax($RevenueTaxList)
|
|
{
|
|
$this->db->trans_start();
|
|
$this->db->insert('T_Revenue_Tax', $RevenueTaxList);
|
|
$insert_id = $this->db->affected_rows();
|
|
$this->db->trans_complete();
|
|
return $insert_id;
|
|
}
|
|
/**
|
|
* This function is used to add new PO Line Item to T_PurchaseOrderLineItem table
|
|
* @return number $insert_id : This is last inserted id
|
|
*/
|
|
|
|
function addNewPOLineItem($PONO,$Material_ID,$UOM,$Quantity,$UnitPrice)
|
|
{
|
|
//echo 'addNewPOLineItem Model called';
|
|
|
|
$result = $this->db-> query("CALL P_LINEITEM('".$PONO."','".$Material_ID."','".$UOM."',".$Quantity.",".$UnitPrice.")") or die(mysql_error());
|
|
|
|
$result ->next_result();
|
|
|
|
//print_r($this->db->last_query());
|
|
|
|
if ($result->num_rows > 0)
|
|
{
|
|
//echo 'PO Line item Inserted successfully';
|
|
return $result->result_array();
|
|
}
|
|
|
|
return $result ->result_array(); ;
|
|
}
|
|
|
|
/**
|
|
* This function used to get user information by id
|
|
* @param number $userId : This is user id
|
|
* @return array $result : This is user information
|
|
*/
|
|
function getPOLineItem($PO = '')
|
|
{
|
|
$this->db->select('POline.POLineNo as POLineNo,Raw.MaterialName as materialName ,POline.UOM as UOM,POline.Quantity as Quantity,POline.UnitPrice as UnitPrice, (POline.Quantity * POline.UnitPrice) as ProductPrice');
|
|
$this->db->from('T_POLineItem as POline ');
|
|
$this->db->join('T_RawMaterialDetailsN as Raw', 'POline.Material_ID = Raw.MaterialCode');
|
|
if(!empty($PO)) {
|
|
|
|
$this->db->where('POline.PONO', $PO);
|
|
}
|
|
else
|
|
{
|
|
$likeCriteria = "(POline.PONO is null)";
|
|
$this->db->where($likeCriteria);
|
|
}
|
|
|
|
$query = $this->db->get();
|
|
// print_r($query);
|
|
$result = $query->result();
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* This function used to get user information by id
|
|
* @param number $userId : This is user id
|
|
* @return array $result : This is user information
|
|
*/
|
|
function getuserInfo($PO)
|
|
{
|
|
$this->db->select('POType, PODate, SupplierID,SpecialOrder,UserID,RequestedDate,RequesterEmail,RequesterPh, PurchasingCategory,BudgetManager,BudgetManagerDepartment,');
|
|
$this->db->from('T_PurchaseOrderDetails');
|
|
$this->db->where('PONO', $PO);
|
|
$query = $this->db->get();
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
function getPurchaseOrder($PONO)
|
|
{
|
|
$this->db->select('PODetail.*,Supplier.SupplierName,Supplier.Address,usr.name as usrName');
|
|
$this->db->from('T_PurchaseOrderDetails AS PODetail');
|
|
$this->db->join('T_SupplierDetailsN as Supplier', 'PODetail.SupplierID = Supplier.SupplierID');
|
|
$this->db->join('tbl_users as usr', 'usr.userId = PODetail.UserID');
|
|
$this->db->where('PODetail.PONO', $PONO);
|
|
$query = $this->db->get();
|
|
|
|
$result = $query->result();
|
|
|
|
// print_r($this->db->last_query());
|
|
return $result;
|
|
}
|
|
|
|
function getLastInsertedPO()
|
|
{
|
|
$this->db->select('max(PONO) as PO');
|
|
$this->db->from('T_PurchaseOrderDetails');
|
|
$query = $this->db->get();
|
|
|
|
return $query->result_array();
|
|
}
|
|
function updatePODetails($PO,$PODetails)
|
|
{
|
|
$this->db->where('PONO', $PO);
|
|
$this->db->update('T_PurchaseOrderDetails', $PODetails);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* This Method to get all the Department name for the requistion */
|
|
function getDepartmentListForAllReq()
|
|
{
|
|
$subQuery ='SELECT DISTINCT DEPT.DEPCode,DEPT.DepartmentName FROM T_Requestion_Master REQ
|
|
JOIN T_Employee_Details EMP ON REQ.Requestedby = EMP.EmpID
|
|
JOIN T_DepartmentDetails DEPT ON EMP.Departmentcode = DEPT.DEPCode WHERE REQ.Status not in(?,?,?,?)';
|
|
|
|
$query = $this->db->query($subQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED));
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
function getStatusListforAllReq()
|
|
{
|
|
$subQuery ='SELECT DISTINCT STAT.StatusCode, STAT.StatusName FROM T_Requestion_Master REQ
|
|
JOIN T_Status STAT on REQ.Status = STAT.StatusCode where STAT.StatusCode not in (?,?,?,?)';
|
|
$query = $this->db->query($subQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED));
|
|
|
|
// print_r( $this->db->last_query());
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
function getStatusByDepartment($DepNo='')
|
|
{
|
|
|
|
$subQuery ='SELECT DISTINCT STAT.StatusCode ,STAT.StatusName FROM T_Requestion_Master REQ
|
|
JOIN T_Employee_Details EMP ON REQ.Requestedby = EMP.EmpID
|
|
JOIN T_DepartmentDetails DEPT ON EMP.Departmentcode = DEPT.DEPCode
|
|
JOIN T_Status STAT ON REQ.Status = STAT.StatusCode
|
|
WHERE DEPT.DEPCode=? AND REQ.Status NOT IN (?,?,?,?)';
|
|
$query = $this->db->query($subQuery,array($DepNo,REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED));
|
|
|
|
return $query->result_array();
|
|
}
|
|
|
|
function getRequistionListbySearch($Depid='',$Status='',$FromDate='',$ToDate='')
|
|
{
|
|
$subQuery =' SELECT ReqNo,ReqType,Requestedby,EMP.FirstName,EMP.Designation,STAT.StatusCode ,STAT.StatusName,ReqDate,DEPT.DEPCode,DEPT.DepartmentName FROM T_Requestion_Master REQ
|
|
JOIN T_Employee_Details EMP ON REQ.Requestedby = EMP.EmpID
|
|
JOIN T_DepartmentDetails DEPT ON EMP.Departmentcode = DEPT.DEPCode
|
|
JOIN T_Status STAT on REQ.Status = STAT.StatusCode
|
|
where REQ.Status NOT IN (?,?,?,?)';
|
|
|
|
$appendQuery = $subQuery ;
|
|
|
|
if($Depid != '' && $Status != '' && $FromDate != '' && $ToDate != '')
|
|
{
|
|
$appendQuery .= ' AND DEPT.DEPCode=? AND STAT.StatusCode=? AND ReqDate >= ? AND ReqDate <= ?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$Depid ,$Status,$FromDate,$ToDate));
|
|
//print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else if($Depid != '' && $Status == '' && $FromDate == '' && $ToDate == '')
|
|
{
|
|
$appendQuery .= ' AND DEPT.DEPCode=?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$Depid));
|
|
//print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else if($Depid == '' && $Status != '' && $FromDate == '' && $ToDate == '')
|
|
{
|
|
$appendQuery .= ' AND STAT.StatusCode=?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$Status));
|
|
//print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else if($Depid == '' && $Status == '' && $FromDate != '' && $ToDate != '')
|
|
{
|
|
$appendQuery .= ' AND ReqDate >= ? AND ReqDate <= ?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$FromDate,$ToDate));
|
|
//print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else if($Depid != '' && $Status != '' && $FromDate == '' && $ToDate == '')
|
|
{
|
|
$appendQuery .= ' AND DEPT.DEPCode=? AND STAT.StatusCode=?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$Depid ,$Status));
|
|
// print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else if($Depid != '' && $Status == '' && $FromDate != '' && $ToDate != '')
|
|
{
|
|
$appendQuery .= ' AND DEPT.DEPCode=? AND ReqDate >= ? AND ReqDate <= ?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$Depid ,$FromDate,$ToDate));
|
|
//print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else if($Depid == '' && $Status != '' && $FromDate != '' && $ToDate != '')
|
|
{
|
|
$appendQuery .= ' AND STAT.StatusCode=? AND ReqDate >= ? AND ReqDate <= ?';
|
|
|
|
$query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,$Status ,$FromDate,$ToDate));
|
|
// print_r($this->db->last_query());
|
|
return $query->result_array();
|
|
}
|
|
else
|
|
{
|
|
$query = $this->db->query($subQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED));
|
|
//print_r($this->db->last_query());
|
|
return $query->result();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|