ria/app/Controllers/Assetdetails.php

511 lines
17 KiB
PHP

<?php
namespace App\Controllers;
use App\Controllers\BaseController;
use App\Models\Assetdetails_model;
use CodeIgniter\Validation\Exceptions\ValidationException;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
/**
* Module : Asset
* Assetdetails Class to control all asset related operations.
* @author : Venba
* @version : 1.1
* @since : 15 Feb 2016
* @example : Revised at 15th april 2024
*/
class Assetdetails extends BaseController
{
protected $assetdetails_model;
protected $session;
/**
* This is default constructor of the class
*/
public function __construct()
{
parent::__construct();
$this->assetdetails_model = new Assetdetails_model();
$this->session = session();
helper('form'); //$this->load->library('form_validation');
$this->isLoggedIn();
//
}
/**
* This function used to load the first screen of the user
*/
public function index()
{
$this->global['pageTitle'] = 'Asset Details';
$this->loadViews("assetListing", $this->global, NULL, NULL);
}
/**
* This function is used to load the Supplier list
*/
function assetListing()
{
$data['userRecords'] = $this->assetdetails_model->assetListing();
$this->global['pageTitle'] = 'Asset List';
//print_r($data);die();
$this->loadViews("assetListing", $this->global, $data, NULL);
}
/**
* This function is used to load the add new supplier */
function addasset()
{
$data['AssetStatus'] = $this->assetdetails_model->getConfigValue('C015');
$data['po'] = $this->assetdetails_model->getPO();
//print_r($data);die();
$this->global['pageTitle'] = 'Add Asset';
$this->loadViews("addasset", $this->global, $data, NULL);
}
function getpodetails()
{
$PO = $this->request->getPost('PONO');
$data = $this->assetdetails_model->getpodetails($PO);
//print_r($data);die();
$HTML = "<option value='0'>SelectMaterialCode</option>";
if (count($data) > 0) {
for ($j = 0; $j < count($data); $j++) {
$Code = $data[$j]->LineItemNo;
$Name = $data[$j]->MaterialCode;
$HTML .= "<option value='" . $Code . "'>" . $Code . "-" . $Name . "</option>";
}
}
//echo $HTML;
die(json_encode(array($HTML)));
//echo json_encode($data);
//die();
}
function getline()
{
$line = $this->request->getPost('line');
$type = $this->assetdetails_model->gettyp($line);
$data = '';
if (!empty($type)) {
foreach ($type as $item) {
$data = $item->POType;
}
}
if ($data == 'SERVICE') {
$ser = $this->assetdetails_model->getlineitemser($line);
} elseif ($data == 'REVENUE') {
$ser = $this->assetdetails_model->getlineitemre($line);
} elseif ($data == 'IMPORT') {
$ser = $this->assetdetails_model->getlineitemimport($line);
} elseif ($data == 'CAPITAL') {
$ser = $this->assetdetails_model->getlineitemcap($line);
}
//print_r($ser);die();
//print_r($data);die();
//$data = get_date_time_format($data);
echo json_encode($ser);
die();
}
// function getlin(){
// $line = $this->request->getPost('line');
// }
/* Validation for Department Dropdown
*/
function Department_validate($selectValue)
{
//echo 'select_validate method called';
// 'none' is the first option and the text says something like "-Choose one-"
if ($selectValue == '-1') {
$this->validator->setError('Department_validate', 'Please Select Department.');
return false;
} else // user picked something
{
return true;
}
}
/* Validation for Supplier Dropdown
*/
function Supplier_validate($selectValue)
{
//echo 'select_validate method called';
// 'none' is the first option and the text says something like "-Choose one-"
if ($selectValue == '-1') {
$this->validator->setError('Supplier_validate', 'Please Select Supplier.');
return false;
} else // user picked something
{
return true;
}
}
/* Validation for Supplier Dropdown
*/
function Asset_validate($selectValue)
{
//echo 'select_validate method called';
// 'none' is the first option and the text says something like "-Choose one-"
if ($selectValue == '-1') {
$this->validator->setError('Asset_validate', 'Please Select Asset Status.');
return false;
} else // user picked something
{
return true;
}
}
/**
* This function is used to add new user to the system
*/
function addNewasset()
{
$this->validator->setRules([
'AssetName' => 'trim|required',
'Department' => 'trim|callback_Department_validate',
'Location' => 'trim|required',
'User' => 'trim|required',
'SupplierName' => 'trim|callback_Supplier_validate',
'DateOfCommission' => 'trim|required',
'Assetvalue' => 'trim|required',
'AssetStatus' => 'trim|callback_Asset_validate'
]);
$this->validator->setMessage([
'AssetName' => [
'required' => 'Please enter Asset Name.'
],
'Department' => [
'Department_validate' => 'Please select a valid Department.'
],
'Location' => [
'required' => 'Please enter Location.'
],
'User' => [
'required' => 'Please enter User.'
],
'SupplierName' => [
'Supplier_validate' => 'Please select a valid Supplier.'
],
'DateOfCommission' => [
'required' => 'Please enter Date of Commission.'
],
'Assetvalue' => [
'required' => 'Please enter Asset Value.'
],
'AssetStatus' => [
'Asset_validate' => 'Please select a valid Asset Status.'
]
]);
if (!$this->validator->run()) {
$this->addasset();
} else {
$assetName = $this->request->getPost('AssetName');
$AssetName = (!empty($assetName)) ? strtoupper((string)$assetName) : "";
$Description = $this->request->getPost('Description');
$Department = $this->request->getPost('AssetDept');
$Location = $this->request->getPost('Location');
$User = $this->request->getPost('User');
$SupplierName = $this->request->getPost('SupplierName');
$DateOfCommission = $this->request->getPost('DateOfCommission');
$CreatedBy = $this->session->get('userId');
$DateOfPurchase = $this->request->getPost('DateOfPurchase');
if ($DateOfPurchase != '') {
$DOpurchase = get_date_time_format($DateOfPurchase);
}
$AssetValue = $this->request->getPost('Assetvalue');
if ($DateOfCommission != '') {
$DOCommission = get_date_time_format($DateOfCommission);
//$DOCommission= get_date_time_format($DateOfCommission);
}
$AssetStatus = $this->request->getPost('AssetStatus');
$Remarks = $this->request->getPost('Remarks');
$PONO = $this->request->getPost('PONO');
$lineitem = $this->request->getPost('lineitem');
$MaterialCode = $this->request->getPost('MaterialCode');
$Quantity = $this->request->getPost('Quantity');
$chked = $this->request->getPost('isactive');
if ($chked != '') {
$IsActive = '1';
} else {
$IsActive = '0';
}
$asset = array();
$asset = array('AssetName' => $AssetName, 'Description' => $Description, 'DEPCode' => $Department, 'Location' => $Location, 'UserName' => $User, 'SupplierCode' => $SupplierName, 'DateOfPurchase' => $DOpurchase, 'DateOfCommison' => $DOCommission, 'AssetValue' => $AssetValue, 'AssetStatus' => $AssetStatus, 'IsActive' => $IsActive, 'Remarks' => $Remarks, 'CreatedBy' => $CreatedBy, 'PONO' => $PONO, 'POLineItem' => $lineitem, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity);
$result = $this->assetdetails_model->addNewasset($asset);
if ($result > 0) {
// $this->session->set_flashdata('success', 'New Asset created successfully');
echo "<script>alert('Asset Created successfully!');</script>";
redirect('assetListing', 'refresh');
} else {
echo "<script>alert('Asset Not Created!');</script>";
redirect('assetListing', 'refresh');
}
}
}
/**
* This function is used load user edit information
* @param number $userId : Optional : This is user id
*/
/*function ech(){
echo $this->request->getPost('Asset_Code');
}*/
function editOldasset($AssetCode = '', $PO = '')
{
$SupplierName = $this->request->getPost('SupplierName');
$AssetStatus = $this->request->getPost('AssetStatus');
$Department = $this->request->getPost('Department');
if ($AssetCode == '') {
$AssetID = $_GET['AssetID'];
} else {
$AssetID = $AssetCode;
}
//echo $AssetID;
$data['assetList'] = $this->assetdetails_model->getAssetDetails($AssetID);
// $data['SupplierList'] = $this->assetdetails_model->getSupplierName($SupplierName);
// $data['DepartmentList'] = $this->assetdetails_model->getDepartment($Department);
$data['AssetStatusList'] = $this->assetdetails_model->getConfigValue('C015');
$data['PO'] = $this->assetdetails_model->getPO($PO);
//print_r($data);die();
$this->global['pageTitle'] = 'Edit Asset';
$this->loadViews("editOldasset", $this->global, $data, NULL);
}
/**
* This function is used to edit the user information
*/
function editasset()
{
$Asset_Code = $this->request->getPost('AssetCode');
$this->validator->setRules([
'AssetName' => 'trim|required',
'Description' => 'trim|required',
'Department' => 'trim|callback_Department_validate',
'Location' => 'trim|required',
'User' => 'trim|required',
'SupplierName' => 'trim|callback_Supplier_validate',
'DateOfCommission' => 'trim|required',
'Assetvalue' => 'trim|required',
'AssetStatus' => 'trim|callback_Asset_validate'
]);
$this->validator->setMessage([
'AssetName' => [
'required' => 'Please enter Asset Name.'
],
'Description' => [
'required' => 'Please enter Description.'
],
'Department' => [
'Department_validate' => 'Please select a valid Department.'
],
'Location' => [
'required' => 'Please enter Location.'
],
'User' => [
'required' => 'Please enter User.'
],
'SupplierName' => [
'Supplier_validate' => 'Please select a valid Supplier.'
],
'DateOfCommission' => [
'required' => 'Please enter Date of Commission.'
],
'Assetvalue' => [
'required' => 'Please enter Asset Value.'
],
'AssetStatus' => [
'Asset_validate' => 'Please select a valid Asset Status.'
]
]);
if ($this->validator->run() == FALSE) {
$this->editOldasset($Asset_Code);
} else {
$Asset_Code = $this->request->getPost('AssetCode');
$assetName = $this->request->getPost('AssetName');
$AssetName = (!empty($assetName)) ? strtoupper((string)$assetName) : '';
$Description = $this->request->getPost('Description');
$Department = $this->request->getPost('AssetDept');
$Location = $this->request->getPost('Location');
$User = $this->request->getPost('User');
$SupplierName = $this->request->getPost('SupplierName');
$DateOfPurchase = $this->request->getPost('DateOfPurchase');
if ($DateOfPurchase != '') {
$DOpurchase = get_date_time_format($DateOfPurchase);
}
$DateOfCommission = $this->request->getPost('DateOfCommission');
$UpdatedBy = $this->session->get('userId');
$Assetvalue = $this->request->getPost('Assetvalue');
if ($DateOfCommission != '') {
$DOCommission = get_date_time_format($DateOfCommission);
}
$AssetStatus = $this->request->getPost('AssetStatus');
$Remarks = $this->request->getPost('Remarks');
$PONO = $this->request->getPost('PONO');
$lineitem = $this->request->getPost('lineitem');
$MaterialCode = $this->request->getPost('MaterialCode');
$Quantity = $this->request->getPost('Quantity');
$chked = $this->request->getPost('isactive');
if ($chked != '') {
$IsActive = '1';
} else {
$IsActive = '0';
}
$asset = array();
$asset = array('AssetName' => $AssetName, 'Description' => $Description, 'DEPCode' => $Department, 'Location' => $Location, 'UserName' => $User, 'SupplierCode' => $SupplierName, 'DateOfPurchase' => $DOpurchase, 'DateOfCommison' => $DOCommission, 'AssetValue' => $Assetvalue, 'AssetStatus' => $AssetStatus, 'IsActive' => $IsActive, 'Remarks' => $Remarks, 'UpdatedBy' => $UpdatedBy, 'PONO' => $PONO, 'POLineItem' => $lineitem, 'MaterialCode' => $MaterialCode, 'Quantity' => $Quantity);
$result = $this->assetdetails_model->editasset($asset, $Asset_Code);
if ($result == true) {
echo "<script>alert('Asset updated successfully!');</script>";
redirect('assetListing', 'refresh');
} else {
echo "<script>alert('Asset Not updated !');</script>";
redirect('assetListing', 'refresh');
}
}
}
function exportasset()
{
$data = $this->assetdetails_model->export_excel();
$file_name = 'Asset_details' .' '. '.xls';
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->mergeCells('G3:M3');
$sheet->getStyle('G3')->getAlignment()->setHorizontal('center');
$sheet->setTitle('Asset Details');
$headers = [
'G3' => 'RESICO Asset Details',
'C5' => 'AssetCode',
'D5' => 'AssetName',
'E5' => 'AssetDescription',
'F5' => 'DepartmentName',
'G5' => 'Location',
'H5' => 'PONO',
'I5' => 'POLineItem',
'J5' => 'MaterialName',
'K5' => 'Quanity',
'L5' => 'UserName',
'M5' => 'SupplierName',
'N5' => 'DateOfPurchase',
'O5' => 'DateOfCommison',
'P5' => 'AssetValue',
'Q5' => 'AssetStatus',
'R5' => 'IsActive',
'S5' => 'Remarks',
'T5' => 'CreatedBy',
'U5' => 'UpdatedBy'
];
foreach ($headers as $cell => $value) {
$sheet->setCellValue($cell, $value);
$sheet->getStyle($cell)->getFont()->setSize($cell == 'G3' ? 14 : 12);
$sheet->getStyle($cell)->getFont()->setBold(true);
}
if($data){
$row = 6; // Start from row 6
foreach ($data as $d) {
$col = 'A'; // Start from column A
foreach ($d as $value) {
$sheet->setCellValue($col . $row, $value);
$col++;
}
$row++;
}
}
// $writer = new Xlsx($spreadsheet);
// $writer->save($file_name);
// header("Content-Type: application/vnd.ms-excel");
// header('Content-Disposition: attachment; filename="' . basename($file_name) . '"');
// header('Expires: 0');
// header('Cache-Control: must-revalidate');
// header('Pragma: public');
// header('Content-Length:' . filesize($file_name));
// flush();
// readfile($file_name);
// exit;
ob_clean();
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'. $file_name .'"');
header('Cache-Control: max-age=0');
header('Expires: 0');
header('Pragma: public');
$writer->save('php://output');
exit;
}
}