purchaseorder_model = new Purchaseorder_model(); $this->inwardgateregister_model = new Inwardgateregister_model(); $this->requistion_model = new Requistion_model(); $this->costcenter_model = new Costcenter_model(); $this->PurchaseOrderLineItemModel = new PurchaseOrderLineItemModel(); $this->session = session(); helper('form'); //$this->load->library('form_validation'); $this->isLoggedIn(); } //end this function used to pono reset financeyear configuration /** * This function used to load the first screen of the user */ public function index() { $this->global['pageTitle'] = 'AddPO'; $this->loadViews("addPO", $this->global, NULL, NULL); } function viewfullpurchaseorder() { $this->global['pageTitle'] = 'View Purchase Order'; $this->loadViews("viewfullpurchaseorder", $this->global, Null); } function advancerequest() { $this->global['pageTitle'] = 'Advance Request'; $data['PONO'] = $this->purchaseorder_model->getadvancePONO('ST026'); //print_r($data['PONO']); $this->loadViews("advancerequest", $this->global, $data, NULL); } function requisition($listErrors = null) { $data['DeptList'] = $this->purchaseorder_model->getDepartmentListForAllReq(); $data['stList'] = $this->purchaseorder_model->getStatusListforAllReq(); /* Cost code from Requisition - Client Review Fix Start here */ // $data['ReqList'] = $this->purchaseorder_model->getRequistionListbySearch(); $data['ReqList'] = $this->purchaseorder_model->getAllRequistionListToCreatePO(); /* End Here */ $this->session->setFlashdata('message', $listErrors); $this->global['pageTitle'] = 'Create PO from Requisition List'; $this->loadViews("createPOfromRequistion", $this->global, $data, Null); } /** * This function is used to load the purchaseorder list */ function PurchaseOrderList() { if ($this->request->getMethod() === 'GET') { $toDate = date('Y-m-d'); $fromDate = date('Y-m-d', strtotime('-90 days', strtotime($toDate))); } else if ($this->request->getMethod() === 'POST') { $fromDate = $this->request->getPost('fromDate'); $toDate = $this->request->getPost('toDate'); $fromDate = date('Y-m-d', strtotime($fromDate)); $toDate = date('Y-m-d', strtotime($toDate)); } $this->purchaseorder_model->UpdateRequistionStatus(); $forwhat=''; $data['POData'] = $this->purchaseorder_model->purchaseorderListing($forwhat ,$fromDate,$toDate); $data['fromDate'] = date('d-m-Y', strtotime($fromDate)); $data['toDate'] = date('d-m-Y', strtotime($toDate)); $this->global['pageTitle'] = 'Purchase Orders'; $this->loadViews("POlist", $this->global, $data, NULL); } function validate_req($str = null) { if (empty($str)) { return false; } else { return true; } } /** * This function used to show the Purchase Order Screen */ public function CreatePurchaseOrder() { $validation = \Config\Services::validation(); $validation->setRule('txtReqNo', 'Requisition Number', ['Req_validate[txtReqNo]'], ['Req_validate' => 'Please Select Requisition Number to Create PO.']); // !$validation->withRequest($this->request)->run() if (!$validation->run($this->request->getPost())) { // echo $validation->getError('txtReqNo'); // print_r($validation->listErrors());// print_r($validation->getErrors()); // exit; $this->requisition($validation->listErrors()); } else { // echo "@242 else proceed"."
"; $this->global['pageTitle'] = 'Purchase order'; $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); $data['Payment'] = $this->purchaseorder_model->getPaymentTermsDetails(); $data['WorkStatus'] = $this->purchaseorder_model->getStatus(7); $txtReqNo = $this->request->getPost('txtReqNo'); if (is_array($txtReqNo)) { $txtReqNo = json_encode($txtReqNo); } $SelectedReq = json_decode($txtReqNo); // echo '
'.print_r($SelectedReq,true).'
'."
"; $Req = $SelectedReq->Req; $data['ReqList'] = $Req; $ReqArray = array(); $ReqType = $this->request->getPost('txtReqType'); $result = array(); foreach ($Req as $SID) : $ReqArray[] = $SID->ReqNo; $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); if ($ReqType == '') { $ReqType = $SID->ReqType; } endforeach; $data['MaterialList'] = $result; // echo '
'.print_r($data['MaterialList'],true).'
'."
";die; /* Cost code from Requisition - Client Review Fix Start here */ $ReqDetails = $this->purchaseorder_model->getRequistDetails($ReqArray); $data['RequistionDetails'] = $ReqDetails; $CostCode = ''; $FYStart = ''; $FYEnd = ''; $FiscalYear = $this->costcenter_model->getFiscalYear(); if (!empty($FiscalYear)) { foreach ($FiscalYear as $Fy) { $FYStart = $Fy->StartYear; $FYEnd = $Fy->EndYear; //$FYEnd=$FYStart+1; } } $FYdt = $FYStart . " - " . $FYEnd; //echo $FYEnd; foreach ($ReqDetails as $Rs) : $CostCode = $Rs->CostCenterCode; endforeach; $AvlBudget = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode, $FYdt, $ReqType); if (count($AvlBudget) > 0) { $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] - $AvlBudget[0]['Totalvalue']; } /* End Here */ $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); //print_r($data['CompanyDetails']); // $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); $data['MaxPODate'] = $this->purchaseorder_model->getLastReleasedPODate(); $data['Currency'] = $this->purchaseorder_model->GetCurrencytype(); $data['INRSYMBOL'] = $this->purchaseorder_model->GetINRCurrencytype('INR'); //print_r($data['INRSYMBOL']); $AvlimportBudget = $this->purchaseorder_model->GetAvailableImportBudgetAmount($CostCode, $FYdt, $ReqType); //print_r($AvlimportBudget); // $AvlBudget = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); //print_r($AvlimportBudget); if (count($AvlimportBudget) > 0) { $data['AvlimportBudAmt'] = $AvlimportBudget[0]['BudgetAmount'] - $AvlimportBudget[0]['Totalvalue']; } $data['PoTypeOptions'] = $this->purchaseorder_model->getConfigValue('C026'); //print_r($data['PoTypeOptions']); // $data[$Rate->ExchangeRate]=$Rate->ExchangeRate; //$data['CurrencyDetail']=$this->purchaseorder_model->GetCurrencyDetail($Currency); $ViewName = ''; if ($ReqType == REVENUE) { $ViewName = 'purchaseorder'; } else if ($ReqType == SERVICE) { $ViewName = 'servicePurchaseorder'; } else if ($ReqType == IMPORT) { $data['staticspecialinstruction'] = $this->purchaseorder_model->getConfigValue('C027'); $ViewName = 'importpo'; } else if ($ReqType == CAPITAL) { $data['staticspecialinstruction'] = $this->purchaseorder_model->getConfigValue('C027'); $CapitalAvlBudget = $this->purchaseorder_model->GetAvailableCapitalBudgetAmount($CostCode, $FYdt, $ReqType); if (count($CapitalAvlBudget) > 0) { $data['AvlCapitalBudAmt'] = $CapitalAvlBudget[0]['BudgetAmount'] - $CapitalAvlBudget[0]['Totalvalue']; } $ViewName = 'capitalpurchaseorder'; } // echo '@376 final step '.$ViewName; // echo '
'.print_r($data,true).'
'."
";die(); $this->loadViews($ViewName, $this->global, $data, NULL); } // } } public function check_select_value($value) { if (empty($value)) { return false; } return true; } function CreatePOPrint_old() { $PONO = $this->request->getVar('PONO'); $ReqType = $this->request->getVar('ReqType'); if ($ReqType == SERVICE) { $this->servicepoprint($PONO); } else if ($ReqType == REVENUE) { $this->revenuepoprint($PONO); } else if ($ReqType == IMPORT) { $this->importpoprint($PONO); } else if ($ReqType == CAPITAL) { $this->CapitalPoPrint($PONO); } } public function CreatePOPrint() { $PONO = $this->request->getVar('PONO'); $ReqType = $this->request->getVar('ReqType'); $PoStatus = ''; $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformationforPDF(); $data['GetPoFormat'] = $this->purchaseorder_model->GetPoFormat($PONO); if ($ReqType == SERVICE) { $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetailsForpdf($PONO); $data['serviceTaxList'] = $this->purchaseorder_model->GetServiceTaxDetails($PONO); $CurrencyType = 'INR'; } else if ($ReqType == REVENUE) { $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetailsForPDF($PONO); $data['reveuetax'] = $this->purchaseorder_model->getRevenueTaxinforforpdf($PONO); $CurrencyType = 'INR'; } else if ($ReqType == IMPORT) { $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetailsForPDF($PONO); $CurrencyType = $data['POItem'][0]->CurrencyType; } else if ($ReqType == CAPITAL) { $CapitalRange = $this->purchaseorder_model->where('PONO',$PONO)->get()->getRow()->CapitalRange; if($CapitalRange == 1){ $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetailsForpdf($PONO); $data['serviceTaxList'] = $this->purchaseorder_model->GetServiceTaxDetails($PONO); $CurrencyType = $data['POItem'][0]->CurrencyType; }else{ $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetailsForPDF($PONO); $CurrencyType = $data['POItem'][0]->CurrencyType; } // $data['POItem'] = $this->purchaseorder_model->GetCapitalPurchaseOrderDetailsForPDF($PONO); } $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO); $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName($CurrencyType); $Currencycode = ''; $TotalOrderValue = $data['POItem'][0]->TotalOrderValue; $AdvanceAmount = 0.00; foreach ($data['POItem'] as $POI) { $AdvanceAmount = $POI->AdvanceAmount; $PoStatus = $POI->Status; } $TotaltoPay = 0.00; $TotaltoPay = $TotalOrderValue - $AdvanceAmount; $totalAmt = sprintf("%.2f", $TotalOrderValue); $data['TotalAmountInWords'] = $this->convertNumber($totalAmt); $requisitionDetailsNew = $this->purchaseorder_model->GetPdfRequistionDetails($PONO) ; $data['RequistionDetails'] = $requisitionDetailsNew; $costCenterCode=$requisitionDetailsNew[0]['CostCenterCode']; $data['costCenterDetails'] = $this->purchaseorder_model->getCostCenterMasterDetails($costCenterCode); // echo '
';
    // print_r($data);
    // echo '
