siddharth_application/application/controllers/purchaseorder.php
gandhimathi Bharathirajan 7e1b04b0e5 PO
2017-05-18 11:04:45 +05:30

640 lines
23 KiB
PHP

<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
require APPPATH . '/libraries/BaseController.php';
/**
* Class : purchaseorder (PurchaseorderController)
* User Class to control all user related operations.
* @author : VenbaMail Mali
* @version : 1.1
* @since : 15 Feb 2016
*/
class purchaseorder extends BaseController
{
/**
* This is default constructor of the class
*/
public function __construct()
{
parent::__construct();
$this->load->model('purchaseorder_model');
$this->load->library('session');
$this->load->library('form_validation');
$this->isLoggedIn();
}
/**
* This function used to load the first screen of the user
*/
public function index()
{
$this->global['pageTitle'] = 'Siddharth : AddPO';
$this->loadViews("addPO", $this->global, NULL , NULL);
}
function requisition()
{
$data['DeptList'] = $this->purchaseorder_model->getDepartmentListForAllReq();
$data['stList'] = $this->purchaseorder_model->getStatusListforAllReq();
$data['ReqList'] = $this->purchaseorder_model->getRequistionListbySearch();
$this->global['pageTitle'] = 'Siddharth : Create PO from Requisition List';
$this->loadViews("createPOfromRequistion", $this->global, $data,Null);
}
/* This method to get the status based on the Department selection in th
*/
function getStatusByDepartment()
{
$DepId = $this->input->post('id');
$data = $this->purchaseorder_model->getStatusByDepartment($DepId);
$HTML = "<option value='0'>Select Requistion Status</option>";
if(count($data) > 0)
{
for ($j = 0; $j < count($data); $j++)
{
$Code = $data[$j]['StatusCode'];
$Name = $data[$j]['StatusName'];
$HTML .="<option value='".$Code."'>".$Code."-".$Name."</option>";
}
}
//echo $HTML;
die(json_encode(array('depStaus' => $HTML)));
}
function getDateformat($Val)
{
$date = new DateTime($Val,new DateTimeZone('Asia/Kolkata'));
// print_r($date);
$retDate = $date->format('Y-m-d H:i:s');
return $retDate;
}
/* Method to get the Requistion list based on the search filter*/
function SearchListofRequistion()
{
$SearchFilter= $this->input->post('id');
// $reqDate= $this->input->post('ReqDate');
$DEPCode = $SearchFilter[0];
$Status = $SearchFilter[1];
$rng = $SearchFilter[2];;
// $ToDate = $SearchFilter[3];
$FromDate ='';
$ToDate = '';
// echo $rng;
$Dt = explode("-",$rng);
// print_r( $Dt);
if(count( $Dt)>1)
{
$FDate = $Dt[0];
$TDate = $Dt[1];
$FromDate = $this->getDateformat($FDate);
$ToDate = $this->getDateformat($TDate);
}
//echo $FromDate;
// print_r($Dt);
$result = $this->purchaseorder_model->getRequistionListbySearch($DEPCode,$Status,$FromDate,$ToDate);
$HTML="";
for ($i = 0; $i < count($result); $i++)
{
$SNo = $i + 1;
$ReqNo = $result[$i]['ReqNo'];
$ReqType = $result[$i]['ReqType'];
$Reqedby = $result[$i]['FirstName'];
$ReqDate = $result[$i]['ReqDate'];
$Status = $result[$i]['StatusName'];
$Department = $result[$i]['DepartmentName'];
$Designation = $result[$i]['Designation'];
$HTML.="<tr id='".$i."'>
<td align='left'><input type='checkbox' name='chk'".$i." id='chk'".$i."/></td>
<td align='left'><a data-toggle='modal' data-target='#myModal'><u>". $ReqNo."</u></a></td>
<td align='left'>".$ReqType."</td>
<td align='left'>".$Reqedby."</td>
<td align='left'>".$ReqDate."</td>
<td align='left'>".$Status."</td>
<td align='left'>".$Department."</td>
<td align='left'>".$Designation."</td>
</tr>";
}
//print_r( $HTML);
die(json_encode(array('ReqList' =>$HTML)));
}
/* To View the request details*/
function ViewRequest()
{
$ReqNo= $this->input->post('id');
$result = $this->requistion_model->getRequistItemList($ReqNo);
$ReqList = $this->requistion_model->getRequistDetails($ReqNo);
$DepNo = $ReqList[0]['DEPCode'];
$CostList = $this->requistion_model->GetCostCenterByDept($DepNo);
$HTML="";
for ($i = 0; $i < count($result); $i++)
{
$SNo = $i + 1;
$MaterialCode = $result[$i]['MaterialCode'];
$MaterialName = $result[$i]['MaterialName'];
$UOM = $result[$i]['UOM'];
$Quantity = $result[$i]['Quantity'];
$HTML.="<tr id='".$i."'>
<td align='left'>".$SNo."</td>
<td align='left'>". $MaterialCode."</td>
<td align='left'>".$MaterialName."</td>
<td align='left'>".$UOM."</td>
<td align='left'>".$Quantity."</td>
</tr>";
//$index = $index + 1;
}
$CostCenter = "<option value='-1'>Select Cost center</option>";
if(count($CostList) > 0)
{
for ($j = 0; $j < count($CostList); $j++)
{
$Code = $CostList[$j]['CostCenterCode'];
$Name = $CostList[$j]['CostCenterName'];
$CostCenter .="<option value='".$Code."'>".$Code."-".$Name."</option>";
}
}
//echo $HTML;
//echo $CostCenter;
die(json_encode(array('Items' =>$HTML,'Requist'=>$ReqList,'Cost'=>$CostCenter)));
}
function addNewPurchaseOrder()
{
$POdt =$this->input->post('PODate');
$PODate = $this->getDateformat($POdt);
$SupplierID = $this->input->post('drpSupplier');
$DeliveryAddr = $this->input->post('DeliveryAddr');
$dt = $this->input->post('Deliverydt');
$Deliverydt = $this->getDateformat($dt);
$POType = $this->input->post('POType');
$PoRange = $this->input->post('txtPoRange');
$SpcialInstruction = $this->input->post('txtSpcialInstruction');
$TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary');
$POStatus = $this->input->post('txtStatus');
$CreateBy = $this->session->userdata ( 'userId' );
$RowCount = $this->input->post('txtRowCount');
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
$createddt = $dt->format('Y-m-d H:i:s');
// PO Master
$POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt );
$POMaster = $this->purchaseorder_model->addPOMaster($POList);
$PONO = '';
if(count($POMaster)>0)
{
$PONO = $POMaster[0]['PONO'];
}
//echo $PONO;
//echo $POType;
// PO Line Items
$LineItemStatus = REQITEM_NEW;
echo ' test:'.REVENUE;
//echo $RowCount;
for ($i = 1; $i <= $RowCount; $i++)
{
$MaterialCode = $this->input->post('materialCode'.$i);
$Quantity = $this->input->post('quantity'.$i);
$Reqnumber = $this->input->post('Reqnumber'.$i);
$itemRate = $this->input->post('itemRate'.$i);
$DiscountType = $this->input->post('DisType'.$i);
$DiscountValue = $this->input->post('DisVal'.$i);
$AfterDiscount = $this->input->post('AfterDisVal'.$i);
$PackagingOption = $this->input->post('PackOption'.$i);
$PackagingType = $this->input->post('PackType'.$i);
$PackagingValue = $this->input->post('PackVal'.$i);
$AfterPackagingValue = $this->input->post('AfterPackVal'.$i);
$ExciseOption = $this->input->post('ExciseOption'.$i);
$ExciseValue = $this->input->post('ExciseVal'.$i);
$AfterExciseValue = $this->input->post('AfterExciseVal'.$i);
$VatOption = $this->input->post('VatOption'.$i);
$VatValue = $this->input->post('VatVal'.$i);
$AfterVatValue = $this->input->post('AfterVatVal'.$i);
$CSTOption = $this->input->post('CSTOption'.$i);
$CSTValue = $this->input->post('CSTVal'.$i);
$AfterCSTValue = $this->input->post('AfterCSTVal'.$i);
$GSTValue = $this->input->post('GSTVal'.$i);
$AfterGSTValue = $this->input->post('AfterGSTVal'.$i);
$OtherTaxValue = $this->input->post('OtherTaxVal'.$i);
$AfterOtherTaxValue = $this->input->post('AfterOtherTaxVal'.$i);
$FreightType = $this->input->post('FreightType'.$i);
$FreightValue = $this->input->post('FreightVal'.$i);
$AfterFreightValue = $this->input->post('AfterFreightVal'.$i);
$InsuranceValue = $this->input->post('Insval'.$i);
$TotalOrderValue = $this->input->post('TotalOrderValue'.$i);
$POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt);
$POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList);
$LineItemNo = '';
if(count($POLineItem)>0)
{
$LineItemNo = $POLineItem[0]['LineItemNo'];
}
//echo $LineItemNo;
if(trim($POType) == REVENUE )
{
echo 'Success';
$RevenueTaxList = array('LineItemNo'=>$LineItemNo, 'DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt);
$RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList);
echo 'Revenue tax Success';
}
echo 'Successfully updated the Record';
}
}
/**
* This function is used to load the purchaseorder list
*/
function purchaseorderListing()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$this->load->model('purchaseorder_model');
$searchText = $this->input->post('searchText');
$data['searchText'] = $searchText;
$this->load->library('pagination');
$count = $this->purchaseorder_model->purchaseorderListingCount($searchText);
$returns = $this->paginationCompress ( "purchaseorderListing/", $count, 5 );
$data['userRecords'] = $this->purchaseorder_model->purchaseorderListing($searchText, $returns["page"], $returns["segment"]);
$this->global['pageTitle'] = 'Siddharth : PO Listing';
$this->loadViews("POlist", $this->global, $data, NULL);
}
}
function ViewPurchaseOrder()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$data = $_GET['PONO'];
$this->load->model('purchaseorder_model');
$result['PODetail'] = $this->purchaseorder_model->getPurchaseOrder($data);
$result['POLineItem'] = $this->purchaseorder_model->getPOLineItem($data);
$this->loadViews("EditPurchaseOrder", $this->global, $result, NULL);
}
}
/**
* This function used to show the Purchase Order Screen
*/
function CreatePurchaseOrder()
{
$this->global['pageTitle'] = 'Siddharth : Purchase order form';
$data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006');
$data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018');
$data['Suplist'] = $this->purchaseorder_model->getSupplierName();
$SelectedReq = json_decode($this->input->post('txtReqNo'));
$Req = $SelectedReq->Req;
$data['ReqList'] = $Req ;
$ReqArray = array();
$ReqType = '';
foreach ($Req as $SID):
$ReqArray[] = $SID->ReqNo ;
$ReqType = $SID->ReqType;
endforeach;
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
$Year = $dt->format('Y');
$data['CostList'] = $this->purchaseorder_model->getCostCenterbyRequist('',$Year,$ReqType);
$data['MaterialList'] = $this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray);
$data['RequistionDetails'] = $this->purchaseorder_model->getRequistDetails($ReqArray);
//$data['FormulaList'] = $this->purchaseorder_model->getFormula();
$this->loadViews("Purchaseorder", $this->global,$data, NULL);
}
/**
* This function is used to load the add new PO */
function addPO()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$this->load->helper('form');
$this->load->model('purchaseorder_model');
$data['users'] = $this->purchaseorder_model->getusers();
$data['SupplierName'] = $this->purchaseorder_model->getSupplierName();
$data['RawMaterials'] = $this->purchaseorder_model->getRawMaterialList();
$data['UOM'] = $this->purchaseorder_model->getUOM();
$data['POType'] = $this->purchaseorder_model->getPOType();
$data['PurchasingCategory'] = $this->purchaseorder_model->getPurchasingCategory();
$data['EmpList'] = $this->purchaseorder_model->getEmployeeList();
$this->global['pageTitle'] = 'siddharth : AddNew PO';
$this->loadViews("addPO", $this->global, $data, NULL);
}
}
function UpdatePO()
{
$PONO = $this->session->userdata('PONO');
$DiscountType = $this->input->post('DiscountType');
$DiscountValue = $this->input->post('txtDiscount');
$PackagingType = $this->input->post('PackagingType');
$PackagingValue = $this->input->post('txtPackaging');
$Exciseduty = $this->input->post('Exciseduty');
$Vat = $this->input->post('txtVat');
$Freight = $this->input->post('txtFreight');
$TotalOrderValue = $this->input->post('txtOrderValue');
echo $PONO ;
echo $DiscountType;
echo $PackagingType;
$this->load->model('purchaseorder_model');
}
/**
* This function is used to add new user to the system
*/
function addNewPO()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$POType = $this->input->post('PO_Type');
$PODate = $this->input->post('PO_Date');
$SupplierID = $this->input->post('SupplierID');
$SpecialOrder = $this->input->post('SpecialOrder');
$role = $this->input->post('role');
$re_email = $this->input->post('re_email');
$re_phone = $this->input->post('re_phone');
$re_Date = $this->input->post('re_Date');
$bud_manager =$this->input->post('bud_manager');
$bud_manager_de = $this->input->post('BudgetManagerDepartment');
$Pur_category = $this->input->post('Pur_category');
$Justification = $this->input->post('Justification');
$SupplierAddress = $this->input->post('SupplierAddress');
$CreatedBy= $this->session->userdata('role');
$DiscountType = $this->input->post('DiscountType');
$txtDiscount = $this->input->post('txtDiscount');
$PackagingType = $this->input->post('PackagingType');
$txtPackaging = $this->input->post('txtPackaging');
$Exciseduty = $this->input->post('Exciseduty');
$txtVat = $this->input->post('txtVat');
$txtFreight = $this->input->post('txtFreight');
$txtOrderValue = $this->input->post('txtOrderValue');
$BasicValue = $this->input->post('BasicValue');
$AfterDiscount = $this->input->post('AfterDiscount');
$AfterPackaging = $this->input->post('AfterPackaging');
$AferExciseduty = $this->input->post('AferExciseduty');
$txtAfterVat = $this->input->post('txtAfterVat');
$PODate = date('m-d-Y H:i:s', strtotime(str_replace('/', '-', $PODate)));
$re_Date = date('m-d-Y H:i:s', strtotime(str_replace('/', '-', $re_Date)));
$this->load->model('purchaseorder_model');
$data['PONO'] = $this->purchaseorder_model->addNewPO($POType,$PODate, $SupplierID,$SpecialOrder,$role,$re_email,$re_phone,
$re_Date,$bud_manager,$bud_manager_de,$Pur_category, $Justification,$CreatedBy,$BasicValue,$DiscountType,$txtDiscount,$PackagingType,$txtPackaging,$Exciseduty,$txtVat,$txtFreight,$AfterDiscount,$AfterPackaging,$AferExciseduty,$txtAfterVat,$txtOrderValue);
$data = array_shift($data);
$PO = $data[0]['PONO'];
$RowCount = $this->input->post('txtRowCount');
// Inserting PO Line item
for ($i = 1; $i <= $RowCount; $i++)
{
$Material_ID = $this->input->post('ProductDescription'.$i);
$UOM = $this->input->post('UOM'.$i);
$Quantity = $this->input->post('Quantity'.$i);
$UnitPrice = $this->input->post('UnitPrice'.$i);
$data['POLineItem']= $this->purchaseorder_model-> addNewPOLineItem($PO,$Material_ID,$UOM,$Quantity,$UnitPrice);
}
Print_r($PO);
return $PO;
}
}
/**
* This function is used load user edit information
* @param number $userId : Optional : This is user id
*/
function editOldPO($PO = NULL)
{
if($this->isAdmin() == TRUE || $PO == 1)
{
$this->loadThis();
}
else
{
if($PO == null)
{
redirect('purchaseorderListing');
}
$data['SupplierName'] = $this->purchaseorder_model->getSupplierName();
$data['users'] = $this->purchaseorder_model->getusers();
$this->global['pageTitle'] = 'Siddharth : Edit User';
$this->loadViews("editOldPO", $this->global, $data, NULL);
}
}
/**
* This function is used to edit the user information
*/
function editPO()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$this->load->library('form_validation');
$PO = $this->input->post('PO');
$this->form_validation->set_rules('POType','PO Type','trim|required|');
$this->form_validation->set_rules('PODate','PO Date','trim|required|');
$this->form_validation->set_rules('SupplierID','SupplierID','trim|required|');
$this->form_validation->set_rules('SpecialOrder','Special Requirement of order','|max_length[20]');
$this->form_validation->set_rules('role','UserID','trim||numeric');
$this->form_validation->set_rules('reemail','Requester email','trim|valid_email|xss_clean|max_length[128]');
$this->form_validation->set_rules('rephone','Requester ph','required|min_length[10]|xss_clean');
$this->form_validation->set_rules('reDate','Requested Date','required');
$this->form_validation->set_rules('budmanager','Budget Manager');
$this->form_validation->set_rules('budmanagerde','Budget Manager Department','trim');
$this->form_validation->set_rules('PurchasingCategory','Purchasing Category','trim');
if($this->form_validation->run() == FALSE)
{
$this->editPO();
}
else
{
$POType = ucwords(strtolower($this->input->post('POType')));
$PODate = $this->input->post('PODate');
$SupplierID = $this->input->post('SupplierID');
$SpecialOrder = $this->input->post('SpecialOrder');
$role = $this->input->post('role');
$reemail = $this->input->post('reemail');
$rephone = $this->input->post('rephone');
$reDate = $this->input->post('reDate');
$budmanager = $this->input->post('budmanager');
$budmanagerde = $this->input->post('budmanagerde');
$Purcategory = $this->input->post('PurchasingCategory');
$POInfo = array('POType'=>$POType, 'PODate'=>$PODate, 'SupplierID'=>$SupplierID, 'SpecialOrder'=> $SpecialOrder,'UserID'=>$role,'RequestedDate'=>$reDate,'RequesterEmail'=>$reemail,'RequesterPh'=>$rephone, 'PurchasingCategory'=>$Purcategory,'BudgetManager'=>$budmanager,'BudgetManagerDepartment'=>$budmanagerde,'createdBy'=>$this->vendorId, 'createdDtm'=>date('Y-m-d H:i:sa'));
$POInfo = array();
$result = $this->purchaseorder_model->editPO($POInfo, $PO);
if($result == true)
{
$this->session->set_flashdata('success', 'PO updated successfully');
}
else
{
$this->session->set_flashdata('error', 'PO updation failed');
}
redirect('purchaseorderListing');
}
}
}
function GetSupplier()
{
$id = $this->input->post('id');
$this->load->model('supplier_model');
$result['Address'] = $this->supplier_model->GetSupplierAddress($id );
$result = array_shift($result);
$Address = $result[0]['Address'];
print $Address;
return $Address;
}
function GetBudgetManagerDepartment()
{
$id = $this->input->post('id');
$this->load->model('Employeedetails_model');
$result['DepartmentName'] = $this->Employeedetails_model->GetEmployeeDepartment($id );
$result = array_shift($result);
$DepartmentName = $result[0]['DepartmentName'];
print $DepartmentName;
return $DepartmentName;
}
function pageNotFound()
{
$this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found';
$this->loadViews("404", $this->global, NULL, NULL);
}
}
?>