load->model('purchaseorder_model'); $this->load->library('session'); $this->load->library('form_validation'); $this->load->model('requistion_model'); $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); } function CreateEmergencyPO() { $this->global['pageTitle'] = 'Siddharth : Create Emergency Purchase Order'; $data['RequestType'] = $this->requistion_model->getConfigValue('C004'); $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); $data['DeptList'] = $this->purchaseorder_model->getDepartmentAllList(); $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); $this->loadViews("alterpurchaseorder", $this->global, $data, Null); } /** * this function used for get all material code using request type */ function getMaterialCode(){ $reqType = $this->input->post('input'); $materialList = $this->requistion_model->GetMaterialCode($reqType); echo json_encode($materialList); } /*This function is used for get cost center list using department code*/ function getCostCenterName(){ $CostList=''; $DeptCode = $this->input->post('id'); $CostList = $this->requistion_model->GetCostCenterByDept($DeptCode); // print_r($CostList); echo json_encode($CostList); } //This used to Create Service Purchase Order function addNewServicePurchaseOrder() { $POdt =$this->input->post('PODate'); $PODate = $this->getDateformat($POdt); $SupplierID = $this->input->post('drpSupplier'); $DeliveryAddr = $this->input->post('DeliveryAddr'); $dt = $this->input->post('Deliverydt'); $CostCenterName = $this->input->post('CostCenterName'); $DeliveryOption = $this->input->post('DateRange'); if($DeliveryOption==1){ $Deliverydt = ''; $DeliverySchedule = $this->input->post('Scheduleby'); } else{ $Deliverydt = $this->getDateformat($dt); $DeliverySchedule = ''; } $POType = $this->input->post('POType'); $SpcialInstruction = $this->input->post('TextSpcialInstruction'); $TotalOrderValueSummary = $this->input->post('TextTotalOrderValueSummaryService'); $POStatus = $this->input->post('TextStatus'); $CreateBy = $this->session->userdata ('userId'); $RequestedBy = $this->session->userdata ('EmpID'); $ReqStatus = REQITEM_Emergency_PO_CREATED; $RowCount = $this->input->post('TextRowCount'); $DeletedRow = $this->input->post('TextDeletedRowCount'); $comma_separated = explode(':', $DeletedRow); $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); $createddt = $dt->format('Y-m-d H:i:s'); //create T_Requestion_Master $Request = array('ReqType'=>$POType, 'Requestedby'=>$RequestedBy,'CostCenterCode'=>$CostCenterName,'Status'=>$ReqStatus,'Comments'=>$SpcialInstruction,'ReqDate'=>$createddt,'CreatedDate'=>$createddt,'CreatedBy'=>$CreateBy); $Req = $this->requistion_model->addRequistion($Request); $RegNo=''; if(count($Req)>0) { $RegNo = $Req[0]['ReqNo']; } // PO Master $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'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']; } $RegDetailsStatus=REQITEM_POCREATED; // PO Line Items $LineItemStatus = REQITEM_NEW; 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); $ServiceTax = $this->input->post('ServiceTax'.$i); $EduCess = $this->input->post('EduCess'.$i); $SecHighTax = $this->input->post('SecHighTax'.$i); $KrishiTax = $this->input->post('KrishiTax'.$i); $SwachhTax = $this->input->post('SwachhTax'.$i); $CostCenter = $this->input->post('costCode'.$i); $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); $SkipInsert = "False"; if( count($comma_separated) > 0) { for($j = 1; $j < count($comma_separated); $j++) { $deletedRow = $comma_separated[$j]; if($deletedRow == $i ) { $SkipInsert = "True"; break; } } } if($SkipInsert == "False") { //add requistion details $ReqDetails = array('ReqNo'=>$RegNo, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Status'=>$RegDetailsStatus,'UpdatedBy'=>$CreateBy,'UpdatedOn'=>$createddt); $ReqDetQuery = $this->requistion_model->addRequistionDetails($ReqDetails); $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$RegNo,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); $LineItemNo = ''; if(count($POLineItem)>0) { $LineItemNo = $POLineItem[0]['LineItemNo']; } if(trim($POType) == SERVICE ) { // echo 'Success'; $ServiceTaxList = array('LineItemNo'=>$LineItemNo, 'ServiceTax'=>$ServiceTax,'EducessTax'=>$EduCess,'SecHigherEducessTax'=>$SecHighTax,'KrishiKalyantax'=>$KrishiTax,'SwachhBharattax'=>$SwachhTax,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt); $ServiceTax = $this->purchaseorder_model->addServiceTax($ServiceTaxList); } } else { } } if($POStatus == REQ_DRAFT) { echo 'Emergency Service Purchase Order Saved Successfully!The PO NO Is: '.$PONO; } else { echo 'Emergency Service Purchase Order Created Successfully!The PO NO Is: '.$PONO; } } //This used to Create Revenue Emergency Purchase Order function addNewRevenuePurchaseOrder() { $POdt =$this->input->post('PODate'); $PODate = $this->getDateformat($POdt); $SupplierID = $this->input->post('drpSupplier'); $DeliveryAddr = $this->input->post('DeliveryAddr'); $dt = $this->input->post('Deliverydt'); $DeliveryOption = $this->input->post('DateRange'); if($DeliveryOption==1){ $Deliverydt = ''; $DeliverySchedule = $this->input->post('Scheduleby'); } else{ $Deliverydt = $this->getDateformat($dt); $DeliverySchedule = ''; } $CostCenterName = $this->input->post('CostCenterName'); $POType = $this->input->post('POType'); $PoRange = $this->input->post('txtPoRange'); $SpcialInstruction = $this->input->post('TextSpcialInstruction'); $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); $POStatus = $this->input->post('TextStatus'); $CreateBy = $this->session->userdata ( 'userId' ); $RowCount = $this->input->post('TextRowCount'); $DeletedRow = $this->input->post('TextDeletedRowCount'); $RequestedBy = $this->session->userdata ('EmpID'); $ReqStatus = REQITEM_Emergency_PO_CREATED; $comma_separated = explode(':', $DeletedRow); $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); $createddt = $dt->format('Y-m-d H:i:s'); //add requistion $Request = array('ReqType'=>$POType, 'Requestedby'=>$RequestedBy,'CostCenterCode'=>$CostCenterName,'Status'=>$ReqStatus,'Comments'=>$SpcialInstruction,'ReqDate'=>$createddt,'CreatedDate'=>$createddt,'CreatedBy'=>$CreateBy); $Req = $this->requistion_model->addRequistion($Request); $RegNo=''; if(count($Req)>0) { $RegNo = $Req[0]['ReqNo']; } // PO Master $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'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']; } // PO Line Items $RegDetailsStatus=REQITEM_POCREATED; $LineItemStatus = REQITEM_NEW; 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); $CostCenter = $this->input->post('costCode'.$i); $SkipInsert = "False"; if( count($comma_separated) > 0) { for($j = 1; $j < count($comma_separated); $j++) { $deletedRow = $comma_separated[$j] ; if($deletedRow == $i ) { $SkipInsert = "True"; break; } } } if($SkipInsert == "False") { //add requistion details $ReqDetails = array('ReqNo'=>$RegNo, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Status'=>$RegDetailsStatus,'UpdatedBy'=>$CreateBy,'UpdatedOn'=>$createddt); $ReqDetQuery = $this->requistion_model->addRequistionDetails($ReqDetails); $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$RegNo,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); $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 'Purchase Order Created Successfully! PO Number Is: '.$PONO ; } /** * This function is used to load the purchaseorder list */ function PurchaseOrderList() { $this->load->library('pagination'); $count = $this->purchaseorder_model->purchaseorderListingCount(''); $returns = $this->paginationCompress ( "purchaseorderListing/", $count, 5 ); //$this->purchaseorder_model->UpdateRequistItemStatus(); $this->purchaseorder_model->UpdateRequistionStatus(); $data['POData'] = $this->purchaseorder_model->purchaseorderListing(); $this->global['pageTitle'] = 'Siddharth : Purchase Orders'; $this->loadViews("POlist", $this->global, $data, NULL); } function Req_validate($selectValue) { //echo 'select_validate method called'; // 'none' is the first option and the text says something like "-Choose one-" if(strlen($selectValue) == 0) { $this->form_validation->set_message('Req_validate', 'Please Select Requisition Number to Create PO.'); return false; } else // user picked something { return true; } } /** * This function used to show the Purchase Order Screen */ function CreatePurchaseOrder() { $this->load->library('form_validation'); $this->form_validation->set_rules('txtReqNo', 'txtReqNo', 'callback_Req_validate'); if($this->form_validation->run() == FALSE) { $this->requisition(); //echo 'Validate method called'; } else { $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 = ''; $result = array(); foreach ($Req as $SID): $ReqArray[] = $SID->ReqNo ; $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); $ReqType = $SID->ReqType; //echo $SID->ReqNo; endforeach; //print_r ($result); $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); $Year = $dt->format('Y'); $data['CostList'] = $this->purchaseorder_model->getCostCenterbyRequist('',$Year,$ReqType); $data['MaterialList'] = $result; //$this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray); //print_r ($data['MaterialList']); $data['RequistionDetails'] = $this->purchaseorder_model->getRequistDetails($ReqArray); $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); $ViewName = ''; if($ReqType == REVENUE) { $ViewName = 'Purchaseorder'; } else if($ReqType == SERVICE) { $ViewName = 'servicePurchaseorder'; } $this->loadViews($ViewName, $this->global,$data, NULL); } } function CreatePOPrint() { $PONO = $_GET['PONO']; $ReqType = $_GET['ReqType']; if($ReqType == SERVICE) { $this ->servicepoprint($PONO); } else if($ReqType == REVENUE) { $this ->revenuepoprint($PONO); } } //To View/Update Purchase Order function EditPurchaseOrder() { $PONO = $_GET['PONO']; $ReqType = $_GET['ReqType']; $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); $Year = $dt->format('Y'); $data['CostList'] = $this->purchaseorder_model->getCostCenterbyRequist('',$Year,$ReqType); $Req = $this->purchaseorder_model->getRequistionNoFromPO($PONO); $data['ReqList'] = $Req ; $result = array(); $ReqArray = array(); foreach ($Req as $SID): $ReqArray[] = $SID->ReqNo ; $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); endforeach; $data['MaterialList'] = $result;//$this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray); $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); $data['RequistionDetails'] = $this->purchaseorder_model->getRequistDetails($ReqArray); $data['POMaster'] = $this->purchaseorder_model->GetServicePurchaseOrder($PONO); $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); if($ReqType == SERVICE) { $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetails($PONO); $this->global['pageTitle'] = 'Siddharth : Edit Service Purchase order form'; $this->loadViews("EditservicePurchaseorder", $this->global, $data, NULL); } else if($ReqType == REVENUE) { $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetails($PONO); $this->global['pageTitle'] = 'Siddharth : Edit Revenue Purchase order form'; $this->loadViews("editRevenuepurchaseorder", $this->global, $data, NULL); } } // To get the Material value based on the MaterialCode function getDetailsforReq() { $SearchFilter= $this->input->post('id'); // $reqDate= $this->input->post('ReqDate'); $DeptCode = $SearchFilter[0]; $MatType = $SearchFilter[1]; $ReqNo = $SearchFilter[2]; // $ReqDetai = $this->purchaseorder_model->getRequistDetails( $EmpID ); $CostList = $this->requistion_model->GetCostCenterByDept( $DeptCode); $HTML = ""; $BudAmount = ""; if(count($CostList) > 0) { for ($j = 0; $j < count($CostList); $j++) { $Code = $CostList[$j]['CostCenterCode']; $Name = $CostList[$j]['CostCenterName']; $HTML .=""; } } $MaterialDetails = $this->purchaseorder_model->getRawMaterialListForPO($MatType,$ReqNo); $HTML1 = ""; if(count($MaterialDetails) > 0) { for ($j = 0; $j < count($MaterialDetails); $j++) { $Code = $MaterialDetails[$j]['MaterialCode']; $Name = $MaterialDetails[$j]['MaterialName']; $HTML1 .=""; } } // print_r($HTML1); die(json_encode(array('MatDetail' =>$HTML1,'Cost'=> $HTML))); } /* 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 = ""; if(count($data) > 0) { for ($j = 0; $j < count($data); $j++) { $Code = $data[$j]['StatusCode']; $Name = $data[$j]['StatusName']; $HTML .=""; } } //echo $HTML; die(json_encode(array('depStaus' => $HTML))); } // To get the available Budget Amount function AvilBudgetAmount() { $SearchFilter= $this->input->post('id'); // $reqDate= $this->input->post('ReqDate'); $CostCode = $SearchFilter[0]; $ReqType = $SearchFilter[1]; print_r($SearchFilter); $CostCode= $this->input->post('id'); $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); $Year = $dt->format('Y'); $this->load->model('purchaseorder_model'); $result = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); //print_r($result); $AvilBudAmt = ''; if(count($result)>0) { $AvilBudAmt = $result[0]['BudgetAmount'] - $result[0]['Totalvalue']; } // echo 'Test'; print_r($AvilBudAmt); //die(json_encode(array('Cost' => $AvilBudAmt))); } 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.="