'; // die; $mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'format' => 'A4', 'default_font' => 'sans-serif', 'margin_header' => 0, 'margin_top' => -30, 'margin_right' => 14, 'margin_left' => 5, 'margin_footer' => -30, 'orientation' => 'P' ]); // Set PDF properties $mpdf->SetTitle('Invoice'); $mpdf->SetAuthor($data['CompanyDetails'][0]->CompanyName); $mpdf->SetCreator('Venba'); // Generate the PDF content (HTML) // if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) { // $mpdf->SetWatermarkText(''); // } else { // $mpdf->SetWatermarkText('DRAFT'); // } // Set auto margins $mpdf->setAutoTopMargin = 'stretch'; $mpdf->setAutoBottomMargin = 'stretch'; $mpdf->use_kwt = true; // Set HTML header // $HtmlHeading = view('includes/pdfheader', $data); // $mpdf->SetHTMLHeader($HtmlHeading); // Set HTML body // $html = view('pdf_view', $data); // $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content $html = view('po_pdf', $data); // echo $html;die; $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content // Set HTML footer // $HTMLFooter = view('includes/pdffooter', $data); // $mpdf->setFooter('' . "Page {PAGENO} of {nb}"); // Output PDF $mpdf->Output('POReport' . $PONO . '.pdf', 'D'); } public function poprint2($PONO, $ReqType) { // Load all views as normal //$PONO = $this->request->getVar('PO'); $Requester = ''; $Depcode = ''; $Currencycode = ''; $PoStatus = ''; $PaiseVal = ''; $SymbolCurrency = ''; $SymbolCurrencyName = ''; $TotalOrderValue = 0.00; $AdvanceAmount = 0.00; $ProductPrice = ''; $TotaltoPay = 0.00; $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['RequistionDetails'] = $this->purchaseorder_model->GetPdfRequistionDetails($PONO); $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformationforPDF(); $data['GetPoFormat'] = $this->purchaseorder_model->GetPoFormat($PONO); $data['DEPCODE'] = $this->purchaseorder_model->GerRequesterDep($Depcode); $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO); $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName($Currencycode); $data['Requestername'] = $this->purchaseorder_model->GerRequesterName($Requester); // print_r($data['POItem']);die; $CapitalRange = 1; if (!empty($data['CurrencySymbol']) > 0) { $SymbolCurrency = $data['CurrencySymbol'][0]->FontCode2000; $SymbolCurrencyName = $data['CurrencySymbol'][0]->Currency; $PaiseVal = $data['CurrencySymbol'][0]->PaiseVal; } if (!empty($data['POItem'])) { foreach ($data['POItem'] as $POI) { $Currencycode = $POI->CurrencyType; $CapitalRange = $POI->CapitalRange; $AdvanceAmount = $POI->AdvanceAmount; $TotalOrderValue = $POI->TotalOrderValue; $PoStatus = $POI->Status; $Requester = isset($POI->Requestedby) ? $POI->Requestedby : ""; } } if ($CapitalRange != '') { $data['TaxListDetails'] = $this->purchaseorder_model->GetCapitalTaxListDetails($PONO, $CapitalRange); } foreach ($data['Requestername'] as $ReqDep) { $Depcode = $ReqDep->Departmentcode; } $mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'format' => 'A4', 'default_font' => 'sans-serif', 'margin_header' => 0, 'margin_top' => -30, 'margin_right' => 14, 'margin_left' => 5, 'margin_footer' => -30, 'orientation' => 'P' ]); // Set PDF properties $mpdf->SetTitle('Invoice'); $mpdf->SetAuthor($data['CompanyDetails'][0]->CompanyName); $mpdf->SetCreator('Venba'); // Generate the PDF content (HTML) // if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) { // $mpdf->SetWatermarkText(''); // } else { // $mpdf->SetWatermarkText('DRAFT'); // } // Set auto margins $mpdf->setAutoTopMargin = 'stretch'; $mpdf->setAutoBottomMargin = 'stretch'; // Set HTML header // $HtmlHeading = view('includes/pdfheader', $data); // $mpdf->SetHTMLHeader($HtmlHeading); // Set HTML body // $html = view('pdf_view', $data); // $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content $html = view('po_pdf', $data); // echo $html; die; $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content // Set HTML footer // $HTMLFooter = view('includes/pdffooter', $data); // $mpdf->setFooter('' . "Page {PAGENO} of {nb}"); // Output PDF $mpdf->Output($ReqType . '_' . $PONO . '.pdf', 'D'); } function CreaterevenuePOPrint() { view("revenuepopdf"); } function CreateservicePOPrint() { view("servicepopdf"); } function CreateimportPOPrint() { view("importpopdf"); } function CreatecapitalPOPrint() { view("capitalpopdf"); } //To View/Update Purchase Order function EditPurchaseOrder() { $PONO = $this->request->getVar('PONO'); $ReqType = $this->request->getVar('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); // echo "
";
    // print_r($result);die;
    endforeach;

    $data['MaterialList'] = $result; //$this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray);
    $data['Suplist'] = $this->purchaseorder_model->getSupplierName();
    $data['Payment'] = $this->purchaseorder_model->getPaymentTermsDetails();
    $data['PoTypeOptions'] = $this->purchaseorder_model->getConfigValue('C026');
    $data['INRSYMBOL'] = $this->purchaseorder_model->GetINRCurrencytype('INR');
    /*   Cost code from Requisition - Client Review Fix   
                Start here */

    $ReqDetails = $this->purchaseorder_model->getRequistDetails($ReqArray);
    $data['RequistionDetails'] =  $ReqDetails;
    $Status = "";
    foreach ($data['RequistionDetails'] as $ReqDet) {

      $Status = $ReqDet->Status;
    }

    $data['POSTATUS'] = $this->purchaseorder_model->GetPOStatus($Status);

    foreach ($data['POSTATUS'] as $POST) {
      $Status = $POST->StatusName;
    }

    $CostCode = '';
    $FYStart = '';
    $FYEnd = '';
    $FiscalYear =   $this->costcenter_model->getFiscalYear();
    if (!empty($FiscalYear)) {
      foreach ($FiscalYear as $Fy) {
        $FYStart = $Fy->StartYear;
        $FYEnd = $Fy->EndYear;
      }
    }

    $FYdt = $FYStart . " - " . $FYEnd;
    foreach ($ReqDetails as $Rs) :
      $CostCode = $Rs->CostCenterCode;
    endforeach;

    $AvlBudget   =   $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode, $FYdt, $ReqType);
    if (count($AvlBudget) > 0) {
      $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] -  $AvlBudget[0]['Totalvalue'];
    }
    /* End Here */

    $data['POMaster'] = $this->purchaseorder_model->GetServicePurchaseOrder($PONO);
    //print_r($data['POMaster']);
    //die();
    //$data['POSTATUS']=$this->purchaseorder_model->GetServicePurchaseOrder($PONO);
    //print_r($data['POMaster']);
    foreach ($data['POMaster'] as $Exc) {
      $exRate = $Exc->ExchangeRate;
    }
    foreach ($data['POMaster'] as $TER) {
      $PAYTERM = $TER->PaymentTerms;
    }


    $data['getdata'] = $this->purchaseorder_model->getfunctionr($PONO);
    $data['billfile'] = $this->purchaseorder_model->getbillfiesr($PONO);

    $data['MaxPODate'] =  $this->purchaseorder_model->getLastReleasedPODate();
    $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006');
    $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018');
    if ($ReqType == SERVICE) {

      $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetails($PONO);
      // print_r($data['POItem']);die;
      $data['getdata'] = $this->purchaseorder_model->getfunction($PONO);
      //$data['billfile'] = $this->purchaseorder_model->getbillfiesr($pono);

      //s print_r($data['getdata']);
      $data['getlogpodtl'] = $this->purchaseorder_model->getlogpodtl($PONO);


      $data['PaymentTerms'] = $this->purchaseorder_model->GetPaymentTerms($PONO);
      //$data['WorkStatus']=$this->purchaseorder_model->GetWorkStatus('C019');

      $data['WorkStatus'] = $this->purchaseorder_model->getStatus(7);
      // echo "
";
      // print_r($data);die;
      $this->global['pageTitle'] = 'Edit Service Purchase order form';
      $this->loadViews("EditservicePurchaseorder", $this->global,  $data, NULL);

    } else if ($ReqType == REVENUE) {

      $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetails($PONO);
      $data['PaymentTerms'] = $this->purchaseorder_model->GetPaymentTerms($PONO);

      $data['getlogpodtl'] = $this->purchaseorder_model->getlogpodtl($PONO);

      $data['WorkStatus'] = $this->purchaseorder_model->getStatus(7);
      $data['billfile']   = $this->purchaseorder_model->getBillFile($PONO);
      $this->global['pageTitle'] = 'Edit Revenue Purchase order form';
      $this->loadViews("editRevenuepurchaseorder", $this->global,  $data, NULL);

    } else if ($ReqType == IMPORT) {
      $AvlBudget   =   $this->purchaseorder_model->GetAvailableImportBudgetAmount($CostCode, $FYdt, $ReqType);


      if (count($AvlBudget) > 0) {
        $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] -  $AvlBudget[0]['Totalvalue'];
      }
      //print_r($data['AvlBudAmt']); 
      $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetails($PONO);
      // print_r($data['POItem']);
      $data['Currency'] = $this->purchaseorder_model->GetCurrencytype();

      foreach ($data['POMaster'] as $CUR) {
        //print_r($CUR->CurrencyType);
        $Currency = $CUR->CurrencyType;
      }                                                                             

      // $data[$Rate->ExchangeRate]=$Rate->ExchangeRate;
      $data['CurrencyDetail'] = $this->purchaseorder_model->GetCurrencyDetail($Currency);
      $data['PaymentTerms'] = $this->purchaseorder_model->GetPaymentTerms($PONO);
      $data['getlogpodtl'] = $this->purchaseorder_model->getlogpodtl($PONO);

      //print_r($data['PaymentTerms']);
      $unicode = '';
      foreach ($data['CurrencyDetail'] as $Detail) {
        $unicode = $Detail->FontCode2000;
      }
      foreach ($data['CurrencyDetail'] as $Detail) {
        $currencycode = $Detail->Currency_Code;
      }
      //print_r($unicode);
      $data['unicode'] = $unicode;
      $data['currencycode'] = $currencycode;
      $this->global['pageTitle'] = 'Edit Import Purchase order form';

      $this->loadViews("editimportpo", $this->global,  $data, NULL);


    } else if ($ReqType == CAPITAL) {
      $CapitalRange = $this->request->getVar('CapitalRange');

      $CapitalAvlBudget   =   $this->purchaseorder_model->GetAvailableCapitalBudgetAmount($CostCode, $FYdt, $ReqType);


      if (count($CapitalAvlBudget) > 0) {
        $data['AvlCapitalBudAmt'] = $CapitalAvlBudget[0]['BudgetAmount'] -  $CapitalAvlBudget[0]['Totalvalue'];
      }

      if ($CapitalRange == '0') {
        $data['POItem'] = $this->purchaseorder_model->getCapitalPurchaseOrderDetails($PONO);
      } else if ($CapitalRange == '1') {
        $data['POItem'] = $this->purchaseorder_model->getDomesticCapitalPurchaseOrderDetails($PONO);
      }
      $data['requestedBy'] = $this->purchaseorder_model->GetRequesedByDetails($PONO);

      $data['getlogpodtl'] = $this->purchaseorder_model->getlogpodtl($PONO);
      //$CapitalRange='';
      foreach ($data['POItem'] as $Rate) {
        $exRate = $Rate->ExchangeRate;
        $CapitalRange = $Rate->CapitalRange;
      }
      foreach ($data['POItem'] as $CUR) {

        $Currency = $CUR->CurrencyType;
      }

      if ($CapitalRange == '0') {
        $data['CurrencyDetail'] = $this->purchaseorder_model->GetCurrencyDetail($Currency);
        $data['ExchangeRate'] = $exRate;
        $data['Currency'] = $this->purchaseorder_model->GetCurrencytype();
      } else if ($CapitalRange == '1') {
        $data['CurrencyDetail'] = $this->purchaseorder_model->GetCurrencyDetail('INR');
        $data['ExchangeRate'] = $exRate;
        $data['Currency'] = $this->purchaseorder_model->GetCurrencytype();
      }


      $this->global['pageTitle'] = 'Edit Capital Purchase order form';
      $this->loadViews("editCapitalPo", $this->global,  $data, NULL);
    }
  }



  function PurchaseOrderFinanceView()
  {
    $PONO =  $this->request->getVar('PONO');
    $POType =  $this->request->getVar('POType');

    $ReqType = $this->request->getVar('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['Payment'] = $this->purchaseorder_model->getPaymentTermsDetails();
    $data['INRSYMBOL'] = $this->purchaseorder_model->GetINRCurrencytype('INR');
    /*   Cost code from Requisition - Client Review Fix   
                Start here */
    $data['PoTypeOptions'] = $this->purchaseorder_model->getConfigValue('C026');
    $ReqDetails = $this->purchaseorder_model->getRequistDetails($ReqArray);

    $data['RequistionDetails'] =  $ReqDetails;
    foreach ($data['RequistionDetails'] as $ReqDet) {

      $Status = $ReqDet->Status;
    }

    $data['POSTATUS'] = $this->purchaseorder_model->GetPOStatus($Status);

    foreach ($data['POSTATUS'] as $POST) {
      $Status = $POST->StatusName;
    }

    $CostCode = '';
    $this->costcenter_model = new costcenter_model();
    $FYStart = '';
    $FYEnd = '';
    $FiscalYear =   $this->costcenter_model->getFiscalYear();
    if (!empty($FiscalYear)) {
      foreach ($FiscalYear as $Fy) {
        $FYStart = $Fy->StartYear;
        $FYEnd = $Fy->EndYear;
      }
    }

    $FYdt = $FYStart . " - " . $FYEnd;
    foreach ($ReqDetails as $Rs) :
      $CostCode = $Rs->CostCenterCode;
    endforeach;
    $AvlBudget   =   $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode, $FYdt, $ReqType);
    if (count($AvlBudget) > 0) {
      $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] -  $AvlBudget[0]['Totalvalue'];
    }
    /* End Here */

    $data['POMaster'] = $this->purchaseorder_model->GetServicePurchaseOrder($PONO);
    //$data['POSTATUS']=$this->purchaseorder_model->GetServicePurchaseOrder($PONO);
    //print_r($data['POMaster']);
    foreach ($data['POMaster'] as $Exc) {
      $exRate = $Exc->ExchangeRate;
    }
    foreach ($data['POMaster'] as $TER) {
      $PAYTERM = $TER->PaymentTerms;
    }


    $data['MaxPODate'] =  $this->purchaseorder_model->getLastReleasedPODate();
    $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006');
    $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018');


    if ($POType == IMPORT) {
      $AvlBudget   =   $this->purchaseorder_model->GetAvailableImportBudgetAmount($CostCode, $FYdt, 'IMPORT');


      //print_r($AvlBudget);


      if (count($AvlBudget) > 0) {
        $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] -  $AvlBudget[0]['Totalvalue'];
      }
      //print_r($data['AvlBudAmt']); 
      $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetails($PONO);
      // print_r($data['POItem']);
      $data['Currency'] = $this->purchaseorder_model->GetCurrencytype();
      foreach ($data['POMaster'] as $CUR) {
        //print_r($CUR->CurrencyType);
        $Currency = $CUR->CurrencyType;
      }
      // $data[$Rate->ExchangeRate]=$Rate->ExchangeRate;
      $data['CurrencyDetail'] = $this->purchaseorder_model->GetCurrencyDetail($Currency);
      $data['PaymentTerms'] = $this->purchaseorder_model->GetPaymentTerms($PONO);
      $data['PoTypeOptions'] = $this->purchaseorder_model->getConfigValue('C026');
      //print_r($data['PaymentTerms']);
      $unicode = '';
      foreach ($data['CurrencyDetail'] as $Detail) {
        $unicode = $Detail->FontCode2000;
      }
      foreach ($data['CurrencyDetail'] as $Detail) {
        $currencycode = $Detail->Currency_Code;
      }
      //print_r($unicode);
      $data['unicode'] = $unicode;
      $data['currencycode'] = $currencycode;
      $this->global['pageTitle'] = 'Edit Import Purchase order form';
      $this->loadViews("editimportpo", $this->global,  $data, NULL);
    } else if ($POType == CAPITAL) {
      $CapitalRange = $this->request->getVar('CapitalRange');

      $CapitalAvlBudget   =   $this->purchaseorder_model->GetAvailableCapitalBudgetAmount($CostCode, $FYdt, $ReqType);


      if (count($CapitalAvlBudget) > 0) {


        $data['AvlCapitalBudAmt'] = $CapitalAvlBudget[0]['BudgetAmount'] -  $CapitalAvlBudget[0]['Totalvalue'];
      }

      if ($CapitalRange == '0') {
        $data['POItem'] = $this->purchaseorder_model->getCapitalPurchaseOrderDetails($PONO);
      } else if ($CapitalRange == '1') {
        $data['POItem'] = $this->purchaseorder_model->getDomesticCapitalPurchaseOrderDetails($PONO);
      }
      $data['requestedBy'] = $this->purchaseorder_model->GetRequesedByDetails($PONO);


      //$CapitalRange='';
      foreach ($data['POItem'] as $Rate) {
        $exRate = $Rate->ExchangeRate;
        $CapitalRange = $Rate->CapitalRange;
      }
      foreach ($data['POItem'] as $CUR) {

        $Currency = $CUR->CurrencyType;
      }

      if ($CapitalRange == '0') {
        $data['CurrencyDetail'] = $this->purchaseorder_model->GetCurrencyDetail($Currency);
        $data['ExchangeRate'] = $exRate;
        $data['Currency'] = $this->purchaseorder_model->GetCurrencytype();
      } else if ($CapitalRange == '1') {
        $data['CurrencyDetail'] = $this->purchaseorder_model->GetCurrencyDetail('INR');
        $data['ExchangeRate'] = $exRate;
        $data['Currency'] = $this->purchaseorder_model->GetCurrencytype();
      }


      $this->global['pageTitle'] = 'Edit Capital Purchase order form';
      $this->loadViews("editCapitalPo", $this->global,  $data, NULL);
    }
  }

  // To get the Material value based on the MaterialCode
  function getDetailsforReq()
  {


    $SearchFilter = $this->request->getPost('id');
    // $reqDate= $this->request->getPost('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->request->getPost('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->request->getPost('id');
    // $reqDate= $this->request->getPost('ReqDate');
    $CostCode =  $SearchFilter[0];
    $ReqType =  $SearchFilter[1];
    print_r($SearchFilter);
    $CostCode =  $this->request->getPost('id');

    $Year = get_current_date("Y");
    $this->purchaseorder_model = new 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'];
    }

    print_r($AvilBudAmt);
  }

  /* Method to get the Requistion list based on the search filter*/

  function SearchListofRequistion()
  {
    $SearchFilter = $this->request->getPost('id');

    $DEPCode =  $SearchFilter[0];
    $Status =  $SearchFilter[1];
    $rng =   $SearchFilter[2];;

    $FromDate = '';
    $ToDate = '';

    $Dt =  explode("-", $rng);

    if (count($Dt) > 1) {
      $FDate = $Dt[0];
      $TDate = $Dt[1];
      $FromDate =  get_date_time_format($FDate);
      $ToDate =  get_date_time_format($TDate);
    }

    $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 .= "
              
              " . $ReqNo . "
                 
              " . $ReqType . "
              
              " . $Reqedby . "  
              " . $ReqDate . "  
              " . $Status . " 
              " . $Department . " 
              " . $Designation . "              
              ";
    }
    die(json_encode(array('ReqList' => $HTML)));
  }


  /* To View the request details*/
  function ListPORequistion()
  {
    $ReqNo = $this->request->getPost('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 .= "
              " . $SNo . "
              " . $MaterialCode . "
                                                
              " . $MaterialName . "
              
              " . $UOM . "  
              " . $Quantity . "               
              ";

      //$index =  $index + 1;

    }

    $CostCenter = "";
    if (count($CostList) > 0) {
      for ($j = 0; $j < count($CostList); $j++) {
        $Code = $CostList[$j]['CostCenterCode'];
        $Name = $CostList[$j]['CostCenterName'];
        $CostCenter .= "";
      }
    }

    die(json_encode(array('Items' => $HTML, 'Requist' => $ReqList, 'Cost' => $CostCenter)));
  }

  //This used to Create Revenue Purchase Order
  function addNewPurchaseOrder()
  {
    helper('numberseries');
    try {
      
      // Extract POST data
      $POdt = $this->request->getPost('PODate');
      $PODate = get_date_time_format($POdt);
      $SupplierID = $this->request->getPost('drpSupplier');
      $DeliveryAddr = $this->request->getPost('DeliveryAddr');
      $dt = $this->request->getPost('Deliverydt');
      $POType = $this->request->getPost('POType');
      $DeliveryOption = $this->request->getPost('DateRange');
      if ($DeliveryOption == 1) {
        $Deliverydt = '';
        $DeliverySchedule = $this->request->getPost('Scheduleby');
      } else {
        $Deliverydt = get_date_time_format($dt);
        $DeliverySchedule = '';
      }
      $BudgetType = $this->request->getPost('Budget');
      $Modeofshipment = $this->request->getPost('addmodeofshipment');
      $supplierreference = $this->request->getPost('addsupplierreference');
      $supplieroffno = $this->request->getPost('addsupplierofferno');
      $otherreference = $this->request->getPost('addotherreference');
      $fincap = ""; //$this->request->getPost('addfincap');
      $revenuetype = $this->request->getPost('PoTypeOptions');
      $insurancestatus = $this->request->getPost('insurance');
      $InsuranceNumber = ($insurancestatus == 1) ? $this->request->getPost('InsuranceNumber') : '';
      $SpcialInstruction = $this->request->getPost('SpcialInstruction');
      $TotalOrderValueSummary = $this->request->getPost('txtTotalOrderValueSummary');
      $POStatus = $this->request->getPost('txtStatus');
      $CreateBy = $this->session->get('userId');
      $RowCount = $this->request->getPost('txtRowCount');   
      $DeletedRow = $this->request->getPost('txtDeletedRow');
      $comma_separated = ($DeletedRow !== null && is_string($DeletedRow)) ? explode(':', $DeletedRow) : [];
      $createddt = get_current_date_time();
      $PaymentTerms = $this->request->getPost('PaymentTerms');
      $OtherPayment = $this->request->getPost('Otherpayment');
      $Local_Interstate = $this->request->getPost('Range');
      $Qualitycheck = 1;
      $IsOpenOrder = ($this->request->getPost('IsOpenOrder') !== null && !empty($this->request->getPost('IsOpenOrder')) && $this->request->getPost('IsOpenOrder') === '1') ? $this->request->getPost('IsOpenOrder') : null;


      $file = $this->request->getFile('POFile');
      $requestfilename = NULL;
      if (!empty($file)) {
        if ($file->isValid() && !$file->hasMoved()) {
          $requestfilename = $file->getName();
          $path = ROOTPATH . 'public/uploads/POfiles/';
          if (!is_dir($path)) {
            mkdir($path, 0777, true);
          }
          if (!empty($this->purchaseorder_model->isFileExists($requestfilename))) {
            log_message('error', 'File already exists in the database' . $requestfilename);
           
            //$requestfilename = "";
				    //the above line is commented due to the fact that same file can exist in the database
					 //for different po
          
          } else {
            $file->move($path, $requestfilename);
          }
        } else {
          $requestfilename = "";
        }
      }

      // Generate PO Number
      $lastPONO = $this->purchaseorder_model->lastPONO();
      $newPONO = generate_po_number($lastPONO);
      log_message('debug', 'newPONO returned: ' . $newPONO);
      // PO Master
      $POList = array('PONO' => $newPONO, 'SupplierID' => $SupplierID, 'TotalOrderValue' => $TotalOrderValueSummary, 'PODate' => $PODate, 'DeliverySchedule' => $DeliverySchedule, 'DeliveryOption' => $DeliveryOption, 'Status' => $POStatus, 'PORange' => $Local_Interstate, 'ServiceDescription' => $SpcialInstruction, 'CreatedBy' => $CreateBy, 'DeliveryAddress' => $DeliveryAddr, 'DeliveryDate' => $Deliverydt, 'CreatedDate' => $createddt, 'PaymentTerms' => $PaymentTerms, 'POType' => $POType, 'CapitalRange' => $Local_Interstate, 'PaymentOtherDescription' => $OtherPayment, 'Supplier_Reference' => $supplierreference, 'Mode_Of_Shipment' => $Modeofshipment, 'Supplier_Offer_No' => $supplieroffno, 'Other_Reference' => $otherreference, 'Fincap' => $fincap, 'InsuranceStatus' => $insurancestatus, 'POSubType' => $revenuetype, 'InsuranceNumber' => $InsuranceNumber, 'IsQualityChkReqired' => $Qualitycheck, 'BudgetType' => $BudgetType, 'IsOpenOrder' => $IsOpenOrder, 'POFile' => $requestfilename);
      $POMaster = $this->purchaseorder_model->addPOMaster($POList, $POType, $revenuetype);
      $PONO = '';
      if (count($POMaster) > 0) {
        $PONO = $POMaster[0]['PONO'];
      } else {
        throw new \Exception('Error occurred while creating PO Master');
      }
      log_message('error', 'CTRL PONO : ' . $PONO);

      // PO Line Items
      $LineItemStatus = REQITEM_NEW;

      for ($i = 1; $i <= $RowCount; $i++) {
        $MaterialCode = $this->request->getPost('materialCode' . $i);
        $Quantity = $this->request->getPost('quantity' . $i);
        $Reqnumber = $this->request->getPost('Reqnumber' . $i);
        $itemRate = $this->request->getPost('itemRate' . $i);
        $per = $this->request->getPost('per' . $i);

        $DiscountType = $this->request->getPost('DisType' . $i);
        $DiscountValue = $this->request->getPost('DisVal' . $i);
        $AfterDiscount = $this->request->getPost('AfterDisVal' . $i);
        $PackagingOption = $this->request->getPost('PackOption' . $i);
        $PackagingType = $this->request->getPost('PackType' . $i);
        $PackagingValue = $this->request->getPost('PackVal' . $i);
        $AfterPackagingValue = $this->request->getPost('AfterPackVal' . $i);

        $FreightType = $this->request->getPost('FreightType' . $i);
        $FreightValue = $this->request->getPost('FreightVal' . $i);
        $AfterFreightValue = $this->request->getPost('AfterFreightVal' . $i);
        $NOOfTrip = $this->request->getPost('NoOfTrip' . $i);
        $InsuranceValue = $this->request->getPost('Insval' . $i);
        $TotalOrderValue = $this->request->getPost('TotalOrderValue' . $i);
        $revenuedescription = $this->request->getPost('Service_Description' . $i);
        $CostCenter = $this->request->getPost('costCode' . $i);
        $Cgst = $this->request->getPost('RevenueCgst' . $i);
        $Sgst = $this->request->getPost('RevenueSgst' . $i);
        $Igst = $this->request->getPost('RevenueIgst' . $i);
        $AfterCgst = $this->request->getPost('RevenueAfterCgst' . $i);
        $AfterSgst = $this->request->getPost('RevenueAfterSgst' . $i);
        $AfterIgst = $this->request->getPost('RevenueAfterIgst' . $i);
        $LineitemAuditorNotes = $this->request->getPost('LineItemNoteForAuditor' . $i);
			  $LineitemAuditorNotes = ($LineitemAuditorNotes === null || $LineitemAuditorNotes === '') ? '-' : $LineitemAuditorNotes;
        if($itemRate != 0){
        $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate);        }
        $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") {

          $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Per' => $per, 'ServiceMaterialDescription' => $revenuedescription, 'Status' => $LineItemStatus, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'CostCenterCode' => $CostCenter,'LineitemAuditorNotes' => $LineitemAuditorNotes);
          $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList);
          $LineItemNo = '';
          if (count($POLineItem) > 0) {
            $LineItemNo = $POLineItem[0]['LineItemNo'];
          } else {
            throw new \Exception('Error occurred while creating PO Line Item');
          }

          if (trim((string)$POType) == REVENUE) {
            $RevenueTaxList = array('LineItemNo' => $LineItemNo, 'DiscountType' => $DiscountType, 'DiscountValue' => $DiscountValue, 'AfterDiscount' => $AfterDiscount, 'PackagingType' => $PackagingType, 'PackagingValue' => $PackagingValue, 'PackagingCalulatedOn' => $PackagingOption, 'AfterPackagingValue' => $AfterPackagingValue, 'FreightType' => $FreightType, 'FreightValue' => $FreightValue, 'AfterFreightValue' => $AfterFreightValue, 'Insurance' => $InsuranceValue, 'TotalValue' => $TotalOrderValue, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'CGST' => $Cgst, 'AfterCGST' => $AfterCgst, 'SGST' => $Sgst, 'AfterSGST' => $AfterSgst, 'IGST' => $Igst, 'AfterIGST' => $AfterIgst, 'NoOfTrip' => $NOOfTrip);
            $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList);
            if (!$RevenueList) {
              throw new \Exception('Error occurred while creating Revenue Tax');
            }
          }
        }
      }
      $message = "Revenue Purchase Order Created Successfully!\nPO Number Is: " . $PONO;
      if($POStatus == 'ST014'){
      $message = "Revenue Purchase Order Saved as Draft!\nPO Number Is: " . $PONO;
      } else if($POStatus == 'ST026'){
      $message = "Revenue Purchase Order Approved Successfully!\nPO Number Is: " . $PONO;
      } 
      echo $message;
    } catch (\Exception $e) {
      log_message('error', 'Exception occurred: ' . $e->getMessage());
      echo 'An error occurred while creating the purchase order. Please try again.';
    }
  }

  //This used to Edit the Revenue Purchase Order
  function EditRevenuePurchaseOrder()
  {
    $PONO = $this->request->getPost('txtPONO');
    $POdt = $this->request->getPost('PODate');
    $PODate =  get_date_time_format($POdt);
    $SupplierID = $this->request->getPost('drpSupplier');
    $newsup = (string)$this->request->getPost('newsup');
    // $newSupId = split("[ - ]+", $newsup);
    $newSupId = preg_split('[-]', $newsup);


    $DeliveryAddr = $this->request->getPost('txtDeliveryAddress');
    $dt = $this->request->getPost('Deliverydt');
    //$Deliverydt = get_date_time_format($dt);
    $DeliveryOption = $this->request->getPost('DateRange');
    if ($DeliveryOption == 1) {
      $Deliverydt = '';
      $DeliverySchedule = $this->request->getPost('Scheduleby');
    } else {
      $Deliverydt = get_date_time_format($dt);
      $DeliverySchedule = '';
    }

    $b4supplier = $this->request->getPost('b4supplier');
    $b4date = $this->request->getPost('b4podate');
    $b4podate =  get_date_time_format($b4date);

    $Modeofshipment = $this->request->getPost('editmodeofshipment');
    $supplierreference = $this->request->getPost('editsupplierreference');
    $supplieroffno = $this->request->getPost('editsupplierofferno');
    $otherreference = $this->request->getPost('editotherreference');
    $fincap = ""; // $this->request->getPost('editfincap');
    $revenuetype = $this->request->getPost('PoTypeOptions');
    $insurancestatus = $this->request->getPost('insurancestatus');
    if ($insurancestatus == 1) {
      $InsuranceNumber = $this->request->getPost('InsuranceNumber');
    } else {
      $InsuranceNumber = "";
    }

    $POType = $this->request->getPost('POType');
    $PoRange = $this->request->getPost('txtPoRange');

    $BudgetType = $this->request->getPost('Budget');

    $SpcialInstruction = $this->request->getPost('SpcialInstruction');
    $TotalOrderValueSummary = $this->request->getPost('txtTotalOrderValueSummary');
    $POStatus = $this->request->getPost('txtStatus');

    $updatedBy = $this->session->get('userId');

    //echo($updatedBy);
    $RowCount =  $this->request->getPost('txtRowCount');
    $DeletedRow =  $this->request->getPost('txtDeletedRow');
    $comma_separated = ($DeletedRow !== null && is_string($DeletedRow))
      ? explode(':', $DeletedRow)
      : [];
    //echo $RowCount . "-" . $DeletedRow;
    //die();

    $updateddt =  get_current_date_time();

    $PaymentTerms = $this->request->getPost('PaymentTerms');
    $OtherPayment = $this->request->getPost('Otherpayment');
    $Local_Interstate = $this->request->getPost('Range');

    $Qualitycheck = 1;
    // PO Master
    // PO Master
    $POList = array('SupplierID' => $SupplierID, 'TotalOrderValue' => $TotalOrderValueSummary, 'PODate' => $PODate, 'DeliverySchedule' => $DeliverySchedule, 'DeliveryOption' => $DeliveryOption, 'Status' => $POStatus, 'PORange' => $Local_Interstate, 'ServiceDescription' => $SpcialInstruction, 'UpdateBY' => $updatedBy, 'DeliveryAddress' => $DeliveryAddr, 'DeliveryDate' => $Deliverydt, 'UpdatedOn' => $updateddt, 'PaymentTerms' => $PaymentTerms, 'POType' => $POType, 'CapitalRange' => $Local_Interstate, 'PaymentOtherDescription' => $OtherPayment, 'Supplier_Reference' => $supplierreference, 'Mode_Of_Shipment' => $Modeofshipment, 'Supplier_Offer_No' => $supplieroffno, 'Other_Reference' => $otherreference, 'Fincap' => $fincap, 'InsuranceStatus' => $insurancestatus, 'POSubType' => $revenuetype, 'InsuranceNumber' => $InsuranceNumber, 'IsQualityChkReqired' => $Qualitycheck, 'BudgetType' => $BudgetType);
    if ($POStatus == 'ST026') {
      $POList['ApprovedOn'] = get_current_date_time();
      $POList['ApprovedBy'] = $this->session->get('userId');
      $POList['ReleasedOn'] = get_current_date_time();
      $POList['ReleasedBy'] = $this->session->get('userId');
    }
    $file = $this->request->getFile('POFile');
    $requestfilename = NULL;
    if (!empty($file)) {
      if ($file && $file->isValid() && !$file->hasMoved()) {
        $requestfilename = $file->getName();

        $path = ROOTPATH . 'public/uploads/POfiles/';
        if (!is_dir($path)) {
          mkdir($path, 0777, true);
        }
        if (!empty($this->purchaseorder_model->isFileExists($requestfilename))
        && file_exists($path .$requestfilename)) {
          log_message('error', 'File already exists in the database' . $requestfilename);
          $POList['POFile'] = $requestfilename;

        } else {
          $file->move($path, $requestfilename);
          $POList['POFile'] = $requestfilename;
        }
      }
    }

    $POMaster  = $this->purchaseorder_model->updatePOMaster($PONO, $POList);


    $LineItemStatus = REQITEM_NEW;
    if ($PODate != $b4podate) {
      $logpo = array('PONO' => $PONO, 'LineItemNos' => '-', 'UpdateBy' => $updatedBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4podate, 'newValue' => $PODate, 'entity' => 'PO DateChanged');


      $this->purchaseorder_model->insertlogpo($logpo);
    }

    if (!empty($newSupId[0])) {
      if ($newSupId[0] != $b4supplier) {
        //echo $b4supplier.'-'.$newSupId[0];die;
        $logpo = array('PONO' => $PONO, 'LineItemNos' => '-', 'UpdateBy' => $updatedBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4supplier, 'newValue' => $newsup, 'entity' => 'Supplier Changed');


        $this->purchaseorder_model->insertlogpo($logpo);
      }
    }

    //echo "OUT";
    // print_r($this->request->getPost());die;
    for ($i = 1; $i <= $RowCount; $i++) {
      //echo "IN";  
      $MaterialCode = $this->request->getPost('materialCode' . $i);
      $Quantity = $this->request->getPost('quantity' . $i);
      $Reqnumber = $this->request->getPost('Reqnumber' . $i);

      $b4qty = $this->request->getPost('b4qty' . $i);
      $b4rate = $this->request->getPost('b4rate' . $i);

      $itemRate = $this->request->getPost('itemRate' . $i);
      $per = $this->request->getPost('per' . $i);
      $DiscountType = $this->request->getPost('DisType' . $i);
      $DiscountValue = $this->request->getPost('DisVal' . $i);
      $AfterDiscount = $this->request->getPost('AfterDisVal' . $i);
      $PackagingOption = $this->request->getPost('PackOption' . $i);
      $PackagingType = $this->request->getPost('PackType' . $i);
      $PackagingValue = $this->request->getPost('PackVal' . $i);
      $AfterPackagingValue = $this->request->getPost('AfterPackVal' . $i);
      $Cgst = $this->request->getPost('RevenueCgst' . $i);
      $Sgst = $this->request->getPost('RevenueSgst' . $i);
      $Igst = $this->request->getPost('RevenueIgst' . $i);
      $AfterCgst = $this->request->getPost('RevenueAfterCgst' . $i);
      $AfterSgst = $this->request->getPost('RevenueAfterSgst' . $i);
      $AfterIgst = $this->request->getPost('RevenueAfterIgst' . $i);
      $FreightType = $this->request->getPost('FreightType' . $i);
      $FreightValue = $this->request->getPost('FreightVal' . $i);
      $AfterFreightValue = $this->request->getPost('AfterFreightVal' . $i);
      $NOOfTrip = $this->request->getPost('NoOfTrip' . $i);
      $revenuedescription = $this->request->getPost('service_description' . $i);
      $InsuranceValue = $this->request->getPost('Insval' . $i);
      $TotalOrderValue = $this->request->getPost('TotalOrderValue' . $i);
      $POLineItemNo = $this->request->getPost('LineItemNo' . $i);
      $CostCenter = $this->request->getPost('costCode' . $i);
      $LineitemAuditorNotes = $this->request->getPost('LineItemNoteForAuditor' . $i);
      $LineitemAuditorNotes = ($LineitemAuditorNotes === null || $LineitemAuditorNotes === '') ? '-' : $LineitemAuditorNotes;
      $LineItemNo = '';

      /*---------start---------------------*/
      if ($Quantity != $b4qty) {
        $logpo = array('PONO' => $PONO, 'LineItemNos' => $POLineItemNo, 'UpdateBy' => $updatedBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4qty, 'newValue' => $Quantity, 'entity' => 'Quantity Changed');


        $this->purchaseorder_model->insertlogpo($logpo);
      }


      if ($itemRate != $b4rate) {
        $logpo = array('PONO' => $PONO, 'LineItemNos' => $POLineItemNo, 'UpdateBy' => $updatedBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4rate, 'newValue' => $itemRate, 'entity' => 'Rate Changed');


        $this->purchaseorder_model->insertlogpo($logpo);
      }
      if($itemRate != 0){
        $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate);        }
      $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;
          }
        }
      }

      $recqty = 0;

      if ($POStatus == SPECIAL_PO) {
          
          $ReqDetails = array('Quantity' => $Quantity, 'UpdatedBy' => $updatedBy, 'UpdatedOn' => $updateddt);
          $this->purchaseorder_model->updateReqDetails($Reqnumber, $MaterialCode, $ReqDetails);

        $recqty = $Quantity;

        $IGRD = $this->purchaseorder_model->IGRDetailsupdate($PONO);
        $j = $i - 1;


        $IGRDs = array('QuantityAsPerInvoice' => $Quantity, 'UpdateBY' => $updatedBy, 'UpdatedOn' => $updateddt);

        $itemNo = isset($IGRD[$j]['IGRItemNo']) ? $IGRD[$j]['IGRItemNo'] : null;
 
        $this->purchaseorder_model->updateIGR($itemNo, $IGRDs);


        $MaterialstockHistoryupdate = array('SupplierID' => $SupplierID, 'Quantity' => $Quantity, 'ItemValue' => $itemRate, 'UpdatedBY' => $updatedBy, 'UpdatedOn' => $updateddt);


        $this->purchaseorder_model->updateMatStock(
          $itemNo,
          $MaterialstockHistoryupdate
        );

        $rawget_pre_qty = $this->inwardgateregister_model->get_CurrentQty($MaterialCode);
        $av_qty = 0;
        if (!empty($rawget_pre_qty)) {
          foreach ($rawget_pre_qty as $gt) {
            $av_qty = $gt->Current_stock;
          }
        }

        $qty_dif = $Quantity - $b4qty;

        $currentav_qty = $av_qty - $qty_dif;

        $current_qty = array('Current_stock' => $currentav_qty);

        $this->inwardgateregister_model->addmaterialmaster($current_qty, $MaterialCode);
      }

      /*------------------------------*/
      $this->requistion_model = new requistion_model();

      $RetItemNo = $this->requistion_model->getItemNumber($Reqnumber, $MaterialCode);

      $ItemNo = '';
      if (count($RetItemNo) > 0) {
        $ItemNo =  $RetItemNo[0]['ItemNo'];
      }
      $getOldReqDetailsQuantity = $this->purchaseorder_model->getOldReqDetailsQuantity($Reqnumber, $MaterialCode,$ItemNo);
      if($Quantity == $getOldReqDetailsQuantity){
        $ReqDetails = array('Quantity' => $Quantity, 'UpdatedBy' => $updatedBy, 'UpdatedOn' => $updateddt);
        $this->purchaseorder_model->updateReqDetails($Reqnumber, $MaterialCode, $ReqDetails);
      }
      /*------------------------------*/

      if ($SkipInsert == "False") {

        if (strlen((string)$POLineItemNo) == 0) {
          
          $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'ReceivedQuantity' => $recqty, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'CreatedBy' => $updatedBy, 'CreatedDate' => $updateddt, 'CostCenterCode' => $CostCenter,'LineitemAuditorNotes'=>$LineitemAuditorNotes );

          $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList);
          if (count($POLineItem) > 0) {
            $LineItemNo =  $POLineItem[0]['LineItemNo'];
          }
        } else {

          $LineItemNo = $POLineItemNo;

          $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'ReceivedQuantity' => $recqty, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'UpdateBY' => $updatedBy, 'UpdatedOn' => $updateddt, 'CostCenterCode' => $CostCenter,'LineitemAuditorNotes'=>$LineitemAuditorNotes);

          $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO, $POLineItemNo, $POLineItemList);
        }

        $isExists = $this->purchaseorder_model->LineItemExistsinRevenueTax($LineItemNo);

        // Ensure $isExists is an array, or initialize it as an empty array
        if (!is_array($isExists)) {
          $isExists = [];
        }

        if (count($isExists) == 0) {
          $RevenueTaxList = array(
            'LineItemNo' => $LineItemNo,
            'DiscountType' => $DiscountType,
            'DiscountValue' => $DiscountValue,
            'AfterDiscount' => $AfterDiscount,
            'PackagingType' => $PackagingType,
            'PackagingValue' => $PackagingValue,
            'PackagingCalulatedOn' => $PackagingOption,
            'AfterPackagingValue' => $AfterPackagingValue,
            'FreightType' => $FreightType,
            'FreightValue' => $FreightValue,
            'AfterFreightValue' => $AfterFreightValue,
            'Insurance' => $InsuranceValue,
            'TotalValue' => $TotalOrderValue,
            'CGST' => $Cgst,
            'AfterCGST' => $AfterCgst,
            'SGST' => $Sgst,
            'AfterSGST' => $AfterSgst,
            'IGST' => $Igst,
            'AfterIGST' => $AfterIgst,
            'NoOfTrip' => $NOOfTrip
          );
          $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList);
        } else {
          $RevenueTaxList = array(
            'DiscountType' => $DiscountType,
            'DiscountValue' => $DiscountValue,
            'AfterDiscount' => $AfterDiscount,
            'PackagingType' => $PackagingType,
            'PackagingValue' => $PackagingValue,
            'PackagingCalulatedOn' => $PackagingOption,
            'AfterPackagingValue' => $AfterPackagingValue,
            'FreightType' => $FreightType,
            'FreightValue' => $FreightValue,
            'AfterFreightValue' => $AfterFreightValue,
            'Insurance' => $InsuranceValue,
            'TotalValue' => $TotalOrderValue,
            'UpdateBY' => $updatedBy,
            'UpdatedOn' => $updateddt,
            'CGST' => $Cgst,
            'AfterCGST' => $AfterCgst,
            'SGST' => $Sgst,
            'AfterSGST' => $AfterSgst,
            'IGST' => $Igst,
            'AfterIGST' => $AfterIgst,
            'CreatedBy' => $updatedBy,
            'NoOfTrip' => $NOOfTrip
          );
          $this->purchaseorder_model->updateRevenueTax($LineItemNo, $RevenueTaxList);
        }
      }
    }

    $message = "Revenue Purchase Order Updated Successfully!\nPO Number Is: " . $PONO;
    if($POStatus == 'ST014'){
      $message = "Revenue Purchase Order Saved as Draft!\nPO Number Is: " . $PONO;
    } else if($POStatus == 'ST026'){
      $message = "Revenue Purchase Order Approved Successfully!\nPO Number Is: " . $PONO;
    } 
      echo $message;
  }


  public function revenuepoprint($PONO)
  {

    // Load all views as normal


    //$PONO =   $this->request->getVar('PO');
    $PoStatus = '';
    $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO);
    $data['CompanyDetails'] =  $this->purchaseorder_model->getCompanyInformationforPDF();
    $data['GetPoFormat'] = $this->purchaseorder_model->GetPoFormat($PONO);
    $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetailsForPDF($PONO);
    $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO);
    $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName('INR');
    $data['reveuetax'] = $this->purchaseorder_model->getRevenueTaxinforforpdf($PONO);
    $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO);
    $Currencycode = '';

    $TotalOrderValue = $data['POItem'][0]->TotalOrderValue;
    $AdvanceAmount = 0.00;
    foreach ($data['POItem'] as $POI) {
      $AdvanceAmount = $POI->AdvanceAmount;
      $PoStatus = $POI->Status;
    }

    $TotaltoPay = 0.00;
    $TotaltoPay = $TotalOrderValue - $AdvanceAmount;
    $totalAmt = sprintf("%.2f", $TotalOrderValue);



    $data['TotalAmountInWords'] = $this->convertNumber($totalAmt);
    $data['RequistionDetails'] = $this->purchaseorder_model->GetPdfRequistionDetails($PONO);


    $mpdf = new Mpdf([
      'mode' => 'utf-8',
      'format' => 'A4', // Page format: A4 with portrait orientation
      // 'format' => [148, 210], // Set custom width and height in millimeters
      'default_font_size' => 6,
      'default_font' => 'sans-serif',
      'margin_left' => 10,
      'margin_right' => 10,
      'margin_top' => 10,
      'margin_bottom' => 10,
      'margin_header' => 82,
      'margin_footer' => 38,
      'orientation' => 'P',
    ]);


    $mpdf->autoLangToFont = true;
    $mpdf->autoScriptToLang = true;
    // Set PDF properties 
    $mpdf->SetTitle('Invoice');
    $mpdf->SetAuthor($data['CompanyDetails'][0]->CompanyName);
    $mpdf->SetCreator('');

    $htmlFooter = '
