From babadfd8bef66529e888ed315ecb71c0f229aad4 Mon Sep 17 00:00:00 2001 From: gandhimathi Bharathirajan Date: Sat, 20 May 2017 13:45:13 +0530 Subject: [PATCH] PO --- application/models/purchaseorder_model.php | 370 ++++++++++++--------- 1 file changed, 219 insertions(+), 151 deletions(-) diff --git a/application/models/purchaseorder_model.php b/application/models/purchaseorder_model.php index dc59a210..baa1107e 100644 --- a/application/models/purchaseorder_model.php +++ b/application/models/purchaseorder_model.php @@ -7,31 +7,18 @@ class purchaseorder_model extends CI_Model * @param string $searchText : This is optional search text * @return number $count : This is row count */ - function purchaseorderListingCount($searchText = '') + function purchaseorderListingCount() { - $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); + $this->db->distinct(); + $this->db->select('POMast.PONO,supp.SupplierName,TotalOrderValue,PODate,Stat.StatusName,Req.ReqType,DeliveryDate'); + $this->db->from('T_PurchaseOrder_Master POMast'); + $this->db->join('T_SupplierDetailsN supp', 'supp.SupplierID = POMast.SupplierID'); + $this->db->join('T_Status Stat', 'Stat.StatusCode = POMast.Status'); + $this->db->join('T_PurchaseOrder_LineItem LineItem', 'POMast.PONO = LineItem.PONO'); + $this->db->join('T_Requestion_Master Req', 'Req.ReqNo = LineItem.ReqNo'); + $query = $this->db->get(); - + return count($query->result()); } @@ -42,32 +29,18 @@ class purchaseorder_model extends CI_Model * @param number $segment : This is pagination limit * @return array $result : This is result */ - function purchaseorderListing($searchText = '', $page, $segment) + function purchaseorderListing() { - $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); + $this->db->distinct(); + $this->db->select('POMast.PONO,supp.SupplierName,TotalOrderValue,PODate,Stat.StatusName,Stat.StatusCode,Req.ReqType,DeliveryDate'); + $this->db->from('T_PurchaseOrder_Master POMast'); + $this->db->join('T_SupplierDetailsN supp', 'supp.SupplierID = POMast.SupplierID'); + $this->db->join('T_Status Stat', 'Stat.StatusCode = POMast.Status'); + $this->db->join('T_PurchaseOrder_LineItem LineItem', 'POMast.PONO = LineItem.PONO'); + $this->db->join('T_Requestion_Master Req', 'Req.ReqNo = LineItem.ReqNo'); + $query = $this->db->get(); - + $result = $query->result(); return $result; } @@ -110,15 +83,57 @@ class purchaseorder_model extends CI_Model 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->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 Raw Material information + * @return array $result : This is result of the query + */ + function getRawMaterialListForPO($MatType='',$ReqNo='') + { + $subQuery ='SELECT ReqNo,Req.MaterialCode,MaterialName,UOM,Req.Quantity + FROM T_Requestion_Details Req + JOIN T_MaterialMaster mat ON Req.MaterialCode = mat.MaterialCode + where mat.MaterialType = ? + AND Req.ReqNo = ? + AND mat.MaterialCode != (SELECT MaterialCode FROM T_PurchaseOrder_LineItem WHERE ReqNo =? + )'; + + $query = $this->db->query($subQuery,array($MatType,$ReqNo,$ReqNo)); + + return $query->result_array(); + + + } + function GetAvailableBudgetAmount($CostCode,$Year,$BudgetType) + { + /* $this->db->select('BudgetAmount'); + $this->db->from('T_CostCenter_Budget'); + $this->db->where('CostCenterCode',$CostCode ); + $this->db->where('BudgetYear',$Year ); + $this->db->where('BudgetType',$BudgetType ); + $query = $this->db->get(); + + return $query->result_array(); */ + + $subQuery ='select BudgetAmount, (select ifnull(sum(TotalOrderValue),0) as Totalvalue from + T_PurchaseOrder_Master PO join T_PurchaseOrder_LineItem Item on + Item.PONO = PO.PONO where Item.CostCenterCode=? )as val + from T_CostCenter_Budget Bud where Bud.CostCenterCode=? and + BudgetYear = ? and BudgetType =?'; + + $query = $this->db->query($subQuery,array($CostCode,$CostCode,$Year,$BudgetType)); + + return $query->result_array(); + } /** @@ -127,16 +142,33 @@ class purchaseorder_model extends CI_Model */ 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->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 Requsition List for the login user + * @return array $result : This is result of the query + */ + function getRequistDetailsForPO($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 @@ -161,37 +193,37 @@ class purchaseorder_model extends CI_Model 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->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 = '') + function getRequistionNoFromPO($PONO='') { - $this->db->select('FormulaID,Condition1,Condition2,Condition3,value1,value2,value3'); - $this->db->from('T_Formula_Details'); - if($FormulaID != '') + $this->db->select('ReqNo'); + $this->db->from('T_PurchaseOrder_LineItem'); + if($PONO != '') { - $this->db->where('FormulaID ',$FormulaID ); + $this->db->where('PONO ',$PONO ); } $query = $this->db->get(); @@ -255,6 +287,8 @@ class purchaseorder_model extends CI_Model return $query->result_array(); } } + + /** * This function is used to add New Purchase order Line Item to the system */ @@ -276,7 +310,7 @@ class purchaseorder_model extends CI_Model } /** - * This function is used to add New Purchase order Line Item to the system + * This function is used to add Revenue Tax to the system */ function addRevenueTax($RevenueTaxList) { @@ -286,57 +320,32 @@ class purchaseorder_model extends CI_Model $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 + /** + * This function is used to add Service Tax to the system */ - - 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(); ; - } + function addServiceTax($ServiceTaxList) + { + $this->db->trans_start(); + $this->db->insert('T_Service_Tax', $ServiceTaxList); + $insert_id = $this->db->affected_rows(); + $this->db->trans_complete(); + return $insert_id; + } + /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information + * This function is used to add Service Tax to the system */ - 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; + function addImportTax($ImportTaxList) + { + $this->db->trans_start(); + $this->db->insert('T_Import_Tax', $ImportTaxList); + $insert_id = $this->db->affected_rows(); + $this->db->trans_complete(); + return $insert_id; } + /** * This function used to get user information by id * @param number $userId : This is user id @@ -352,21 +361,86 @@ class purchaseorder_model extends CI_Model return $query->result(); } - function getPurchaseOrder($PONO) + // This Method to get the Service PO Details for Edit the Item + function GetServicePurchaseOrder($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); + $this->db->distinct(); + $this->db->select('ReqNo,POMast.PONO,ServiceDescription,supp.SupplierID,supp.SupplierName,supp.Address,PODate,Stat.StatusName,DeliveryDate,DeliveryAddress,Stat.StatusCode'); + $this->db->from('T_PurchaseOrder_Master POMast'); + $this->db->join('T_SupplierDetailsN supp', 'supp.SupplierID = POMast.SupplierID'); + $this->db->join('T_Status Stat', 'Stat.StatusCode = POMast.Status'); + $this->db->join('T_PurchaseOrder_LineItem LineItem', 'POMast.PONO = LineItem.PONO'); + + $this->db->where('POMast.PONO', $PONO); $query = $this->db->get(); - $result = $query->result(); - - // print_r($this->db->last_query()); - return $result; + $result = $query->result(); + + return $result; } + // This Method to get the Service PO Child Details for Edit the Item + function GetServicePurchaseOrderDetails($PONO = '') + { + + $subQuery ='SELECT distinct LineItem.LineItemNo,ReqNo,Mat.MaterialCode,Mat.MaterialName,Mat.UOM,Quantity,Rate,Status,ROUND((Quantity *Rate),2 ) as BasicValue ,ROUND((ServiceTax + EducessTax + SecHigherEducessTax + KrishiKalyantax + SwachhBharattax),2)as Taxamount + ,TotalValue,ServiceTax,EducessTax,SecHigherEducessTax,KrishiKalyantax,SwachhBharattax,CostCenterCode + FROM T_PurchaseOrder_LineItem LineItem + join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode + join T_Service_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo + where LineItem.PONO =?'; + + $query = $this->db->query($subQuery,array($PONO)); + + return $query->result(); + + + } + // To Update the PO + function updatePOMaster($PONO,$PODetails) + { + $this->db->where('PONO', $PONO); + $this->db->update('T_PurchaseOrder_Master', $PODetails); + + return TRUE; + } + /** + * This function is used to check the Request is in Draft status + * @return array $result : This is result of the query + */ + function LineItemExists($LineItemNo) + { + $this->db->select('LineItemNo'); + $this->db->from('T_Service_Tax'); + $this->db->where('LineItemNo ',$LineItemNo ); + //$this->db->where('Requestedby ',$ReqBy ); + $query = $this->db->get(); + + if ($query->num_rows > 0) { + //echo $result->num_rows; + return $query->result_array(); + } + } + + // To Update the PO Line Item + function updatePOLineItem($PONO,$LineItemNo,$PODetails) + { + $this->db->where('PONO', $PONO); + $this->db->where('LineItemNo', $LineItemNo); + $this->db->update('T_PurchaseOrder_LineItem', $PODetails); + + return TRUE; + } + /*// To Update the PO Line Item */ + function updateServiceTax($LineItemNo,$PODetails) + { + $this->db->where('LineItemNo', $LineItemNo); + + $this->db->update('T_PurchaseOrder_LineItem', $PODetails); + + return TRUE; + } + function getLastInsertedPO() { $this->db->select('max(PONO) as PO'); @@ -375,13 +449,7 @@ class purchaseorder_model extends CI_Model 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()