'; $mpdf->setHTMLFooter($htmlFooter); // Generate the PDF content (HTML) if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) { $mpdf->SetWatermarkText(''); } else { $mpdf->SetWatermarkText('DRAFT'); } $WatermarkImage = base_url() . "public/assets/images/mpdf.png"; $mpdf->SetWatermarkImage($WatermarkImage, 8, 10); $mpdf->showWatermarkImage = true; $mpdf->watermark_font = 'DejaVuSansCondensed'; $mpdf->showWatermarkText = true; // Set auto margins $mpdf->setAutoTopMargin = 'stretch'; $mpdf->setAutoBottomMargin = 'stretch'; // Set HTML header $HtmlHeading = view('includes/pdfheader', $data); $mpdf->SetHTMLHeader($HtmlHeading); // Set HTML body // $html = view('pdf_view', $data); // $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content $html = view('capitalpopdf', $data); $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content // Set HTML footer $HTMLFooter = view('includes/pdffooter', $data); $mpdf->setFooter($HTMLFooter . "Page {PAGENO} of {nb}"); // Output PDF $mpdf->Output('CapitalPOReport' . $PONO . '.pdf', 'D'); } public function servicepoprint($PONO) { // view('includes/pdfheader'); // Load the pdf page with multiviews $PoStatus = ''; $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformationforPDF(); $data['GetPoFormat'] = $this->purchaseorder_model->GetPoFormat($PONO); $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetailsForpdf($PONO); $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO); $data['serviceTaxList'] = $this->purchaseorder_model->GetServiceTaxDetails($PONO); $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName('INR'); //print_r( $data['CurrencySymbol']); $TotalOrderValue = 0; $Currencycode = ''; foreach ($data['POItem'] as $POValue) { $TotalOrderValue = $TotalOrderValue + $POValue->TotalValue; } $Advance = 0.00; foreach ($data['POItem'] as $PO) { $Advance = $PO->AdvanceAmount; $PoStatus = $PO->Status; } $TotaltoPay = 0.00; $TotaltoPay = $TotalOrderValue - $Advance; $totalAmt = sprintf("%.2f", $TotalOrderValue); $data['TotalAmountInWords'] = $this->convertNumber($totalAmt); $data['RequistionDetails'] = $this->purchaseorder_model->GetPdfRequistionDetails($PONO); $mpdf = new Mpdf([ 'mode' => 'utf-8', 'format' => 'A4-P', // Page format: A4 with portrait orientation // 'format' => [148, 210], // Set custom width and height in millimeters 'default_font_size' => 6, 'default_font' => 'sans-serif', 'margin_left' => 10, 'margin_right' => 10, 'margin_top' => 10, 'margin_bottom' => 10, 'margin_header' => 82, 'margin_footer' => 38, 'orientation' => 'P', ]); // Set watermark if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) { $mpdf->SetWatermarkText(''); } else { $mpdf->SetWatermarkText('DRAFT'); } $mpdf->SetWatermarkImage('.public/assets/images/mpdf.png', 8, 10); $mpdf->showWatermarkImage = true; $mpdf->watermark_font = 'DejaVuSansCondensed'; $mpdf->showWatermarkText = true; // Set HTML header $HtmlHeading = view('includes/pdfheader', $data); $mpdf->SetHTMLHeader($HtmlHeading); // Set HTML footer $HTMLFooter = view('includes/pdffooter', $data); $mpdf->setFooter($HTMLFooter . "Page {PAGENO} of {nb}"); // Set auto margins $mpdf->setAutoTopMargin = 'stretch'; $mpdf->setAutoBottomMargin = 'stretch'; // Generate PDF content $html = view('servicepopdf', $data); // Write HTML content to PDF $mpdf->WriteHTML($html); $mpdf->SetDisplayMode('fullpage'); // Output PDF $mpdf->Output('ServicePOReport' . $PONO . '.pdf', 'D'); } public function importpoprint($PONO) { // echo $PONO; // die(); //view('includes/pdfheader'); // Load the pdf page with multiviews $Requester = ''; $Depcode = ''; $Currencycode = ''; $PoStatus = ''; $PaiseVal = ''; $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformationforPDF(); $data['GetPoFormat'] = $this->purchaseorder_model->GetPoFormat($PONO); $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetailsForPDF($PONO); $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO); $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['RequistionDetails'] = $this->purchaseorder_model->GetPdfRequistionDetails($PONO); //print_r( $data['RequistionDetails']); foreach ($data['POItem'] as $Reqdby) { $Requester = $Reqdby->Requestedby; $PoStatus = $Reqdby->Status; } foreach ($data['POItem'] as $CURTYPE) { $Currencycode = $CURTYPE->CurrencyType; } $data['Requestername'] = $this->purchaseorder_model->GerRequesterName($Requester); foreach ($data['Requestername'] as $ReqDep) { $Depcode = $ReqDep->Departmentcode; } $data['DEPCODE'] = $this->purchaseorder_model->GerRequesterDep($Depcode); //print_r($data['Requestername']); $data['Currencytype'] = $this->purchaseorder_model->GerCurrencyCodeName($Currencycode); $ProductPrice = ''; $TotalOrderValue = 0.0; foreach ($data['POItem'] as $PO) { $TotalOrderValue = $PO->TotalOrderValue; } $AdvanceAmount = 0.0; foreach ($data['POItem'] as $POI) { $AdvanceAmount = $POI->AdvanceAmount; } $TotaltoPay = 0.00; $TotaltoPay = $TotalOrderValue - $AdvanceAmount; //$totalAmt=sprintf("%.2f", $ProductPrice); //$data['TotalAmountInWords']= $this->convertNumber($totalAmt); //print_r($data['TotalAmountInWords']); //view("importpopdf", $data); $CurrencyType = ''; if (!empty($data['POItem'])) { $CurrencyType = $data['POItem'][0]->CurrencyType; } // echo $CurrencyType; if ($CurrencyType == '') { $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName('INR'); } else { $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName($CurrencyType); } // $TotalOrderValue=$data['POItem'][0]->$TotalOrderValue; //print_r($data['POItem'][0]); $totalAmt = sprintf("%.2f", $TotalOrderValue); // $data['TotalAmountInWords']= $this->convertNumber($totalAmt); $SymbolCurrency = ''; $SymbolCurrencyName = ''; $PaiseVal = ''; if (!empty($data['CurrencySymbol']) > 0) { $SymbolCurrency = $data['CurrencySymbol'][0]->FontCode2000; $SymbolCurrencyName = $data['CurrencySymbol'][0]->Currency; $PaiseVal = $data['CurrencySymbol'][0]->PaiseVal; } $TotalOrderValue = $data['POItem'][0]->TotalOrderValue; $totalAmt = sprintf("%.2f", $TotaltoPay); $data['TotalAmountInWords'] = $this->convertNumberSymbol($totalAmt, $SymbolCurrency, $SymbolCurrencyName, $PaiseVal); $mpdf = new Mpdf([ 'mode' => 'utf-8', 'format' => 'A4-P', // Page format: A4 with portrait orientation // 'format' => [148, 210], // Set custom width and height in millimeters 'default_font_size' => 6, 'default_font' => 'sans-serif', 'margin_left' => 10, 'margin_right' => 10, 'margin_top' => 10, 'margin_bottom' => 10, 'margin_header' => 82, 'margin_footer' => 38, 'orientation' => 'P', ]); // Set watermark if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) { $mpdf->SetWatermarkText(''); } else { $mpdf->SetWatermarkText('DRAFT'); } $mpdf->SetWatermarkImage('.public/assets/images/mpdf.png', 8, 10); $mpdf->showWatermarkImage = true; $mpdf->watermark_font = 'DejaVuSansCondensed'; $mpdf->showWatermarkText = true; // Set HTML header $HtmlHeading = view('includes/pdfheader', $data); $mpdf->SetHTMLHeader($HtmlHeading); // Set HTML footer $HTMLFooter = view('includes/pdffooter', $data); $mpdf->setFooter($HTMLFooter . "Page {PAGENO} of {nb}"); // Set auto margins $mpdf->setAutoTopMargin = 'stretch'; $mpdf->setAutoBottomMargin = 'stretch'; // Generate PDF content $html = view('importpopdf', $data); // Write HTML content to PDF $mpdf->WriteHTML($html); $mpdf->SetDisplayMode('fullpage'); // Output PDF $mpdf->Output('ImportPOReport' . $PONO . '.pdf', 'I'); } /** * This function used to load the Delete the Requistion Items */ function DeletePODetails() { $ReqList = $this->request->getPost('id'); $LineItemNo = ''; $ReqNo = ''; $MaterialCode = ''; $POType = ''; if (count($ReqList) > 0) { $LineItemNo = $ReqList[0]; $ReqNo = $ReqList[1]; $MaterialCode = $ReqList[2]; $POType = $ReqList[3]; } if ($POType == REVENUE) { $this->purchaseorder_model->DeletePORevenueTax($LineItemNo); } else if ($POType == SERVICE) { $this->purchaseorder_model->DeletePOServiceTax($LineItemNo); } else if ($POType == IMPORT) { $this->purchaseorder_model->DeletePOImportTax($LineItemNo); } else if ($POType == CAPITAL) { $this->purchaseorder_model->DeletePOImportTax($LineItemNo); $this->purchaseorder_model->DeletePOServiceTax($LineItemNo); } $this->purchaseorder_model->DeletePOLineItem($LineItemNo, $ReqNo, $MaterialCode); echo "Successfully Deleted the Line item " . $LineItemNo; } function addNewImportPurchaseOrder() { helper('numberseries'); try { $POdt = $this->request->getPost('PODate'); $PODate = get_date_time_format($POdt); $SupplierID = $this->request->getPost('drpSupplier'); $DeliveryAddr = $this->request->getPost('DeliveryAddr'); $POType = $this->request->getPost('POType'); $PoRange = $this->request->getPost('txtPoRange'); $DeliveryOption = $this->request->getPost('DateRange'); $DeliverySchedule = ''; $Dispatch = ''; if ($DeliveryOption == 1) { $Dispatch = ''; $DeliverySchedule = $this->request->getPost('Scheduleby'); } else { $Dispatch = $this->request->getPost('Dispatch'); $DeliverySchedule = ''; } $SpcialInstruction = $this->request->getPost('txtSpcialInstruction'); $TotalOrder = $this->request->getPost('txtToatlOrder'); $POStatus = $this->request->getVar('textStatus'); $BudgetType = $this->request->getPost('Budget'); $CreateBy = $this->session->get('userId'); $RowCount = $this->request->getVar('txtRowCount'); $DeletedRow = $this->request->getVar('txtDeletedRow'); $comma_separated = ($DeletedRow !== null && is_string($DeletedRow)) ? explode(':', $DeletedRow) : []; $createddt = get_current_date_time(); $Exchangerate = $this->request->getPost('ExchangeRate'); $Edt = $this->request->getPost('Exchangerateon'); $ExchangeRateCalculatedon = get_date_time_format($Edt); $CurrencyType = $this->request->getPost('currencytype'); $PaymentTerms = $this->request->getPost('PaymentTerms'); $OtherPayment = $this->request->getPost('Otherpayment'); $Palaceoforigin = $this->request->getPost('PlaceOforigin'); $Shipmentmode = $this->request->getPost('addmodeofshipment'); $SupplierRef = $this->request->getPost('addsupplierreference'); $SupplierOffer = $this->request->getPost('addsupplierofferno'); $otherRef = $this->request->getPost('addotherreference'); $finCap = ""; //$this->request->getPost('addfincap'); $importoption = $this->request->getPost('Importoption'); $Insurance = $this->request->getPost('Insurance'); if ($Insurance == 1) { $InsuranceNumber = $this->request->getPost('InsuranceNumber'); } else { $InsuranceNumber = ''; } $Qualitycheck = 1; $IsOpenOrder = ($this->request->getPost('IsOpenOrder') !== null && !empty($this->request->getPost('IsOpenOrder')) && $this->request->getPost('IsOpenOrder') === '1') ? $this->request->getPost('IsOpenOrder') : null; $lastPONO = $this->purchaseorder_model->lastPONO(); $newPONO = generate_po_number($lastPONO); $file = $this->request->getFile('POFile'); $requestfilename = NULL; if (!empty($file)) { if ($file->isValid() && !$file->hasMoved()) { $requestfilename = $file->getName(); $path = ROOTPATH . 'public/uploads/POfiles/'; if (!is_dir($path)) { mkdir($path, 0777, true); } if (!empty($this->purchaseorder_model->isFileExists($requestfilename))) { log_message('error', 'File already exists in the database' . $requestfilename); //$requestfilename = ""; //the above line is commented due to the fact that same file can exist in the database //for different po } else { $file->move($path, $requestfilename); } } else { $requestfilename = ""; } } $POList = array('PONO' => $newPONO, 'SupplierID' => $SupplierID, 'TotalOrderValue' => $TotalOrder, 'PODate' => $PODate, 'Status' => $POStatus, 'PORange' => $PoRange, 'ServiceDescription' => $SpcialInstruction, 'CreatedBy' => $CreateBy, 'DeliveryAddress' => $DeliveryAddr, 'Import_DispatchDetails' => $Dispatch, 'CreatedDate' => $createddt, 'DeliverySchedule' => $DeliverySchedule, 'DeliveryOption' => $DeliveryOption, 'ExchangeRate' => $Exchangerate, 'ExchangeRateCalculatedon' => $ExchangeRateCalculatedon, 'CurrencyType' => $CurrencyType, 'PaymentTerms' => $PaymentTerms, 'POType' => $POType, 'Import_PlaceofOrgin' => $Palaceoforigin, 'PaymentOtherDescription' => $OtherPayment, 'Mode_Of_Shipment' => $Shipmentmode, 'Supplier_Reference' => $SupplierRef, 'Supplier_Offer_No' => $SupplierOffer, 'Other_Reference' => $otherRef, 'Fincap' => $finCap, 'InsuranceStatus' => $Insurance, 'InsuranceNumber' => $InsuranceNumber, 'POSubType' => $importoption, 'IsQualityChkReqired' => $Qualitycheck, 'BudgetType' => $BudgetType, 'IsOpenOrder' => $IsOpenOrder); $POList['POFile'] = $requestfilename; $POMaster = $this->purchaseorder_model->addPOMaster($POList, $POType, $importoption); $PONO = ''; if (count($POMaster) > 0) { $PONO = $POMaster[0]['PONO']; } else { throw new \Exception('Error occurred while creating PO Master'); } $LineItemStatus = REQITEM_NEW; for ($i = 1; $i <= $RowCount; $i++) { $MaterialCode = $this->request->getPost('materialCode' . $i); $Quantity = $this->request->getPost('quantity' . $i); $Reqnumber = $this->request->getPost('Reqnumber' . $i); $itemRate = $this->request->getPost('itemRate' . $i); $BasicPriceinmton = $this->request->getPost('BasicPriceinUS' . $i); $Productprice = $this->request->getPost('BasicAmt' . $i); $LandingCharge = $this->request->getPost('LandingChargee' . $i); $AfterLandingCharge = $this->request->getPost('AfterLandingChargee' . $i); $CustomDuty = $this->request->getPost('Customduty' . $i); $AfterCustomDuty = $this->request->getPost('AfterCustomduty' . $i); $CustomEd = $this->request->getPost('CustomEDcess' . $i); $AfterCustomEd = $this->request->getPost('AfterCustomEDcess' . $i); $CustomSH = $this->request->getPost('CustomSHcess' . $i); $AfterCustomSH = $this->request->getPost('AfterCustomSHcess' . $i); $Grossdutypayable = $this->request->getPost('Grossdutypayable' . $i); $CustomDutyExpensesPerKG = $this->request->getPost('CustomDutyExpenses' . $i); $QuantityKG = $this->request->getPost('PurQuantity' . $i); $Totalvalueitem = $this->request->getPost('TotalExp' . $i); $CostCenter = $this->request->getPost('costCode' . $i); $AssessableValue = $this->request->getPost('AfterAssessable' . $i); $Subtotal = $this->request->getPost('Subtotal' . $i); $Igst = $this->request->getPost('Igst' . $i); $AfterIgst = $this->request->getPost('AfterIgst' . $i); $Dutyimpact = $this->request->getPost('Dutyimpact' . $i); $Clearingcharge = $this->request->getPost('ClearingCharges' . $i); $Nettvalue = $this->request->getPost('Nett' . $i); $FreightType = $this->request->getPost('FreightType' . $i); $nooftrip = $this->request->getPost('NoofTrip' . $i); $Freightrate = $this->request->getPost('FreightRate' . $i); $Freightamount = $this->request->getPost('AfterFreightRate' . $i); $specialinstruction = $this->request->getPost('Addinstruction' . $i); $per = $this->request->getPost('Per' . $i); $LineitemAuditorNotes = $this->request->getPost('LineItemNoteForAuditor' . $i); $LineitemAuditorNotes = ($LineitemAuditorNotes === null || $LineitemAuditorNotes === '') ? '-' : $LineitemAuditorNotes; if($itemRate != 0){ $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate); } $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") { $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'CostCenterCode' => $CostCenter, 'Per' => $per, 'ServiceMaterialDescription' => $specialinstruction,'LineitemAuditorNotes' => $LineitemAuditorNotes); $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); $LineItemNo = ''; if (count($POLineItem) > 0) { $LineItemNo = $POLineItem[0]['LineItemNo']; } else { throw new \Exception('Error occurred while creating PO Line Item'); } if (trim((string)$POType) == IMPORT) { $ImportTaxList = array('LineItemNo' => $LineItemNo, 'BasicPriceInMTon' => $BasicPriceinmton, 'ProductPrice' => $Productprice, 'LandingCharge' => $LandingCharge, 'AfterLandingCharge' => $AfterLandingCharge, 'CustomDuty' => $CustomDuty, 'AfterCustomDuty' => $AfterCustomDuty, 'CustomEdCess' => $CustomEd, 'CustomSHCess' => $CustomSH, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'Grossdutypayable' => $Grossdutypayable, 'CustomDutyExpensesPerKG' => $CustomDutyExpensesPerKG, 'QuantityKG' => $QuantityKG, 'AfterCustomSHCess' => $AfterCustomSH, 'AfterCustomEdCess' => $AfterCustomEd, 'TotalValue' => $Totalvalueitem, 'FreightType' => $FreightType, 'NoOfTrip' => $nooftrip, 'FreightValue' => $Freightrate, 'AfterFreightValue' => $Freightamount, 'AssessableValue' => $AssessableValue, 'SubTotal' => $Subtotal, 'IGST' => $Igst, 'AfterIGST' => $AfterIgst, 'DutyImpact' => $Dutyimpact, 'ClearingCharge' => $Clearingcharge, 'NetValue' => $Nettvalue); $ImportList = $this->purchaseorder_model->addImportTax($ImportTaxList); if (!$ImportList) { throw new \Exception('Error occurred while creating Import Tax'); } } } } $message = "Import Purchase Order Created Successfully!\nPO Number Is: " . $PONO; if($POStatus == 'ST014'){ $message = "Import Purchase Order Saved as Draft!\nPO Number Is: " . $PONO; } else if($POStatus == 'ST026'){ $message = "Import Purchase Order Approved Successfully!\nPO Number Is: " . $PONO; } echo $message; } catch (\Exception $e) { log_message('error', 'Exception occurred: ' . $e->getMessage()); echo 'An error occurred while creating the purchase order. Please try again.'; } } function EditImportPurchaseOrder() { // print_r($this->request->getPost());die; $PONO = $this->request->getPost('txtPONO'); $POdt = ''; $createddt = ''; $PODate = get_date_time_format($POdt); $SupplierID = $this->request->getPost('drpSupplier'); $newsup = (string)$this->request->getPost('newsup'); // $newSupId = split("[ - ]+", $newsup); $newSupId = preg_split('[-]', $newsup); /*-----------------------------------*/ $b4supplier = $this->request->getPost('b4supplier'); $b4date = $this->request->getPost('b4podate'); $b4podate = get_date_time_format($b4date); /*-----------------------------------*/ $DeliveryAddr = $this->request->getPost('DeliveryAddr'); $dt = $this->request->getPost('Deliverydt'); $Deliverydt = get_date_time_format($dt); $POType = $this->request->getPost('POType'); //$PoRange = $this->request->getPost('txtPoRange'); //$DeliveryOption = $this->request->getPost('DateRange'); $Exchangerate = $this->request->getPost('ExchangeRate'); $Edt = $this->request->getPost('Exchangerateon'); $ExchangeRateCalculatedon = get_date_time_format($Edt); // $ExchangeRateCalculatedon=$this->request->getPost('Exchangerateon'); $CurrencyType = $this->request->getPost('currencytype'); $DeliveryOption = $this->request->getPost('DateRange'); //echo $DeliveryOption; //die(); $DeliverySchedule = ''; $Dispatch = ''; if ($DeliveryOption == 1) { $Dispatch = ''; $DeliverySchedule = $this->request->getPost('Scheduleby'); } else { $Dispatch = $this->request->getPost('Dispatch'); $DeliverySchedule = ''; } $SpcialInstruction = $this->request->getPost('txtSpcialInstruction'); //$TotalOrder = $this->request->getPost('txtToatlOrder'); $TotalOrder = $this->request->getPost('txttot'); // echo $TotalOrder; //die(); $POStatus = $this->request->getPost('txtStatus'); $BudgetType = $this->request->getPost('Budget'); $CreateBy = $this->session->get('userId'); $RowCount = $this->request->getPost('txtRowCount'); $DeletedRow = $this->request->getPost('txtDeletedRow'); $comma_separated = ($DeletedRow !== null && is_string($DeletedRow)) ? explode(':', $DeletedRow) : []; $updateddt = get_current_date_time(); $PaymentTerms = $this->request->getPost('PaymentTerms'); $OtherPayment = $this->request->getPost('Otherpayment'); $Palaceoforigin = $this->request->getPost('PlaceOforigin'); // $Payableat=$this->request->getPost('PayableAT'); $Shipmentmode = $this->request->getPost('editmodeofshipment'); $SupplierRef = $this->request->getPost('editsupplierreference'); $SupplierOffer = $this->request->getPost('editsupplierofferno'); $otherRef = $this->request->getPost('editotherreference'); $finCap = ""; //$this->request->getPost('editfincap'); $importoption = $this->request->getPost('Importoption'); // echo $importoption; // die(); $Insurance = $this->request->getPost('Insurance'); //echo $Insurance; if ($Insurance == 'YES') { $InsuranceNumber = $this->request->getPost('InsuranceNumber'); $insurestatus = '1'; } else { $InsuranceNumber = ''; $insurestatus = '0'; } // PO Master // PO Master // $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrder,'PODate'=>$PODate,'Status'=>$POStatus,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$updateddt,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'ExchangeRate'=>$Exchangerate,'ExchangeRateCalculatedon'=>$ExchangeRateCalculatedon,'CurrencyType'=>$CurrencyType,'PaymentTerms'=>$PaymentTerms); $Qualitycheck = 1; $POList = array('SupplierID' => $SupplierID, 'TotalOrderValue' => $TotalOrder, 'PODate' => $PODate, 'Status' => $POStatus, 'ServiceDescription' => $SpcialInstruction, 'CreatedBy' => $CreateBy, 'DeliveryAddress' => $DeliveryAddr, 'Import_DispatchDetails' => $Dispatch, 'DeliverySchedule' => $DeliverySchedule, 'DeliveryOption' => $DeliveryOption, 'ExchangeRate' => $Exchangerate, 'ExchangeRateCalculatedon' => $ExchangeRateCalculatedon, 'CurrencyType' => $CurrencyType, 'PaymentTerms' => $PaymentTerms, 'POType' => $POType, 'Import_PlaceofOrgin' => $Palaceoforigin, 'PaymentOtherDescription' => $OtherPayment, 'Mode_Of_Shipment' => $Shipmentmode, 'Supplier_Reference' => $SupplierRef, 'Supplier_Offer_No' => $SupplierOffer, 'Other_Reference' => $otherRef, 'Fincap' => $finCap, 'InsuranceStatus' => $insurestatus, 'InsuranceNumber' => $InsuranceNumber, 'POSubType' => $importoption, 'IsQualityChkReqired' => $Qualitycheck, 'BudgetType' => $BudgetType); if ($POStatus == 'ST026') { $POList['ApprovedOn'] = get_current_date_time(); $POList['ApprovedBy'] = $this->session->get('userId'); $POList['ReleasedOn'] = get_current_date_time(); $POList['ReleasedBy'] = $this->session->get('userId'); } $file = $this->request->getFile('POFile'); $requestfilename = NULL; if (!empty($file)) { if ($file && $file->isValid() && !$file->hasMoved()) { $requestfilename = $file->getName(); $path = ROOTPATH . 'public/uploads/POfiles/'; if (!is_dir($path)) { mkdir($path, 0777, true); } if (!empty($this->purchaseorder_model->isFileExists($requestfilename)) && file_exists($path .$requestfilename)) { log_message('error', 'File already exists in the database' . $requestfilename); $POList['POFile'] = $requestfilename; } else { $file->move($path, $requestfilename); $POList['POFile'] = $requestfilename; } } } // echo $PONO; // echo $TotalOrder; $POMaster = $this->purchaseorder_model->updatePOMaster($PONO, $POList); //echo "sdasds"; $LineItemStatus = REQITEM_NEW; //echo $LineItemStatus; if ($PODate == $b4podate) { $logpo = array('PONO' => $PONO, 'LineItemNos' => '-', 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4podate, 'newValue' => $PODate, 'entity' => 'PO DateChanged'); $this->purchaseorder_model->insertlogpo($logpo); } if (!empty($newSupId[0])) { if ($newSupId[0] != $b4supplier) { $logpo = array('PONO' => $PONO, 'LineItemNos' => '-', 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4supplier, 'newValue' => $newsup, 'entity' => 'Supplier Changed'); $this->purchaseorder_model->insertlogpo($logpo); } } // echo $RowCount; // die; for ($i = 1; $i <= $RowCount; $i++) { $MaterialCode = $this->request->getPost('materialCode' . $i); $Quantity = $this->request->getPost('quantity' . $i); //echo $Quantity; $Reqnumber = $this->request->getPost('Reqnumber' . $i); $itemRate = $this->request->getPost('itemRate' . $i); /*-----------------------------------*/ $b4qty = $this->request->getPost('b4qty' . $i); $b4rate = $this->request->getPost('b4rate' . $i); /*-----------------------------------*/ //die(); //$Exchangerate = $this->request->getPost('Exchangerate'.$i); $BasicPriceinmton = $this->request->getPost('BasicPriceInMTon' . $i); $Productprice = $this->request->getPost('TotalValue' . $i); //echo $ProductPrice; //die(); $LandingCharge = $this->request->getPost('LandingCharge' . $i); $AfterLandingCharge = $this->request->getPost('AfterLandingCharge' . $i); $HighSeas = $this->request->getPost('HighSeasSalesCharge' . $i); $AfterHighSeas = $this->request->getPost('AfterHighSeasSalesCharge' . $i); $CustomDuty = $this->request->getPost('CustomDuty' . $i); $AfterCustomDuty = $this->request->getPost('AfterCustomDuty' . $i); $ExciseDuty = $this->request->getPost('ExciseDuty' . $i); $AfterExciseDuty = $this->request->getPost('AfterExciseDuty' . $i); $ExciseDutyEd = $this->request->getPost('ExciseDutyEdCess' . $i); $AfterExciseDutyEd = $this->request->getPost('AfterExciseDutyEdCess' . $i); $ExciseDutySH = $this->request->getPost('ExciseDutySHCess' . $i); $AfterExciseDutySH = $this->request->getPost('AfterExciseDutySHCess' . $i); $CustomEd = $this->request->getPost('CustomEdCess' . $i); $AfterCustomEd = $this->request->getPost('AfterCustomEdCess1' . $i); $CustomSH = $this->request->getPost('CustomSHCess' . $i); $AfterCustomSH = $this->request->getPost('AfterCustomSHCess' . $i); $AddAdtional = $this->request->getPost('AddlExciseDuty' . $i); $AfterAddAdtional = $this->request->getPost('AfterAddlExciseDuty' . $i); $Grossdutypayable = $this->request->getPost('Grossdutypayable' . $i); //echo $Grossdutypayable; //die(); $AvailableModvat = $this->request->getPost('AvailableModvat' . $i); $Grossexpensesduetocustomduty = $this->request->getPost('Grossexpensesduetocustomduty' . $i); $purchaseratePerKG = $this->request->getPost('purchaseratePerKG' . $i); $CustomDutyExpensesPerKG = $this->request->getPost('CustomDutyExpensesPerKG' . $i); $RMCIncludingCustomersPerKG = $this->request->getPost('RMCIncludingCustomersPerKG' . $i); $QuantityKG = $this->request->getPost('QuantityKG' . $i); $POLineItemNo = $this->request->getPost('LineItemNo' . $i); $CostCenter = $this->request->getPost('costCode' . $i); //$ExciseDutySH = $this->request->getPost('ExcisedutySH'.$i); $Totalvalueitem = $this->request->getPost('TotalValue' . $i); $FreightType = $this->request->getPost('FreightType' . $i); $Nosoftrip = $this->request->getPost('NoOfTrip' . $i); $FreightRate = $this->request->getPost('FreightValue' . $i); $FreightAmount = $this->request->getPost('AfterFreightValue' . $i); $AssessableValue = $this->request->getPost('AssessableValue' . $i); //echo $AssessableValue; $Subtotal = $this->request->getPost('SubTotal' . $i); $Igst = $this->request->getPost('IGST' . $i); $AfterIgst = $this->request->getPost('AfterIGST' . $i); $Dutyimpact = $this->request->getPost('DutyImpact' . $i); $Clearingcharge = $this->request->getPost('ClearingCharge' . $i); $Nettvalue = $this->request->getPost('NetValue' . $i); //echo $FreightAmount; $specialinstruction = $this->request->getPost('Addinstruction' . $i); $per = $this->request->getPost('Per' . $i); $LineitemAuditorNotes = $this->request->getPost('LineItemNoteForAuditor' . $i); $LineitemAuditorNotes = ($LineitemAuditorNotes === null || $LineitemAuditorNotes === '') ? '-' : $LineitemAuditorNotes; // echo $per; //die(); $LineItemNo = ''; /*---------start---------------------*/ // if(($PODate != $b4podate )||( $SupplierID != $b4supplier) || ($itemRate !=$b4rate) || // ($Quantity != $b4qty )) // { // $logpo =array('UpdateBy'=>$CreateBy,'UpdatedOn'=>$updateddt); // $this->purchaseorder_model->updatelogpo($MaterialCode,$POLineItemNo,$logpo); // } if ($Quantity != $b4qty) { $logpo = array('PONO' => $PONO, 'LineItemNos' => $POLineItemNo, 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4qty, 'newValue' => $Quantity, 'entity' => 'Quantity Changed'); $this->purchaseorder_model->insertlogpo($logpo); } if ($itemRate != $b4rate) { $logpo = array('PONO' => $PONO, 'LineItemNos' => $POLineItemNo, 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4rate, 'newValue' => $itemRate, 'entity' => 'Rate Changed'); $this->purchaseorder_model->insertlogpo($logpo); } /*----------end--------------------*/ //echo "sdsfsd"; //die(); $currencytypeID = $this->request->getPost('currencytype'); if($itemRate != 0){ $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate); } $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; } } } /*------------------------------*/ $this->requistion_model = new requistion_model(); $RetItemNo = $this->requistion_model->getItemNumber($Reqnumber, $MaterialCode); $ItemNo = ''; if (count($RetItemNo) > 0) { $ItemNo = $RetItemNo[0]['ItemNo']; } $getOldReqDetailsQuantity = $this->purchaseorder_model->getOldReqDetailsQuantity($Reqnumber, $MaterialCode,$ItemNo); if($Quantity == $getOldReqDetailsQuantity){ $ReqDetails = array('Quantity' => $Quantity, 'UpdatedBy' => $CreateBy, 'UpdatedOn' => $updateddt); $this->purchaseorder_model->updateReqDetails($Reqnumber, $MaterialCode, $ReqDetails); } /*------------------------------*/ if ($SkipInsert == "False") { if (strlen((string)$POLineItemNo) == 0) { $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'CostCenterCode' => $CostCenter, 'Per' => $per, 'ServiceMaterialDescription' => $specialinstruction); $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); if (count($POLineItem) > 0) { $LineItemNo = $POLineItem[0]['LineItemNo']; } } else { $LineItemNo = $POLineItemNo; //echo $LineItemNo; //die(); $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'UpdatedOn' => $updateddt, 'CostCenterCode' => $CostCenter, 'Per' => $per, 'ServiceMaterialDescription' => $specialinstruction,'LineitemAuditorNotes'=>$LineitemAuditorNotes); $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO, $POLineItemNo, $POLineItemList); } $isExists = $this->purchaseorder_model->LineItemExistsinImportTax($LineItemNo); // print_r($isExists); // die(); if (!is_array($isExists)) { $isExists = []; } if (count($isExists) == 0) { // print_r(count($isExists)); // echo $isExists; // die(); $ImportTaxList = array('LineItemNo' => $LineItemNo, 'BasicPriceInMTon' => $BasicPriceinmton, 'ProductPrice' => $Productprice, 'LandingCharge' => $LandingCharge, 'AfterLandingCharge' => $AfterLandingCharge, 'CustomDuty' => $CustomDuty, 'AfterCustomDuty' => $AfterCustomDuty, 'CustomEdCess' => $CustomEd, 'CustomSHCess' => $CustomSH, 'CreatedBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'Grossdutypayable' => $Grossdutypayable, 'CustomDutyExpensesPerKG' => $CustomDutyExpensesPerKG, 'QuantityKG' => $QuantityKG, 'AfterCustomSHCess' => $AfterCustomSH, 'AfterCustomEdCess' => $AfterCustomEd, 'TotalValue' => $Totalvalueitem, 'FreightType' => $FreightType, 'NoOfTrip' => $Nosoftrip, 'FreightValue' => $FreightRate, 'AfterFreightValue' => $FreightAmount, 'AssessableValue' => $AssessableValue, 'SubTotal' => $Subtotal, 'IGST' => $Igst, 'AfterIGST' => $AfterIgst, 'DutyImpact' => $Dutyimpact, 'ClearingCharge' => $Clearingcharge, 'NetValue' => $Nettvalue); //print_r($ImportTaxList); //die(); $ImportList = $this->purchaseorder_model->addImportTax($ImportTaxList); } else { //echo "xxcx"; //die(); $ImportTaxList = array('LineItemNo' => $LineItemNo, 'BasicPriceInMTon' => $BasicPriceinmton, 'ProductPrice' => $Productprice, 'LandingCharge' => $LandingCharge, 'AfterLandingCharge' => $AfterLandingCharge, 'CustomDuty' => $CustomDuty, 'AfterCustomDuty' => $AfterCustomDuty, 'CustomEdCess' => $CustomEd, 'CustomSHCess' => $CustomSH, 'CreatedBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'Grossdutypayable' => $Grossdutypayable, 'CustomDutyExpensesPerKG' => $CustomDutyExpensesPerKG, 'QuantityKG' => $QuantityKG, 'AfterCustomSHCess' => $AfterCustomSH, 'AfterCustomEdCess' => $AfterCustomEd, 'TotalValue' => $Totalvalueitem, 'FreightType' => $FreightType, 'NoOfTrip' => $Nosoftrip, 'FreightValue' => $FreightRate, 'AfterFreightValue' => $FreightAmount, 'AssessableValue' => $AssessableValue, 'SubTotal' => $Subtotal, 'IGST' => $Igst, 'AfterIGST' => $AfterIgst, 'DutyImpact' => $Dutyimpact, 'ClearingCharge' => $Clearingcharge, 'NetValue' => $Nettvalue); //echo "cxvc "; //die(); //print_r($ImportTaxList); //die(); $this->purchaseorder_model->updateImportTax($LineItemNo, $ImportTaxList); } } } $message = "Import Purchase Order Updated Successfully!\nPO Number Is: " . $PONO; if($POStatus == 'ST014'){ $message = "Import Purchase Order Saved as Draft!\nPO Number Is: " . $PONO; } else if($POStatus == 'ST026'){ $message = "Import Purchase Order Approved Successfully!\nPO Number Is: " . $PONO; } echo $message; } /* All Function following This command for FINANCE TEAM PO APPROVAL SCREEN*/ function poapproval() { // $q = "APPROVAL"; // $this->global['pageTitle'] = 'Purchase Order Approval'; // // $data['Status']= $this->purchaseorder_model->getStatus(); // $userID = $this->session->get('userId'); // //print_r($data['Status']);echo "CON"; // $data['AppList'] = $this->purchaseorder_model->getPOList($q); // $this->loadViews("poapproval_view", $this->global, $data, NULL); } function ApprovePO() { $StatusCode = Trim($_POST['SCode']); $PONO = Trim($_POST['PONO']); $Remarks = Trim($_POST['NewRemarks']); $ApprovedBy = $this->session->get('userId'); $ApprovedDate = get_current_date_time(); if ($StatusCode == 'ST025') { $store = array('Status' => $StatusCode, 'ApprovedOn' => $ApprovedDate, 'Approvedby' => $ApprovedBy, 'Remarks' => $Remarks); $this->purchaseorder_model->UpdatePO($store, $PONO); // echo "Successfully Approve the Purchase Order No: " . $PONO; echo "The Purchase Order No: " . $PONO . " is Approved"; } else { $store = array('Status' => $StatusCode, 'OnHoldOn' => $ApprovedDate, 'OnHoldBy' => $ApprovedBy, 'Remarks' => $Remarks); $this->purchaseorder_model->UpdatePO($store, $PONO); echo "The Purchase Order No: " . $PONO . " is On Hold"; } } /* FOLLOWING CODES FOR PO RELEASE SCREEN FUNCTIONALITIES*/ function porelease() { $fromDate=''; $toDate=''; if ($this->request->getMethod() === 'GET') { $toDate = date('Y-m-d'); $fromDate = date('Y-m-d', strtotime('-90 days', strtotime($toDate))); } elseif ($this->request->getMethod() === 'POST') { $fromDate = $this->request->getPost('fromDate'); $toDate = $this->request->getPost('toDate'); $fromDate = date('Y-m-d', strtotime($fromDate)); $toDate = date('Y-m-d', strtotime($toDate)); } // dd($fromDate,$toDate); $q = "RELEASE"; $this->global['pageTitle'] = 'Purchase Order Release'; // $data['Status']= $this->purchaseorder_model->getStatus(); $userID = $this->session->get('userId'); //print_r($data['Status']);echo "CON"; $appList = $this->purchaseorder_model->getPOList($q , $fromDate , $toDate); $filteredAppList = array_filter($appList, function ($item) { return $item->Status !== PO_DRAFT; }); $data['AppList'] = $filteredAppList; $data['fromDate'] = date('d-m-Y', strtotime($fromDate)); $data['toDate'] = date('d-m-Y', strtotime($toDate)); $this->loadViews("porelease_view", $this->global, $data, NULL); } function ReleasePO() { $StatusCode = Trim($_POST['SCode']); $PONO = Trim($_POST['PONO']); $Remarks = Trim($_POST['NewRemarks']); $ReleasedBy = $this->session->get('userId'); $ReleasedDate = get_current_date_time(); if ($StatusCode == 'ST026') { $store = array('Status' => $StatusCode, 'ReleasedOn' => $ReleasedDate, 'ReleasedBy' => $ReleasedBy, 'Remarks' => $Remarks); $this->purchaseorder_model->UpdatePO($store, $PONO); // echo "Successfully Released the Purchase Order No: " . $PONO; echo "The Purchase Order No: " . $PONO . " is Approved"; } else { $store = array('Status' => $StatusCode, 'OnHoldOn' => $ReleasedDate, 'OnHoldBy' => $ReleasedBy, 'Remarks' => $Remarks); $this->purchaseorder_model->UpdatePO($store, $PONO); echo "The Purchase Order No: " . $PONO . " is On Hold"; } } /* Add capital Po*/ function addNewCapitalPurchaseOrder() { helper('numberseries'); try { $POdt = $this->request->getPost('PODate'); $PODate = get_date_time_format($POdt); $SupplierID = $this->request->getPost('drpSupplier'); $DeliveryAddr = $this->request->getPost('DeliveryAddr'); $dt = $this->request->getPost('Deliverydate'); $POType = $this->request->getPost('POType'); $PoRange = $this->request->getPost('txtPoRange'); /* $DeliveryOption = $this->request->getPost('DateRange'); if($DeliveryOption==1){ $Deliverydt = ''; $DeliverySchedule = $this->request->getPost('Scheduleby'); } else{ $Deliverydt = get_date_time_format($dt); $DeliverySchedule = ''; } */ $DeliveryOption = $this->request->getPost('DateRange'); $DeliverySchedule = ''; $Dispatch = ''; $Deliverydt = ''; if ($DeliveryOption == 1) { $Dispatch = ''; $Deliverydt = ''; $DeliverySchedule = $this->request->getPost('Scheduleby'); } else if ($DeliveryOption == 2) { $Deliverydt = ''; $DeliverySchedule = ''; $Dispatch = $this->request->getPost('Dispatch'); } else { $Dispatch = ''; $DeliverySchedule = ''; $Deliverydt = get_date_time_format($dt); } $capitalType = $this->request->getPost('capitalType'); if ($capitalType == 'Domestic') { $CapitalRange = '1'; $ExchangeRateOn = ''; $ExchangeRate = ''; $Palaceoforigin = ''; } else { $CapitalRange = '0'; $ExchangeRateBeforeFormat = $this->request->getPost('Exchangerateon'); $ExchangeRateOn = get_date_time_format($ExchangeRateBeforeFormat); $ExchangeRate = $this->request->getPost('ExchangeRt'); $Palaceoforigin = $this->request->getPost('PlaceOforigin'); } $ModeOfShipment = $this->request->getPost('addmodeofshipment'); $SupplierReference = $this->request->getPost('addsupplierreference'); $SuppliersOfferNo = $this->request->getPost('addsupplierofferno'); $OtherReferences = $this->request->getPost('addotherreference'); $Fincap = ""; //$this->request->getPost('addfincap'); $InsuranceOptions = $this->request->getPost('insuranceStatus'); $InsuranceNumber = $this->request->getPost('InsuranceNumber'); $ServiceTypeOptions = $this->request->getPost('PoTypeOptions'); $PaymentMethod = $this->request->getPost('PaymentMethod'); $OtherPayment = $this->request->getPost('Otherpayment'); $BudgetType = $this->request->getPost('Budget'); $SpcialInstruction = $this->request->getPost('txtSpcialInstruction'); $TotalOrder = $this->request->getPost('CapitalToatlOrder'); $POStatus = $this->request->getPost('txtStatus'); $CreateBy = $this->session->get('userId'); $RowCount = $this->request->getPost('txtRowCount'); $DeletedRow = $this->request->getPost('txtDeletedRow'); $comma_separated = ($DeletedRow !== null && is_string($DeletedRow)) ? explode(':', $DeletedRow) : []; $createddt = get_current_date_time(); $currencytypeID = $this->request->getPost('currencytype'); $Qualitycheck = 1; $IsOpenOrder = ($this->request->getPost('IsOpenOrder') !== null && !empty($this->request->getPost('IsOpenOrder')) && $this->request->getPost('IsOpenOrder') === '1') ? $this->request->getPost('IsOpenOrder') : null; $lastPONO = $this->purchaseorder_model->lastPONO(); $newPONO = generate_po_number($lastPONO); $file = $this->request->getFile('POFile'); $requestfilename = NULL; if (!empty($file)) { if ($file->isValid() && !$file->hasMoved()) { $requestfilename = $file->getName(); $path = ROOTPATH . 'public/uploads/POfiles/'; if (!is_dir($path)) { mkdir($path, 0777, true); } if (!empty($this->purchaseorder_model->isFileExists($requestfilename))) { log_message('error', 'File already exists in the database' . $requestfilename); //$requestfilename = ""; //the above line is commented due to the fact that same file can exist in the database //for different po } else { $file->move($path, $requestfilename); } } else { $requestfilename = ""; } } $POList = array('PONO' => $newPONO, 'SupplierID' => $SupplierID, 'TotalOrderValue' => $TotalOrder, 'PODate' => $PODate, 'Status' => $POStatus, 'PORange' => $PoRange, 'ExchangeRateCalculatedon' => $ExchangeRateOn, 'ExchangeRate' => $ExchangeRate, 'PaymentTerms' => $PaymentMethod, 'ServiceDescription' => $SpcialInstruction, 'CreatedBy' => $CreateBy, 'DeliveryAddress' => $DeliveryAddr, 'CreatedDate' => $createddt, 'DeliverySchedule' => $DeliverySchedule, 'DeliveryOption' => $DeliveryOption, 'CapitalRange' => $CapitalRange, 'POType' => $POType, 'CurrencyType' => $currencytypeID, 'DeliverySchedule' => $DeliverySchedule, 'Import_PlaceofOrgin' => $Palaceoforigin, 'Import_DispatchDetails' => $Dispatch, 'DeliveryDate' => $Deliverydt, 'PaymentOtherDescription' => $OtherPayment, 'Supplier_Reference' => $SupplierReference, 'Mode_Of_Shipment' => $ModeOfShipment, 'Supplier_Offer_No' => $SuppliersOfferNo, 'Other_Reference' => $OtherReferences, 'Fincap' => $Fincap, 'InsuranceStatus' => $InsuranceOptions, 'InsuranceNumber' => $InsuranceNumber, 'POSubType' => $ServiceTypeOptions, 'IsQualityChkReqired' => $Qualitycheck, 'BudgetType' => $BudgetType, 'IsOpenOrder' => $IsOpenOrder); $POList['POFile'] = $requestfilename; // $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrder,'PODate'=>$PODate,'Status'=>$POStatus,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'Import_DispatchDetails'=>$Dispatch,'CreatedDate'=>$createddt,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'ExchangeRate'=>$Exchangerate,'ExchangeRateCalculatedon'=>$ExchangeRateCalculatedon,'CurrencyType'=>$CurrencyType,'PaymentTerms'=>$PaymentTerms,'POType'=>$POType,'Import_PlaceofOrgin'=>$Palaceoforigin); $POMaster = $this->purchaseorder_model->addPOMaster($POList, $POType, $ServiceTypeOptions); $PONO = ''; if (count($POMaster) > 0) { $PONO = $POMaster[0]['PONO']; } else { throw new \Exception('Error occurred while creating PO Master'); } $LineItemStatus = REQITEM_NEW; for ($i = 1; $i <= $RowCount; $i++) { $MaterialCode = $this->request->getPost('materialCode' . $i); $Quantity = $this->request->getPost('quantity' . $i); $Reqnumber = $this->request->getPost('Reqnumber' . $i); $itemRate = $this->request->getPost('itemRate' . $i); $BasicPriceinmton = $this->request->getPost('rateInUs' . $i); $Productprice = $this->request->getPost('basicvalInINR' . $i); $LandingCharge = $this->request->getPost('beforeLanding' . $i); $AfterLandingCharge = $this->request->getPost('landingCharge' . $i); $CustomDuty = $this->request->getPost('beforeCustomDuty' . $i); $AfterCustomDuty = $this->request->getPost('CustomDuty' . $i); $CustomEd = $this->request->getPost('beforeCustomEDCess' . $i); $AfterCustomEd = $this->request->getPost('CustomEDCess' . $i); $CustomSH = $this->request->getPost('beforeCustomSHCess' . $i); $AfterCustomSH = $this->request->getPost('CustomSHCess' . $i); $Grossdutypayable = $this->request->getPost('GrossDutyPayable' . $i); $QuantityKG = $this->request->getPost('PurQuantity' . $i); $FreightType = $this->request->getPost('FreightType' . $i); $FreightValue = $this->request->getPost('FreightVal' . $i); $AfterFreightValue = $this->request->getPost('AfterFreightVal' . $i); $NOOfTrip = $this->request->getPost('NoOfTrip' . $i); $Totalvalueitem = $this->request->getPost('PerKgExpense' . $i); //echo $BasicPriceinmton; $CostCenter = $this->request->getPost('CPCostCode' . $i); $TotalOrderValue = $this->request->getPost('basicvalInINR' . $i); $Cgst = $this->request->getPost('Cgst' . $i); $Sgst = $this->request->getPost('Sgst' . $i); $Igst = $this->request->getPost('Igst' . $i); $AfterCgst = $this->request->getPost('AfterCgst' . $i); $AfterSgst = $this->request->getPost('AfterSgst' . $i); $AfterIgst = $this->request->getPost('AfterIgst' . $i); $DiscountType = $this->request->getPost('DisType' . $i); $DiscountValue = $this->request->getPost('DisVal' . $i); $AfterDiscount = $this->request->getPost('AfterDisVal' . $i); $OtherAmt = $this->request->getPost('OtherAmt' . $i); $FreightTypeloc = $this->request->getPost('FreightTypeloc' . $i); $FreightNoofTriploc = $this->request->getPost('NoofTriploc' . $i); $Freightrateloc = $this->request->getPost('FreightRateloc' . $i); $FreightAmountloc = $this->request->getPost('AfterFreightRateloc' . $i); $AssessableValue = $this->request->getPost('AfterAssessable' . $i); $SubTotal = $this->request->getPost('Subtotal' . $i); $IGST = $this->request->getPost('IgstInt' . $i); $AfterIGST = $this->request->getPost('AfterIgstInt' . $i); $DutyImpact = $this->request->getPost('Dutyimpact' . $i); $NetValue = $this->request->getPost('Nett' . $i); $ClearingCharge = $this->request->getPost('ClearingCharges' . $i); $CustomDutyExpensesPerKG = $this->request->getPost('CustomDutyExpenses' . $i); $TaxtotalOrderValue = (float)$itemRate * (float)$Quantity + (float)$OtherAmt + (float)$AfterCgst + (float)$AfterSgst + (float)$AfterIgst - (float)$AfterDiscount; $CapitalItemDescription = $this->request->getPost('CapitalItemDescrition' . $i); $Per = $this->request->getPost('per' . $i); $LineitemAuditorNotes = $this->request->getPost('LineItemNoteForAuditor' . $i); $LineitemAuditorNotes = ($LineitemAuditorNotes === null || $LineitemAuditorNotes === '') ? '-' : $LineitemAuditorNotes; if($itemRate != 0){ $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate); } $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") { $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'CostCenterCode' => $CostCenter, 'ServiceMaterialDescription' => $CapitalItemDescription, 'Per' => $Per,'LineitemAuditorNotes'=>$LineitemAuditorNotes); $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); $LineItemNo = ''; if (count($POLineItem) > 0) { $LineItemNo = $POLineItem[0]['LineItemNo']; } else { throw new \Exception('Error occurred while creating PO Line Item'); } /* --------------------------------------------*/ // $logpo =array('PONO'=>$PONO,'Date'=>$PODate,'POType'=>$POType,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=> $itemRate,'SupplierID'=>$SupplierID,'LineItemNos'=>$LineItemNo); // $this->purchaseorder_model->newlogpo($logpo); /* --------------------------------------------*/ if (trim((string)$POType) == CAPITAL) { if ($CapitalRange == '1') { $ServiceTaxList = array('LineItemNo' => $LineItemNo, 'CGST' => $Cgst, 'After_CGST' => $AfterCgst, 'SGST' => $Sgst, 'After_SGST' => $AfterSgst, 'IGST' => $Igst, 'After_IGST' => $AfterIgst, 'otherallowance' => $OtherAmt, 'TotalValue' => $TaxtotalOrderValue, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'discount' => $DiscountType, 'discountval' => $DiscountValue, 'Afterdiscountval' => $AfterDiscount, 'FreightType' => $FreightTypeloc, 'NoOfTrip' => $FreightNoofTriploc, 'FreightValue' => $Freightrateloc, 'AfterFreightValue' => $FreightAmountloc); $ServiceTax = $this->purchaseorder_model->addServiceTax($ServiceTaxList); if (!$ServiceTax) { throw new \Exception('Error occurred while creating Capital national Tax'); } } if ($CapitalRange == '0') { $ImportTaxList = array('LineItemNo' => $LineItemNo, 'BasicPriceInMTon' => $BasicPriceinmton, 'ProductPrice' => $Productprice, 'LandingCharge' => $LandingCharge, 'AfterLandingCharge' => $AfterLandingCharge, 'CustomDuty' => $CustomDuty, 'AfterCustomDuty' => $AfterCustomDuty, 'CustomEdCess' => $CustomEd, 'CustomSHCess' => $CustomSH, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'Grossdutypayable' => $Grossdutypayable, 'QuantityKG' => $QuantityKG, 'AfterCustomSHCess' => $AfterCustomSH, 'AfterCustomEdCess' => $AfterCustomEd, 'TotalValue' => $Totalvalueitem, 'FreightType' => $FreightType, 'NoOfTrip' => $NOOfTrip, 'FreightValue' => $FreightValue, 'AfterFreightValue' => $AfterFreightValue, 'AssessableValue' => $AssessableValue, 'SubTotal' => $SubTotal, 'IGST' => $IGST, 'AfterIGST' => $AfterIGST, 'DutyImpact' => $DutyImpact, 'NetValue' => $NetValue, 'ClearingCharge' => $ClearingCharge, 'CustomDutyExpensesPerKG' => $CustomDutyExpensesPerKG); $ImportList = $this->purchaseorder_model->addImportTax($ImportTaxList); if (!$ImportList) { throw new \Exception('Error occurred while creating Capital international Tax'); } } } } } $message = "Capital Purchase Order Created Successfully!\nPO Number Is: " . $PONO; if($POStatus == 'ST014'){ $message = "Capital Purchase Order Saved as Draft!\nPO Number Is: " . $PONO; } else if($POStatus == 'ST026'){ $message = "Capital Purchase Order Approved Successfully!\nPO Number Is: " . $PONO; } echo $message; } catch (\Exception $e) { log_message('error', 'Exception occurred: ' . $e->getMessage()); echo 'An error occurred while creating the purchase order. Please try again.'; } } /*Edit Capital po*/ function EditCapitalPurchaseOrder() { $PONO = $this->request->getPost('txtPONO'); $POdt = $this->request->getPost('PODate'); $PODate = get_date_time_format($POdt); $SupplierID = $this->request->getPost('drpSupplier'); $newsup = (string)$this->request->getPost('newsup'); // $newSupId = split("[ - ]+", $newsup); $newSupId = preg_split('[-]', $newsup); $DeliveryAddr = $this->request->getPost('DeliveryAddr'); $dt = $this->request->getPost('Deliverydate'); $POType = $this->request->getPost('POType'); $PoRange = $this->request->getPost('txtPoRange'); /* $DeliveryOption = $this->request->getPost('DateRange'); if($DeliveryOption==1){ $Deliverydt = ''; $DeliverySchedule = $this->request->getPost('Scheduleby'); } else{ //$Deliverydt = get_date_time_format($dt); $Deliverydt = ''; $DeliverySchedule = ''; } */ /*-----------------------------------*/ $b4supplier = $this->request->getPost('b4supplier'); $b4date = $this->request->getPost('b4podate'); $b4podate = get_date_time_format($b4date); /*-----------------------------------*/ $DeliveryOption = $this->request->getPost('DateRange'); $DeliverySchedule = ''; $Dispatch = ''; $Deliverydt = ''; if ($DeliveryOption == 1) { $Dispatch = ''; $Deliverydt = ''; $DeliverySchedule = $this->request->getPost('Scheduleby'); } else if ($DeliveryOption == 2) { $Deliverydt = ''; $DeliverySchedule = ''; $Dispatch = $this->request->getPost('Dispatch'); } else { $Dispatch = ''; $DeliverySchedule = ''; $Deliverydt = get_date_time_format($dt); } $capitalType = $this->request->getPost('capitalType'); $currencytypeID = $this->request->getPost('currencytype'); if ($capitalType == '1') { $CapitalRange = '1'; $ExchangeRateOn = ''; $ExchangeRate = ''; } else { $CapitalRange = '0'; $ExchangeRateBeforeFormat = $this->request->getPost('Exchangerateon'); $ExchangeRateOn = get_date_time_format($ExchangeRateBeforeFormat); $ExchangeRate = $this->request->getPost('ExchangeRt'); } $PaymentMethod = $this->request->getPost('PaymentMethod'); $OtherPayment = $this->request->getPost('Otherpayment'); $SpcialInstruction = $this->request->getPost('txtSpcialInstruction'); $TotalOrder = $this->request->getPost('CapitalToatlOrder'); $POStatus = $this->request->getPost('txtStatus'); $Palaceoforigin = $this->request->getPost('PlaceOforigin'); $ModeOfShipment = $this->request->getPost('editmodeofshipment'); $SupplierReference = $this->request->getPost('editsupplierreference'); $SuppliersOfferNo = $this->request->getPost('editsupplierofferno'); $OtherReferences = $this->request->getPost('editotherreference'); $Fincap = ""; //$this->request->getPost('editfincap'); $InsuranceOptions = $this->request->getPost('insuranceStatus'); $InsuranceNumber = $this->request->getPost('InsuranceNumber'); $ServiceTypeOptions = $this->request->getPost('PoTypeOptions'); $BudgetType = $this->request->getPost('Budget'); $CreateBy = $this->session->get('userId'); $RowCount = $this->request->getPost('txtRowCount'); $DeletedRow = $this->request->getPost('txtDeletedRow'); $comma_separated = ($DeletedRow !== null && is_string($DeletedRow)) ? explode(':', $DeletedRow) : []; $createddt = get_current_date_time(); $updateddt = get_current_date_time(); $Qualitycheck = 1; $POList = array('SupplierID' => $SupplierID, 'TotalOrderValue' => $TotalOrder, 'PODate' => $PODate, 'Status' => $POStatus, 'PORange' => $PoRange, 'ExchangeRate' => $ExchangeRate, 'ExchangeRateCalculatedon' => $ExchangeRateOn, 'PaymentTerms' => $PaymentMethod, 'ServiceDescription' => $SpcialInstruction, 'CreatedBy' => $CreateBy, 'DeliveryAddress' => $DeliveryAddr, 'DeliverySchedule' => $DeliverySchedule, 'DeliveryOption' => $DeliveryOption, 'CurrencyType' => $currencytypeID, 'DeliverySchedule' => $DeliverySchedule, 'Import_PlaceofOrgin' => $Palaceoforigin, 'Import_DispatchDetails' => $Dispatch, 'DeliveryDate' => $Deliverydt, 'PaymentOtherDescription' => $OtherPayment, 'Supplier_Reference' => $SupplierReference, 'Mode_Of_Shipment' => $ModeOfShipment, 'Supplier_Offer_No' => $SuppliersOfferNo, 'Other_Reference' => $OtherReferences, 'Fincap' => $Fincap, 'InsuranceStatus' => $InsuranceOptions, 'InsuranceNumber' => $InsuranceNumber, 'POSubType' => $ServiceTypeOptions, 'IsQualityChkReqired' => $Qualitycheck, 'BudgetType' => $BudgetType); if ($POStatus == 'ST026') { $POList['ApprovedOn'] = get_current_date_time(); $POList['ApprovedBy'] = $this->session->get('userId'); $POList['ReleasedOn'] = get_current_date_time(); $POList['ReleasedBy'] = $this->session->get('userId'); } $file = $this->request->getFile('POFile'); $requestfilename = NULL; if (!empty($file)) { if ($file && $file->isValid() && !$file->hasMoved()) { $requestfilename = $file->getName(); $path = ROOTPATH . 'public/uploads/POfiles/'; if (!is_dir($path)) { mkdir($path, 0777, true); } if (!empty($this->purchaseorder_model->isFileExists($requestfilename)) && file_exists($path .$requestfilename)) { log_message('error', 'File already exists in the database' . $requestfilename); $POList['POFile'] = $requestfilename; } else { $file->move($path, $requestfilename); $POList['POFile'] = $requestfilename; } } }else{ log_message('error', 'File Upload not Done' . $requestfilename); } $POMaster = $this->purchaseorder_model->updatePOMaster($PONO, $POList); $LineItemStatus = REQITEM_NEW; if ($PODate != $b4podate) { $logpo = array('PONO' => $PONO, 'LineItemNos' => '-', 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4podate, 'newValue' => $PODate, 'entity' => 'PO DateChanged'); $this->purchaseorder_model->insertlogpo($logpo); } if (!empty($newSupId[0])) { if ($newSupId[0] != $b4supplier) { $logpo = array('PONO' => $PONO, 'LineItemNos' => '-', 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4supplier, 'newValue' => $newsup, 'entity' => 'Supplier Changed'); $this->purchaseorder_model->insertlogpo($logpo); } } for ($i = 1; $i <= $RowCount; $i++) { $MaterialCode = $this->request->getPost('materialCode' . $i); $Quantity = $this->request->getPost('quantity' . $i); $Reqnumber = $this->request->getPost('Reqnumber' . $i); $itemRate = $this->request->getPost('itemRate' . $i); /*-----------------------------------*/ $b4qty = $this->request->getPost('b4qty' . $i); $b4rate = $this->request->getPost('b4rate' . $i); /*-----------------------------------*/ $Exchangerate = $this->request->getPost('echangeRate' . $i); $BasicPriceinmton = $this->request->getPost('rateInUs' . $i); $Productprice = $this->request->getPost('basicvalInINR' . $i); $LandingCharge = $this->request->getPost('beforeLanding' . $i); $AfterLandingCharge = $this->request->getPost('landingCharge' . $i); $CustomDuty = $this->request->getPost('beforeCustomDuty' . $i); $AfterCustomDuty = $this->request->getPost('CustomDuty' . $i); $CustomEd = $this->request->getPost('beforeCustomEDCess' . $i); $AfterCustomEd = $this->request->getPost('CustomEDCess' . $i); $CustomSH = $this->request->getPost('beforeCustomSHCess' . $i); $AfterCustomSH = $this->request->getPost('CustomSHCess' . $i); $Grossdutypayable = $this->request->getPost('GrossDutyPayable' . $i); $CustomDutyExpensesPerKG = $this->request->getPost('CustomDutyExpenses' . $i); $QuantityKG = $this->request->getPost('PurQuantity' . $i); $AssessableValue = $this->request->getPost('AssessableValue' . $i); $SubTotal = $this->request->getPost('SubTotal' . $i); $IGST = $this->request->getPost('IGSTInt' . $i); $AfterIGST = $this->request->getPost('AfterIGSTInt' . $i); $DutyImpact = $this->request->getPost('DutyImpact' . $i); $NetValue = $this->request->getPost('NetValue' . $i); $ClearingCharge = $this->request->getPost('ClearingCharge' . $i); $Totalvalueitem = $this->request->getPost('PerKgExpense' . $i); //echo $BasicPriceinmton; $CostCenter = $this->request->getPost('CPCostCode' . $i); $TotalOrderValue = $this->request->getPost('basicvalInINR' . $i); $POLineItemNo = $this->request->getPost('LineItemNo' . $i); $Cgst = $this->request->getPost('Cgst' . $i); $Sgst = $this->request->getPost('Sgst' . $i); $Igst = $this->request->getPost('Igst' . $i); $AfterCgst = $this->request->getPost('AfterCgst' . $i); $AfterSgst = $this->request->getPost('AfterSgst' . $i); $AfterIgst = $this->request->getPost('AfterIgst' . $i); $OtherAmt = $this->request->getPost('OtherAmt' . $i); $DiscountType = $this->request->getPost('DisType' . $i); $DiscountValue = $this->request->getPost('DisVal' . $i); $AfterDiscount = $this->request->getPost('AfterDisVal' . $i); $TaxtotalOrderValue = (float)$itemRate * (float)$Quantity + (float)$OtherAmt + (float)$AfterCgst + (float)$AfterSgst + (float)$AfterIgst - (float)$AfterDiscount; $OtherAmt = $this->request->getPost('OtherAmt' . $i); $CapitalItemDescription = $this->request->getPost('CapitalItemDescrition' . $i); $Per = $this->request->getPost('per' . $i); $FreightType = $this->request->getPost('FreightType' . $i); $FreightValue = $this->request->getPost('FreightVal' . $i); $AfterFreightValue = $this->request->getPost('AfterFreightVal' . $i); $NOOfTrip = $this->request->getPost('NoOfTrip' . $i); $FreightTypeloc = $this->request->getPost('Ftype' . $i); $FreightNoofTriploc = $this->request->getPost('NoTrip' . $i); $Freightrateloc = $this->request->getPost('Fvalue' . $i); $FreightAmountloc = $this->request->getPost('Afvalue' . $i); $LineitemAuditorNotes = $this->request->getPost('LineItemNoteForAuditor' . $i); $LineitemAuditorNotes = ($LineitemAuditorNotes === null || $LineitemAuditorNotes === '') ? '-' : $LineitemAuditorNotes; // echo $FreightTypeloc; // echo 'n'; // echo $FreightNoofTriploc; // echo 'n'; // echo $Freightrateloc; // echo 'n'; // echo $FreightAmountloc; // die(); /*---------start---------------------*/ // if(($PODate != $b4podate )||( $SupplierID != $b4supplier) || ($itemRate !=$b4rate) || // ($Quantity != $b4qty )) // { // $logpo =array('UpdateBy'=>$CreateBy,'UpdatedOn'=>$updateddt); // $this->purchaseorder_model->updatelogpo($MaterialCode,$POLineItemNo,$logpo); // } if ($Quantity != $b4qty) { $logpo = array('PONO' => $PONO, 'LineItemNos' => $POLineItemNo, 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4qty, 'newValue' => $Quantity, 'entity' => 'Quantity Changed'); $this->purchaseorder_model->insertlogpo($logpo); } if ($itemRate != $b4rate) { $logpo = array('PONO' => $PONO, 'LineItemNos' => $POLineItemNo, 'UpdateBy' => $CreateBy, 'UpdatedOn' => $updateddt, 'oldValue' => $b4rate, 'newValue' => $itemRate, 'entity' => 'Rate Changed'); $this->purchaseorder_model->insertlogpo($logpo); } /*----------end--------------------*/ if($itemRate != 0){ $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate); } $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; } } } /*------------------------------*/ $this->requistion_model = new requistion_model(); $RetItemNo = $this->requistion_model->getItemNumber($Reqnumber, $MaterialCode); $ItemNo = ''; if (count($RetItemNo) > 0) { $ItemNo = $RetItemNo[0]['ItemNo']; } $getOldReqDetailsQuantity = $this->purchaseorder_model->getOldReqDetailsQuantity($Reqnumber, $MaterialCode,$ItemNo); if($Quantity == $getOldReqDetailsQuantity){ $ReqDetails = array('Quantity' => $Quantity, 'UpdatedBy' => $CreateBy, 'UpdatedOn' => $updateddt); $this->purchaseorder_model->updateReqDetails($Reqnumber, $MaterialCode, $ReqDetails); } /*------------------------------*/ // print_r(strlen((string)$POLineItemNo));die; if ($SkipInsert == "False") { if (strlen((string)$POLineItemNo) == 0) { $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'CostCenterCode' => $CostCenter, 'ServiceMaterialDescription' => $CapitalItemDescription, 'Per' => $Per,'LineitemAuditorNotes'=>$LineitemAuditorNotes); $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); // if($i != 1){ // print_r(value:$POLineItem); // die; // } $LineItemNo = ''; if (count($POLineItem) > 0) { $LineItemNo = $POLineItem[0]['LineItemNo']; } if (trim((string)$POType) == CAPITAL) { if ($capitalType == '1') { $ServiceTaxList = array('LineItemNo' => $LineItemNo, 'FreightType' => $FreightTypeloc, 'NoOfTrip' => $FreightNoofTriploc, 'FreightValue' => $Freightrateloc, 'AfterFreightValue' => $FreightAmountloc, 'CGST' => $Cgst, 'After_CGST' => $AfterCgst, 'SGST' => $Sgst, 'After_SGST' => $AfterSgst, 'IGST' => $Igst, 'After_IGST' => $AfterIgst, 'otherallowance' => $OtherAmt, 'TotalValue' => $TaxtotalOrderValue, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'discount' => $DiscountType, 'discountval' => $DiscountValue, 'Afterdiscountval' => $AfterDiscount); $ServiceTax = $this->purchaseorder_model->addServiceTax($ServiceTaxList); } if ($capitalType == '0') { $ImportTaxList = array( 'LineItemNo' => $LineItemNo, 'BasicPriceInMTon' => $BasicPriceinmton, 'ProductPrice' => $Productprice, 'LandingCharge' => $LandingCharge, 'AfterLandingCharge' => $AfterLandingCharge, 'CustomDuty' => $CustomDuty, 'AfterCustomDuty' => $AfterCustomDuty, 'CustomEdCess' => $CustomEd, 'CustomSHCess' => $CustomSH, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'Grossdutypayable' => $Grossdutypayable, 'CustomDutyExpensesPerKG' => $CustomDutyExpensesPerKG, 'QuantityKG' => $QuantityKG, 'AfterCustomSHCess' => $AfterCustomSH, 'AfterCustomEdCess' => $AfterCustomEd, 'TotalValue' => $Totalvalueitem, 'FreightType' => $FreightType, 'NoOfTrip' => $NOOfTrip, 'FreightValue' => $FreightValue, 'AfterFreightValue' => $AfterFreightValue, 'AssessableValue' => $AssessableValue, 'SubTotal' => $SubTotal, 'IGST' => $IGST, 'AfterIGST' => $AfterIGST, 'DutyImpact' => $DutyImpact, 'NetValue' => $NetValue, 'ClearingCharge' => $ClearingCharge ); $ImportList = $this->purchaseorder_model->addImportTax($ImportTaxList); } } } else { $LineItemNo = $POLineItemNo; if($itemRate != 0){ $this->purchaseorder_model->updateMaterialRate($MaterialCode, $itemRate); } $POLineItemList = array('PONO' => $PONO, 'ReqNo' => $Reqnumber, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity, 'Rate' => $itemRate, 'Status' => $LineItemStatus, 'CreatedBy' => $CreateBy, 'CostCenterCode' => $CostCenter, 'ServiceMaterialDescription' => $CapitalItemDescription, 'Per' => $Per,'LineitemAuditorNotes'=>$LineitemAuditorNotes); $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO, $LineItemNo, $POLineItemList); if ($capitalType == '1') { $ServiceTaxList = array('CGST' => $Cgst, 'After_CGST' => $AfterCgst, 'SGST' => $Sgst, 'After_SGST' => $AfterSgst, 'IGST' => $Igst, 'After_IGST' => $AfterIgst, 'otherallowance' => $OtherAmt, 'TotalValue' => $TaxtotalOrderValue, 'UpdateBY' => $CreateBy, 'UpdatedOn' => $createddt, 'discount' => $DiscountType, 'discountval' => $DiscountValue, 'Afterdiscountval' => $AfterDiscount, 'FreightType' => $FreightTypeloc, 'NoOfTrip' => $FreightNoofTriploc, 'FreightValue' => $Freightrateloc, 'AfterFreightValue' => $FreightAmountloc); $ServiceTax = $this->purchaseorder_model->updateServiceTax($LineItemNo, $ServiceTaxList); } if ($capitalType == '0') { $ImportTaxList = array( 'LineItemNo' => $LineItemNo, 'BasicPriceInMTon' => $BasicPriceinmton, 'ProductPrice' => $Productprice, 'LandingCharge' => $LandingCharge, 'AfterLandingCharge' => $AfterLandingCharge, 'CustomDuty' => $CustomDuty, 'AfterCustomDuty' => $AfterCustomDuty, 'CustomEdCess' => $CustomEd, 'CustomSHCess' => $CustomSH, 'CreatedBy' => $CreateBy, 'CreatedDate' => $createddt, 'Grossdutypayable' => $Grossdutypayable, 'CustomDutyExpensesPerKG' => $CustomDutyExpensesPerKG, 'QuantityKG' => $QuantityKG, 'AfterCustomSHCess' => $AfterCustomSH, 'AfterCustomEdCess' => $AfterCustomEd, 'TotalValue' => $Totalvalueitem, 'FreightType' => $FreightType, 'NoOfTrip' => $NOOfTrip, 'FreightValue' => $FreightValue, 'AfterFreightValue' => $AfterFreightValue, 'AssessableValue' => $AssessableValue, 'SubTotal' => $SubTotal, 'IGST' => $IGST, 'AfterIGST' => $AfterIGST, 'DutyImpact' => $DutyImpact, 'NetValue' => $NetValue, 'ClearingCharge' => $ClearingCharge ); $ImportList = $this->purchaseorder_model->updateImportTax($LineItemNo, $ImportTaxList); } } } } $message = "Capital Purchase Order Updated Successfully!\nPO Number Is: " . $PONO; if($POStatus == 'ST014'){ $message = "Capital Purchase Order Saved as Draft!\nPO Number Is: " . $PONO; } else if($POStatus == 'ST026'){ $message = "Capital Purchase Order Approved Successfully!\nPO Number Is: " . $PONO; } echo $message; } /* capital po print/pdf*/ public function CapitalPoPrint() { $PONO = $this->request->getVar('PONO'); $PoStatus = ''; $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); // Load the pdf page with multiviews $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformationforPDF(); $data['GetPoFormat'] = $this->purchaseorder_model->GetPoFormat($PONO); $data['POItem'] = $this->purchaseorder_model->GetCapitalPurchaseOrderDetailsForPDF($PONO); $data['AmendmentPDF'] = $this->purchaseorder_model->amendpdf($PONO); $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO); $CurrencyType = ''; $CapitalRange = 1; if (!empty($data['POItem'])) { $CurrencyType = $data['POItem'][0]->CurrencyType; $CapitalRange = $data['POItem'][0]->CapitalRange; $PoStatus = $data['POItem'][0]->Status; } if ($CurrencyType == '' or $CurrencyType == '0') { $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName('INR'); $TotalOrderValue = $data['POItem'][0]->TotalOrderValue; // $totalAmt=sprintf("%.2f", $TotalOrderValue); // $data['TotalAmountInWords']= $this->convertNumber($totalAmt); // } $AdvanceAmount = 0.0; foreach ($data['POItem'] as $POI) { $AdvanceAmount = $POI->AdvanceAmount; } $TotaltoPay = $TotalOrderValue - $AdvanceAmount; $totalAmt = sprintf("%.2f", $TotalOrderValue); $data['TotalAmountInWords'] = $this->convertNumber($totalAmt); } else { $data['CurrencySymbol'] = $this->purchaseorder_model->GerCurrencyCodeName($CurrencyType); $SymbolCurrency = $data['CurrencySymbol'][0]->FontCode2000; $SymbolCurrencyName = $data['CurrencySymbol'][0]->Currency; $PaiseVal = $data['CurrencySymbol'][0]->PaiseVal; $TotalOrderValue = $data['POItem'][0]->TotalOrderValue; foreach ($data['POItem'] as $POI) { $AdvanceAmount = $POI->AdvanceAmount; } $TotaltoPay = $TotalOrderValue - $AdvanceAmount; $totalAmt = sprintf("%.2f", $TotaltoPay); $data['TotalAmountInWords'] = $this->convertNumberSymbol($totalAmt, $SymbolCurrency, $SymbolCurrencyName, $PaiseVal); } $data['RequistionDetails'] = $this->purchaseorder_model->GetPdfRequistionDetails($PONO); if ($CapitalRange != '') { $data['TaxListDetails'] = $this->purchaseorder_model->GetCapitalTaxListDetails($PONO, $CapitalRange); } // view("capitalpopdf", $data); // Add header to pdf //view('includes/pdffooter'); // Get output html // $php = $this->output->get_output(); // Load library // $this->load->library('dompdf_gen'); // $paper_orientation = 'portrait'; // $customPaper = array(0,0,750,950); // $this->dompdf->set_paper($customPaper,$paper_orientation); // Convert to PDF // $this->dompdf->load_html($php); // $this->dompdf->render(); // $data['Attachment'] = FALSE; // $this->dompdf->stream("CapitalPOReport".$PONO.".pdf",$data,$php); $mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'format' => 'A4', 'default_font' => 'sans-serif', 'margin_header' => 0, 'margin_top' => -30, 'margin_right' => 14, 'margin_left' => 5, 'margin_footer' => -30, 'orientation' => 'P' ]); // Set PDF properties $mpdf->SetTitle('Invoice'); $mpdf->SetAuthor($data['CompanyDetails'][0]->CompanyName); $mpdf->SetCreator('Venba'); $mpdf->setAutoTopMargin = 'stretch'; $mpdf->setAutoBottomMargin = 'stretch'; $mpdf->use_kwt = true; $html = view('po_pdf', $data); // echo $html;die; $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content $mpdf->Output('POReport' . $PONO . '.pdf', 'D'); } /* delete purchase order file */ function deletePurchaseOrderFile(){ $PONO=$this->request->getPost('PONO'); $filename=$this->request->getPost('POFile'); $result= $this->purchaseorder_model->deletePurchaseOrderFile($PONO); $result2=$this->purchaseorder_model->findPurchaseOrderFile($filename); if ($result && empty($result2)) { $path = ROOTPATH . 'public/uploads/POfiles/' . $filename; if (file_exists($path)) { if (unlink($path)) { return $this->response->setJSON(['success' => 'File removed successfully !!!']); } else { return $this->response->setJSON(['error' => 'Failed to delete the file from the server.']); } } else { return $this->response->setJSON(['error' => 'File not found on the server.']); } } else if($result){ return $this->response->setJSON(['success' => 'File removed successfully !!']); } else { return $this->response->setJSON(['error' => 'File deletion from database failed or file still exists in database.']); } } /*This function is used to convert amount(digit) into words*/ public function convertNumber($amt) { //echo $amt;die(); $ShowPaise = '0'; $totalAmt = explode(".", $amt); $number = $totalAmt[0]; $no = $number; if (!empty($totalAmt[1]) && $totalAmt[1] != 0) { $point = $totalAmt[1]; $ShowPaise = '1'; } else { $point = 0; $ShowPaise = '0'; } $hundred = null; $digits_1 = strlen($no); $i = 0; $str = array(); $words = array( '0' => '', '1' => 'one', '2' => 'two', '3' => 'three', '4' => 'four', '5' => 'five', '6' => 'six', '7' => 'seven', '8' => 'eight', '9' => 'nine', '10' => 'ten', '11' => 'eleven', '12' => 'twelve', '13' => 'thirteen', '14' => 'fourteen', '15' => 'fifteen', '16' => 'sixteen', '17' => 'seventeen', '18' => 'eighteen', '19' => 'nineteen', '20' => 'twenty', '30' => 'thirty', '40' => 'fourty', '50' => 'fifty', '60' => 'sixty', '70' => 'seventy', '80' => 'eighty', '90' => 'ninety', '06' => 'Zero Six', '01' => 'Zero One', '02' => 'Zero Two', '03' => 'Zero Three', '04' => 'Zero Four', '05' => 'Zero Five', '07' => 'Zero Seven', '08' => 'Zero Eight', '09' => 'Zero Nine' ); $words1 = array( '2' => 'twenty', '3' => 'thirty', '4' => 'fourty', '5' => 'fifty', '6' => 'sixty', '7' => 'seventy', '8' => 'eighty', '9' => 'ninety' ); $words12 = array( '11' => 'eleven', '12' => 'twelve', '13' => 'thirteen', '14' => 'fourteen', '15' => 'fifteen', '16' => 'sixteen', '17' => 'seventeen', '18' => 'eighteen', '19' => 'nineteen', '20' => 'twenty', ); $digits = array('', 'hundred', 'thousand', 'lakh', 'crore'); while ($i < $digits_1) { $divider = ($i == 2) ? 10 : 100; $number = floor($no % $divider); $no = floor($no / $divider); $i += ($divider == 10) ? 1 : 2; if ($number) { $plural = (($counter = count($str)) && $number > 1) ? 's' : null; //print_r($plural); $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; //print_r($hundred); $str[] = ($number < 21) ? $words[$number] . " " . $digits[$counter] . $plural . " " . $hundred : $words[floor($number / 10) * 10] . " " . $words[$number % 10] . " " . $digits[$counter] . $plural . " " . $hundred; } else $str[] = null; } $str = array_reverse($str); $result = implode('', $str); if ($point >= 1 && $point <= 10) { $points = ($point) ? " " . $words[$point] : " "; } else if ($point >= 11 && $point <= 20) { $points = ($point) ? " " . $words12[$point] : " "; } else { $points = ($point) ? " " . $words1[$point / 10] . " " . $words[$point = $point % 10] : ''; } if ($ShowPaise == '0') { $amountInWords = "Rupees " . $result . " Only"; } else { $amountInWords = "Rupees " . $result . " Paise " . $points . " Only"; } return $amountInWords; } public function convertNumberSymbol($amt, $symbol, $name, $paise) { $ShowPaise = '0'; $totalAmt = explode(".", $amt); $number = $totalAmt[0]; $no = $number; if (!empty($totalAmt[1]) && $totalAmt[1] != 0) { $point = $totalAmt[1]; $ShowPaise = '1'; } else { $point = 0; $ShowPaise = '0'; } $hundred = null; $digits_1 = strlen($no); $i = 0; $str = array(); $words = array( '0' => '', '1' => 'one', '2' => 'two', '3' => 'three', '4' => 'four', '5' => 'five', '6' => 'six', '7' => 'seven', '8' => 'eight', '9' => 'nine', '10' => 'ten', '11' => 'eleven', '12' => 'twelve', '13' => 'thirteen', '14' => 'fourteen', '15' => 'fifteen', '16' => 'sixteen', '17' => 'seventeen', '18' => 'eighteen', '19' => 'nineteen', '20' => 'twenty', '30' => 'thirty', '40' => 'fourty', '50' => 'fifty', '60' => 'sixty', '70' => 'seventy', '80' => 'eighty', '90' => 'ninety' ); $words1 = array( '2' => 'twenty', '3' => 'thirty', '4' => 'fourty', '5' => 'fifty', '6' => 'sixty', '7' => 'seventy', '8' => 'eighty', '9' => 'ninety' ); $words12 = array( '11' => 'eleven', '12' => 'twelve', '13' => 'thirteen', '14' => 'fourteen', '15' => 'fifteen', '16' => 'sixteen', '17' => 'seventeen', '18' => 'eighteen', '19' => 'nineteen', '20' => 'twenty', ); $digits = array('', 'hundred', 'thousand', 'lakh', 'crore'); while ($i < $digits_1) { $divider = ($i == 2) ? 10 : 100; $number = floor($no % $divider); $no = floor($no / $divider); $i += ($divider == 10) ? 1 : 2; if ($number) { $plural = (($counter = count($str)) && $number > 1) ? 's' : null; //print_r($plural); $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; //print_r($hundred); $str[] = ($number < 21) ? $words[$number] . " " . $digits[$counter] . $plural . " " . $hundred : $words[floor($number / 10) * 10] . " " . $words[$number % 10] . " " . $digits[$counter] . $plural . " " . $hundred; } else $str[] = null; } $str = array_reverse($str); $result = implode('', $str); if ($point >= 1 && $point <= 10) { $points = ($point) ? " " . $words[$point] : " "; } else if ($point >= 11 && $point <= 20) { $points = ($point) ? " " . $words12[$point] : " "; } else { $points = ($point) ? " " . $words1[$point / 10] . " " . $words[$point = $point % 10] : ''; } if ($ShowPaise == '0') { $amountInWords = $name . " " . $result . " Only"; } else { $amountInWords = $name . " " . $result . $paise . " " . $points . " Only"; } return $amountInWords; } function addadvancerequest() { $PONO = $this->request->getPost('PONO'); $AdvancePercentage = $this->request->getPost('AdvanceIn'); $AdvanceAmount = $this->request->getPost('AdvanceAmount'); $Remarks = $this->request->getPost('Remarks'); $createddt = get_current_date_time(); $CreateBy = $this->session->get('userId'); $isExists = $this->purchaseorder_model->PONOExists($PONO); if (count($isExists) == 0) { $advance = array('PONO' => $PONO, 'AdvancePercentage' => $AdvancePercentage, 'AdvanceAmount' => $AdvanceAmount, 'Remarks' => $Remarks, 'CreatedBy' => $CreateBy, 'CreatedDt' => $createddt); $this->purchaseorder_model->addadvanceRequest($advance); } else { $advance = array('AdvancePercentage' => $AdvancePercentage, 'AdvanceAmount' => $AdvanceAmount, 'Remarks' => $Remarks); $this->purchaseorder_model->updateadvanceRequest($advance, $PONO); } if ($advance > 0) { // $this->session->set_flashdata('success', 'New Asset created successfully'); echo ""; redirect('purchaseorder/advancerequest', 'refresh'); } } function SaveEnquiry() { $client_id = $this->request->getPost('client_id'); $date = $this->request->getPost('date'); $contact_person = $this->request->getPost('contact_person'); $requirement = $this->request->getPost('requirement'); $feasible = $this->request->getPost('feasible'); $orderno = $this->request->getPost('orderno'); $reqqty = $this->request->getPost('reqqty'); $supqty = $this->request->getPost('supqty'); $remarks = $this->request->getPost('remarks'); $save = array('client_id' => $client_id, 'Created_Date' => $date, 'Contact_Person' => $contact_person, 'Requirement' => $requirement, 'Feasible' => $feasible, 'OrderNo' => $orderno, 'Requested_Qty' => $reqqty, 'Supplied_Qty' => $supqty, 'Remarks' => $remarks); $save_result = $this->purchaseorder_model->SaveEnquiry($save); if ($save_result > 0) { //echo ""; echo "Saved Successfully"; //redirect('purchaseorder/addenquiry','refresh'); } } function UpdateEnquiry() { $client_id = $this->request->getPost('client_id'); $date = $this->request->getPost('date'); $contact_person = $this->request->getPost('contact_person'); $requirement = $this->request->getPost('requirement'); $feasible = $this->request->getPost('feasible'); $orderno = $this->request->getPost('orderno'); $reqqty = $this->request->getPost('reqqty'); $supqty = $this->request->getPost('supqty'); $remarks = $this->request->getPost('remarks'); $Id = $this->request->getPost('id'); $save = array('client_id' => $client_id, 'Created_Date' => $date, 'Contact_Person' => $contact_person, 'Requirement' => $requirement, 'Feasible' => $feasible, 'OrderNo' => $orderno, 'Requested_Qty' => $reqqty, 'Supplied_Qty' => $supqty, 'Remarks' => $remarks); //print_r($save); $save_result = $this->purchaseorder_model->UpdateEnquiry($save, $Id); if (($save_result == 0) || ($save_result == 1)) { echo "Saved Successfully"; //echo ""; // redirect('purchaseorder/addenquiry','refresh'); } } public function enquiry() { $data['Customer'] = $this->purchaseorder_model->GetClients(); //$dt = date('yyyy-mm-dd'); $createddt = get_current_date_time(); $data['enquirycount'] = $this->purchaseorder_model->GetEnquiryCount($createddt); $this->global['pageTitle'] = 'Enquiry Form'; $this->loadViews("addenquiry", $this->global, $data, NULL); } public function Editenquiry() { $Id = $this->request->getVar('Id'); //echo $Id; $data['EnquiryDetails'] = $this->purchaseorder_model->GetEnquiry($Id); $data['Customer'] = $this->purchaseorder_model->GetClients(); //print_r($data['EnquiryDetails']); $this->global['pageTitle'] = 'Enquiry Form'; $this->loadViews("editenquiry", $this->global, $data, NULL); } public function enquirylist() { $data['Customer_Order'] = $this->purchaseorder_model->GetEnquiryDetails(); $this->global['pageTitle'] = 'Enquiry List'; $this->loadViews("enquirylist", $this->global, $data, NULL); } public function Nonconfirmative() { $CId = $this->request->getVar('CId'); $data['CId'] = $CId; $data['Suplist'] = $this->purchaseorder_model->GetEnquiryDetails(); $this->global['pageTitle'] = 'Action Report'; // $this->loadViews("action_report", $this->global, $data , NULL); $this->loadViews("action_report", $this->global, $data, NULL); } public function EditNonconfirmative() { $Id = $this->request->getVar('Id'); $data['Suplist'] = $this->purchaseorder_model->GetEnquiryDetails(); $data['masterdetails'] = $this->purchaseorder_model->GetncrmasterDetails($Id); $data['DispositionDetails'] = $this->purchaseorder_model->GetDispositionDetails($Id); $data['RootcauseDetails'] = $this->purchaseorder_model->GetRootcauseDetails($Id); $data['CounteractionDetails'] = $this->purchaseorder_model->GetCouteractionDetails($Id); //print_r($data['DispositionDetails']); $this->global['pageTitle'] = 'Edit Action Report'; $this->loadViews("editaction_report", $this->global, $data, NULL); } public function Nonconfirmativelist() { $data['ncrarray'] = $this->purchaseorder_model->GetNcrlist(); //print_r($data['Customer_Order']); $this->global['pageTitle'] = 'NCR List'; $this->loadViews("ncrlist", $this->global, $data, NULL); } public function AddComplaint() { $data['Customer'] = $this->purchaseorder_model->GetClients(); //$dt = date('yyyy-mm-dd'); //$createddt = get_current_date_time(); //$data['enquirycount']=$this->purchaseorder_model->GetEnquiryCount($createddt); $this->global['pageTitle'] = 'Add Complaint'; $this->loadViews("addcomplaint", $this->global, $data, NULL); } public function EditComplaint() { $CId = $this->request->getVar('CId'); $data['Customer'] = $this->purchaseorder_model->GetClients(); $data['savedata'] = $this->purchaseorder_model->Get_SavedComplaint($CId); $this->global['pageTitle'] = 'Edit Complaint'; $this->loadViews("editcomplaint", $this->global, $data, NULL); } public function Savencrlist() { //$client_id=$this->request->getPost('client_id'); $Id = ''; $cname = $this->request->getPost('cname'); $date = $this->request->getPost('date'); $servicedetails = $this->request->getPost('servicedetails'); $detailsofcoplaint = $this->request->getPost('detailsofcoplaint'); $modeofcommunication = $this->request->getPost('modeofcommunication'); $actiontaken = $this->request->getPost('actiontaken'); $actioncardno = $this->request->getPost('actioncardno'); $remark = $this->request->getPost('remark'); $save = array('client_id' => $cname, 'Created_Date' => $date, 'Details' => $servicedetails, 'Reason' => $detailsofcoplaint, 'mode_of_communication' => $modeofcommunication, 'action_taken' => $actiontaken, 'Remarks' => $remark, 'card_ref_no' => $actioncardno); if ($Id == "") { echo "Unable to Update! Try again"; } else { $save_result = $this->purchaseorder_model->UpdateEnquiry($save, $Id); if (($save_result == 0) || ($save_result == 1)) { echo "Saved Successfully"; //echo ""; // redirect('purchaseorder/addenquiry','refresh'); } else { echo "Updation Failed! Try again"; } } } public function Action_Report() { $txtactionrow = $this->request->getPost('txtactionrow'); $txtrootrow = $this->request->getPost('txtrootrow'); $txtcounterrow = $this->request->getPost('txtcounterrow'); $Department = $this->request->getPost('Department'); $Date = $this->request->getPost('newdate'); $Auditor = $this->request->getPost('AUDITOR'); $Auditee = $this->request->getPost('AUDITEE'); $Iqaref = $this->request->getPost('IQAREF'); $ncdetails = $this->request->getPost('ObjectiveEvidence'); $ReviewDetails = $this->request->getPost('ReviewDetails'); $ncrstatus = $this->request->getPost('ncrstatus'); $Comments = $this->request->getPost('Comments'); $CId = $this->request->getPost('CId'); $master = array('Department' => $Department, 'Created_Date' => $Date, 'Auditor' => $Auditor, 'Auditee' => $Auditee, 'Iqra' => $Iqaref, 'NC_Details' => $ncdetails, 'Review_Details' => $ReviewDetails, 'Ncr_status' => $ncrstatus, 'Comments' => $Comments); //print_r($master); $save_result = $this->purchaseorder_model->SaveActionMaster($master); $lastId = ''; if (count($save_result) > 0) { $lastId = $save_result[0]['Id']; } $up = array('Ncr_Id' => $lastId); $updatecomplaint = $this->purchaseorder_model->updatecomplaintId($up, $CId); for ($i = 1; $i <= $txtactionrow; $i++) { $action = $this->request->getPost('action' . $i); $resp = $this->request->getPost('resp' . $i); $target = $this->request->getPost('target' . $i); $actionsave = array('Id' => $lastId, 'Action' => $action, 'Resp' => $resp, 'Target' => $target); $actionsave = $this->purchaseorder_model->SaveActionDisposition($actionsave); } for ($i = 1; $i <= $txtrootrow; $i++) { $rootcause = $this->request->getPost('RootCause' . $i); $rootsave = array('Id' => $lastId, 'Root_cause' => $rootcause); $saveroot = $this->purchaseorder_model->SaveRootCause($rootsave); } for ($i = 1; $i <= $txtcounterrow; $i++) { $action = $this->request->getPost('counteraction' . $i); $resp = $this->request->getPost('counterresp' . $i); $target = $this->request->getPost('countertarget' . $i); $savecounter = array('Id' => $lastId, 'Action' => $action, 'Resp' => $resp, 'Target' => $target); $countersave = $this->purchaseorder_model->Savecounteraction($savecounter); } echo "Saved Successfully"; } public function UpdateAction_Report() { $txtactionrow = $this->request->getPost('txtactionrow'); $txtrootrow = $this->request->getPost('txtrootrow'); $txtcounterrow = $this->request->getPost('txtcounterrow'); $Id = $this->request->getPost('ObjectiveEvidence1'); $Department = $this->request->getPost('Department'); $Date = $this->request->getPost('newdate'); //die(); $Auditor = $this->request->getPost('AUDITOR'); $Auditee = $this->request->getPost('AUDITEE'); $Iqaref = $this->request->getPost('IQAREF'); $ncdetails = $this->request->getPost('ObjectiveEvidence'); $ReviewDetails = $this->request->getPost('ReviewDetails'); $ncrstatus = $this->request->getPost('ncrstatus'); $Comments = $this->request->getPost('Comments'); $master = array('Department' => $Department, 'Created_Date' => $Date, 'Auditor' => $Auditor, 'Auditee' => $Auditee, 'Iqra' => $Iqaref, 'NC_Details' => $ncdetails, 'Review_Details' => $ReviewDetails, 'Ncr_status' => $ncrstatus, 'Comments' => $Comments); $save_result = $this->purchaseorder_model->UpdateActionMaster($master, $Id); //print_r($save_result); $lastId = ''; if (count($save_result) > 0) { $lastId = $save_result[0]['Id']; } for ($i = 1; $i <= $txtactionrow; $i++) { $action = $this->request->getPost('action' . $i); $resp = $this->request->getPost('resp' . $i); $target = $this->request->getPost('target' . $i); $LineDisposition = $this->request->getPost('ActionId' . $i); if ($action == '' && $resp == '' & $target == '') { } else { $actionsave = array('Id' => $Id, 'Action' => $action, 'Resp' => $resp, 'Target' => $target); $checklineid = $this->purchaseorder_model->GetActionid($LineDisposition); //print_r($actionsave); if (count($checklineid) == 0) { $actionsave = $this->purchaseorder_model->SaveActionDisposition($actionsave); } else { $actionsave = $this->purchaseorder_model->UpdateActionDisposition($actionsave, $LineDisposition); } } // $actionsave = $this->purchaseorder_model->UpdateActionDisposition($actionsave,$LineDisposition); } for ($i = 1; $i <= $txtrootrow; $i++) { $rootcause = $this->request->getPost('RootCause' . $i); $Lineroot = $this->request->getPost('RootCauseId' . $i); if ($rootcause == '') { } else { $rootsave = array('Id' => $Id, 'Root_cause' => $rootcause); $checkrootid = $this->purchaseorder_model->Getrootid($Lineroot); if (count($checkrootid) == 0) { $saveroot = $this->purchaseorder_model->SaveRootCause($rootsave); } else { $saveroot = $this->purchaseorder_model->UpdateRootCause($rootsave, $Lineroot); } } } for ($i = 1; $i <= $txtcounterrow; $i++) { $action = $this->request->getPost('counteraction' . $i); $resp = $this->request->getPost('counterresp' . $i); $target = $this->request->getPost('countertarget' . $i); $LineCounter = $this->request->getPost('CounterId' . $i); if ($action == '' && $resp == '' & $target == '') { } else { $savecounter = array('Id' => $Id, 'Action' => $action, 'Resp' => $resp, 'Target' => $target); $checkcounterid = $this->purchaseorder_model->Getcounterid($LineCounter); if (count($checkcounterid) == 0) { $countersave = $this->purchaseorder_model->Savecounteraction($savecounter); } else { $countersave = $this->purchaseorder_model->Updatecounteraction($savecounter, $LineCounter); } } } echo "Saved Successfully"; } public function SaveComplaint() { $client_id = $this->request->getPost('client_id'); $date = $this->request->getPost('date'); $Service_Details = $this->request->getPost('Service_Details'); $Reasons = $this->request->getPost('Reasons'); $mode = $this->request->getPost('mode'); $Action = $this->request->getPost('Action'); $Remark = $this->request->getPost('Remark'); $save_complaint = array('client_id' => $client_id, 'Created_Date' => $date, 'Service_Details' => $Service_Details, 'Reason' => $Reasons, 'mode_of_communication' => $mode, 'Action_taken' => $Action, 'Remark' => $Remark); $savecomplaint = $this->purchaseorder_model->Savecomplaint($save_complaint); if ($savecomplaint > 0) { echo "Saved Successfully"; } else { echo "Error Occured! Please Try Again"; } } public function UpdateComplaint() { $client_id = $this->request->getPost('client_id'); $date = $this->request->getPost('date'); $Service_Details = $this->request->getPost('Service_Details'); $Reasons = $this->request->getPost('Reasons'); $mode = $this->request->getPost('mode'); $Action = $this->request->getPost('Action'); $Remark = $this->request->getPost('Remark'); $CId = $this->request->getPost('CId'); $save_complaint = array('client_id' => $client_id, 'Created_Date' => $date, 'Service_Details' => $Service_Details, 'Reason' => $Reasons, 'mode_of_communication' => $mode, 'Action_taken' => $Action, 'Remark' => $Remark); $savecomplaint = $this->purchaseorder_model->Updatecomplaint($save_complaint, $CId); if ($savecomplaint > 0) { echo "Saved Successfully"; } else { echo "Error Occured! Please Try Again"; } } public function DeleteAction_Report() { $DelId = $this->request->getPost('delactionId'); $delete = $this->purchaseorder_model->DeleteAction($DelId); //echo $delete; if ($delete > 0) { echo "Successfully Deleted"; } } public function DeleteRoot_Cause() { $DelId = $this->request->getPost('delactionId'); $delete = $this->purchaseorder_model->DeleteRoot($DelId); //echo $delete; if ($delete > 0) { echo "Successfully Deleted"; } } public function DeleteCounter_Row() { $DelId = $this->request->getPost('delactionId'); $delete = $this->purchaseorder_model->DeleteCounter($DelId); //echo $delete; if ($delete > 0) { echo "Successfully Deleted"; } } /*--------------------------------------------------------------------------------------*/ public function addloadfile() { $uploadfiles=0; $pono = $this->request->getPost('PONO'); $igr = $this->request->getPost('igr'); $new_file_name = $_FILES['file']['name']; $new_file_name = str_replace(" ", "", $new_file_name); $files = $this->purchaseorder_model->getfies($pono); $fcount = 0; foreach ($files as $value) { $lastfile = $value->FilePath; if ($lastfile == $new_file_name) { $fcount++; } } if ($fcount == 0) { if (!empty($new_file_name)) { $Picture = $this->adfile(); if($Picture){ $filelist = array('PONO' => $pono, 'IGRNO' => $igr, 'FilePath' => $Picture); $uploadfiles = $this->purchaseorder_model->insertfile($filelist); if ($uploadfiles > 0) { $response = [ 'message' => 'File updated successfully!', 'data' => $uploadfiles ]; // Return the response as JSON return $this->response->setJSON($response); } } else{ echo " Internal Server Error..!!"; return false; } } }else{ $response = [ 'message' => 'File already uploaded with this name.!!', 'data' => false ]; // Return the response as JSON return $this->response->setJSON($response); } } public function adfile() { $picture = ''; $file = $this->request->getFile('file'); if ($file && $file->isValid()) { $fileName = str_replace(" ", "", $file->getName()); // Define the file system path for uploads $uploadPath = FCPATH . '/public/uploads/BillFiles/'; // 'FCPATH' points to 'public' directory // Check if the directory exists, if not, create it if (!is_dir($uploadPath)) { mkdir($uploadPath, 0777, true); // Create the directory with write permissions } // Log file name and path to check if the upload path is correct error_log("Upload Path: " . $uploadPath); error_log("File Name: " . $file->getName()); // Move the file to the upload directory if ($file->move($uploadPath,$fileName)) { $picture = $fileName; // Get the file name after moving error_log("File uploaded successfully: " . $picture); } else { // Log the error if file move fails error_log("Failed to move file. Error: " . $file->getErrorString()); $picture = ''; } } else { // Log invalid file or failed validation error_log("File is not valid or not uploaded."); $picture = ''; } return $picture; } function splpodata() { $invno = $this->request->getPost('param1'); $invdate = $this->request->getPost('param2'); $VehicleNo = $this->request->getPost('param3'); $CourierNo = $this->request->getPost('param4'); $MaterialRcvdDate = $this->request->getPost('param5'); $PONO = $this->request->getPost('param6'); $IGRNO = $this->request->getPost('param7'); $invdate = format_date($invdate); $MaterialRcvdDate = format_date($MaterialRcvdDate); $CreatedBy = $this->session->get('userId'); $createddt = get_current_date_time(); // $billdetails = $this->purchaseorder_model->getigrno($bill); // //print_r($billdetails); // $PONO = $billdetails[0]['PONO']; // $IGRNo = $billdetails[0]['IGRNO']; $igrMaster = array('VehicleNo' => $VehicleNo, 'DeliveryChellanOrInvoiceNo' => $invno, 'DeliveryChellanDate' => $invdate, 'MaterialRcvdDate' => $MaterialRcvdDate, 'CourierNo' => $CourierNo, 'UpdateBY' => $CreatedBy, 'UpdatedOn' => $createddt); $igrM = $this->purchaseorder_model->updateigrM($PONO, $IGRNO, $igrMaster); if ($igrM > 0) { echo "updated successfully!"; } else { echo " not updated successfully!"; } } function uploadfile() { //alert(); $bill = $this->request->getPost('param1'); $oldfile = $this->request->getPost('param2'); $newfile = $this->request->getFile('file'); $Picture=''; if (!empty($newfile)) { $Picture = $this->adfile(); } else { $Picture = $oldfile; } if($Picture !=''){ $uploadfile = $this->purchaseorder_model->updatefile($bill, $Picture); } if($uploadfile && $uploadfile['afftectedRows'] > 0){ $response = [ 'message' => 'File updated successfully!', 'data' =>$uploadfile['updatedRow'] ]; // Return the response as JSON return $this->response->setJSON($response); } else{ echo "Update Failed (maybe same file provided for update kindly check)..!!"; } } public function add() { $picture = ''; // Check if file is uploaded if ($file = $this->request->getFile('file')) { // Define upload directory and allowed file types $uploadPath = base_url() . 'public/uploads/BillFiles/'; $allowedTypes = '*'; // Set the file name without spaces $fileName = str_replace(" ", "", $file->getName()); // Perform the upload if ($file->isValid() && $file->move($uploadPath, $fileName)) { $picture = $fileName; } else { $error = $file->getErrorString(); // Handle errors as needed } } return $picture; } public function VerifyWithSupplierForPendingPO() { $supplierid = $this->request->getPost('supplierid'); $materialcode = $this->request->getPost('materialcode'); $result = $this->purchaseorder_model->VerifyWithSupplierForPendingPO($supplierid, $materialcode); $materialrate = $this->purchaseorder_model->materialRate($materialcode); $response = ""; if (!empty($result)) { if ($result[0]['PO_count'] > 0) { $PONO = explode(',', $result[0]['PONO']); $response = "There are pending purchase orders with the same supplier. PONO(s):\n" . implode("\n", $PONO); } // else { // $response = "No pending purchase orders found with the same supplier."; // } } echo $response; // return $this->response->setJSON($result); } public function getMaterialUsedPO() { $materialCode = $this->request->getPost('materialCode'); $data = $this->PurchaseOrderLineItemModel->select('t_purchaseorder_lineitem.PONO,t_purchaseorder_master.TotalOrderValue,t_purchaseorder_master.CreatedDate,t_purchaseorder_master.POType,t_purchaseorder_master.CapitalRange,t_supplierdetailsn.SupplierName,t_purchaseorder_master.POType as ReqType') ->where('t_purchaseorder_lineitem.MaterialCode',$materialCode) ->join('t_purchaseorder_master', 't_purchaseorder_lineitem.PONO = t_purchaseorder_master.PONO', 'left') ->join('t_supplierdetailsn', 't_purchaseorder_master.SupplierID = t_supplierdetailsn.SupplierID', 'left') ->groupBy('t_purchaseorder_lineitem.MaterialCode,t_purchaseorder_lineitem.PONO') ->orderBy('t_purchaseorder_master.CreatedDate' , 'desc') ->findAll(); echo json_encode($data); } public function getSupplierUsedPO() { $supplier_id = $this->request->getPost('supplier_id'); $data = $this->purchaseorder_model->select('PONO,TotalOrderValue,CreatedDate,POType,CapitalRange,t_supplierdetailsn.SupplierName') ->where('t_purchaseorder_master.SupplierID',$supplier_id) ->join('t_supplierdetailsn', 't_purchaseorder_master.SupplierID = t_supplierdetailsn.SupplierID', 'left') ->orderBy('t_purchaseorder_master.CreatedDate' , 'desc') ->findAll(); echo json_encode($data); } /*--------------------------------------------------------------------------------------*/ }