1627 lines
68 KiB
PHP
1627 lines
68 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Controllers\BaseController;
|
|
|
|
use CodeIgniter\Validation\Exceptions\ValidationException;
|
|
|
|
use App\Models\Costcenter_model;
|
|
use App\Models\Dashboard_model;
|
|
use App\Models\Employeedetails_model;
|
|
use App\Models\User_model;
|
|
use App\Models\Zohobooks_api_model;
|
|
require_once 'vendor/autoload.php';
|
|
|
|
/**
|
|
* Module : User
|
|
* User Class to control all user related operations.
|
|
* @author : Kishor
|
|
* @version : 1.1
|
|
* @since : 15 November 2016
|
|
* @example : Revised at 15th april 2024
|
|
*/
|
|
class User extends BaseController
|
|
{
|
|
protected $costcenter_model;
|
|
protected $dahsboard_Model;
|
|
protected $employeedetails_model;
|
|
protected $user_model;
|
|
protected $session;
|
|
|
|
/**
|
|
* This is default constructor of the class
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
$this->dahsboard_Model = new Dashboard_model();
|
|
$this->costcenter_model = new Costcenter_model();
|
|
$this->employeedetails_model = new employeedetails_model();
|
|
$this->user_model = new User_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'] = 'Dashboard';
|
|
|
|
log_message('error', '#####Dashboard session name : ' . $this->session->get('name'));
|
|
|
|
$data['EmpCount'] = $this->employeedetails_model->getEmployeeCount();
|
|
|
|
$data['UserCount'] = $this->dahsboard_Model->getUserCount();
|
|
|
|
$data['totalpurchaseorder'] = $this->dahsboard_Model->totalpurchaseorder();
|
|
|
|
$data['totalordervalue'] = $this->dahsboard_Model->totalordervalue();
|
|
|
|
$data['pendingpo'] = $this->dahsboard_Model->pendingpo();
|
|
|
|
$data['totalimportpo'] = $this->dahsboard_Model->totalimportpo();
|
|
|
|
$data['details'] = $this->dahsboard_Model->reqdetail();
|
|
|
|
$data['pending_details'] = $this->dahsboard_Model->req_pending();
|
|
|
|
$data['serviceprogress'] = $this->dahsboard_Model->serviceprogress();
|
|
|
|
$data['revenueprogress'] = $this->dahsboard_Model->revenueprogress();
|
|
|
|
$data['importprogress'] = $this->dahsboard_Model->importprogress();
|
|
|
|
$data['capitalprogress'] = $this->dahsboard_Model->capitalprogress();
|
|
|
|
|
|
//month-wise area chart
|
|
$data['getTotalServicePoCount'] = $this->dahsboard_Model->getTotalServicePoCount();
|
|
|
|
$data['getTotalimportPoCount'] = $this->dahsboard_Model->getTotalimportPoCount();
|
|
|
|
$data['getTotalcapitalPoCount'] = $this->dahsboard_Model->getTotalcapitalPoCount();
|
|
|
|
$data['getTotalrevenuePoCount'] = $this->dahsboard_Model->getTotalrevenuePoCount();
|
|
|
|
|
|
//dashboard pie chart
|
|
$data['importbudgt'] = $this->dahsboard_Model->importbudgt();
|
|
|
|
$data['servicebudgt'] = $this->dahsboard_Model->servicebudgt();
|
|
|
|
$data['revenuebudgt'] = $this->dahsboard_Model->revenuebudgt();
|
|
|
|
$data['capitalbud'] = $this->dahsboard_Model->capitalbud();
|
|
|
|
$data['typebal'] = $this->dahsboard_Model->typebal();
|
|
|
|
|
|
/* HR DASHBOARD Controller Start*/
|
|
$data['totemp'] = $this->dahsboard_Model->totemp();
|
|
|
|
$data['totloan'] = $this->dahsboard_Model->totloan();
|
|
|
|
$data['totpay'] = $this->dahsboard_Model->totpay();
|
|
|
|
$data['totrec'] = $this->dahsboard_Model->totrec();
|
|
|
|
$data['emplist'] = $this->dahsboard_Model->emplist();
|
|
|
|
|
|
$date = $this->request->getPost("id");
|
|
$dates = date('Y-m');
|
|
$date = $dates . '-01';
|
|
|
|
$dat = date('d', strtotime("-1 days"));
|
|
|
|
$WH = 'WH' . date('j', strtotime("-1 days"));
|
|
|
|
$yesterday = $this->dahsboard_Model->attyesterday($WH, $date);
|
|
|
|
$valuess = 0;
|
|
foreach ($yesterday as $weekda => $value) {
|
|
|
|
if ($value[$WH] == 0) {
|
|
|
|
$valuess++;
|
|
}
|
|
}
|
|
|
|
$data['today'] = $valuess;
|
|
|
|
$daydate = date('Y-m', strtotime($date));
|
|
|
|
$daydate = $daydate . '-01';
|
|
|
|
$yesterday = $this->dahsboard_Model->attyesterday($WH, $daydate);
|
|
|
|
$values = 0;
|
|
$absEmp = array();
|
|
|
|
|
|
foreach ($yesterday as $weekda => $value) {
|
|
|
|
if ($value[$WH] == 0) {
|
|
|
|
$values++;
|
|
$absendId = $value['EmpID'];
|
|
$absendName = $value['FirstName'];
|
|
$absEmp[] = $absendId . "-" . $absendName; //absend empid and name list
|
|
}
|
|
}
|
|
|
|
|
|
$data['today'] = sizeof($absEmp);
|
|
|
|
$data['abs_name'] = $absEmp;
|
|
|
|
$OT = 'OT' . date('j', strtotime($date));
|
|
|
|
$CUR_month = date('t');
|
|
|
|
$toDayEmployee = $this->dahsboard_Model->yesterdayAllPersentEmpSalary($WH, $OT, $daydate);
|
|
|
|
$EmpID = 0;
|
|
|
|
$employeeSalary = 0;
|
|
|
|
foreach ($toDayEmployee as $value) {
|
|
$values = 0;
|
|
$totalothour = 0;
|
|
|
|
if ($value[$WH] != 0) {
|
|
|
|
$totalothour = $value[$OT];
|
|
|
|
$values = 1;
|
|
|
|
$Empid = $value['EmpID'];
|
|
|
|
$totalEmployeePersent = $this->dahsboard_Model->persentEmployeeDetails($Empid);
|
|
|
|
if (!empty($totalEmployeePersent)) {
|
|
|
|
$HRA_Amount = $totalEmployeePersent[0]->HRA_Amount;
|
|
|
|
$Basic_Pay = $totalEmployeePersent[0]->Basic_Pay;
|
|
|
|
$totalsalary = $totalEmployeePersent[0]->TotalSalary;
|
|
|
|
$dayFoodAmt = $totalEmployeePersent[0]->Food_Allowances;
|
|
|
|
$Food_Allowances = $dayFoodAmt * $values;
|
|
|
|
$daySalary = $Basic_Pay / $CUR_month;
|
|
/**per day salary working hour**/
|
|
|
|
$dayHra = $HRA_Amount / $CUR_month;
|
|
/** per day hra amount **/
|
|
|
|
$onehoursSalary = ($daySalary + $dayHra) / 8;
|
|
/**one hour salay ot calculation**/
|
|
if ($totalothour != 0)
|
|
/** if ot not equal zero **/
|
|
{
|
|
$totSalayOT = $totalothour * $onehoursSalary;
|
|
} else {
|
|
$totSalayOT = 0;
|
|
}
|
|
$currentDaySalary = $daySalary * $values;
|
|
/** current day salary working days calculation**/
|
|
|
|
$currentDayHra = $dayHra * $values;
|
|
/** total working days hra calculations**/
|
|
|
|
$currentDatePF = $currentDaySalary + $currentDayHra + $totSalayOT;
|
|
/** current date pf calculation**/
|
|
if ($totalsalary <= 20000) {
|
|
|
|
$esiAmount = $currentDatePF * 1.75 / 100;
|
|
/** esiamount not elgiable for 20000 **/
|
|
} else {
|
|
$esiAmount = 0;
|
|
}
|
|
$pfAmount = $currentDaySalary * 12 / 100;
|
|
/** pf amount per day**/
|
|
|
|
|
|
$salaryInCurrentdays = $currentDaySalary + $totSalayOT + $currentDayHra + $Food_Allowances;
|
|
$salaryInCurrentday = $salaryInCurrentdays - ($esiAmount + $pfAmount);
|
|
$employeeSalary += round($salaryInCurrentday);
|
|
}
|
|
}
|
|
}
|
|
|
|
//$salaryInCurrentday++;
|
|
|
|
$data['employeeSalary'] = $employeeSalary;
|
|
|
|
$working = array();
|
|
$overtime = array();
|
|
//$holid = array();
|
|
for ($i = 1; $i <= $dat; $i++)
|
|
{
|
|
$Working[] = 'WH' . $i;
|
|
$overtime[] = 'OT' . $i;
|
|
|
|
$CUR_month = date('t');
|
|
|
|
// foreach ($holiday as $value)
|
|
// {
|
|
// //$holid []= 'WH'.$value;
|
|
// if($i==$value) {
|
|
// $holid []=$value;
|
|
// }
|
|
// }
|
|
|
|
}
|
|
|
|
$WH = implode(",", $Working);
|
|
|
|
$OT = implode(",", $overtime);
|
|
$salarycurrentdate = array();
|
|
|
|
$toDayEmployee = $this->dahsboard_Model->dayAllPersentEmpSalary($WH, $OT, $date);
|
|
|
|
$totalSalary = 0;
|
|
$working = explode(",", $WH);
|
|
$overtime = explode(",", $OT);
|
|
foreach ($toDayEmployee as $value) {
|
|
$values = 0;
|
|
foreach ($working as $work) {
|
|
// foreach ($overtime as $extra) {
|
|
|
|
if ($value[$work] != 0 || $value['OT' . substr($work, 2)] != 0) {
|
|
$totalothour = $value['OT' . substr($work, 2)];
|
|
|
|
$values = 1;
|
|
|
|
$Empid = $value['EmpID'];
|
|
|
|
$totalEmployeePersent = $this->dahsboard_Model->persentEmployeeDetails($Empid);
|
|
if (!empty($totalEmployeePersent)) {
|
|
|
|
$HRA_Amount = $totalEmployeePersent[0]->HRA_Amount;
|
|
$Basic_Pay = $totalEmployeePersent[0]->Basic_Pay;
|
|
$totalsalary = $totalEmployeePersent[0]->TotalSalary;
|
|
$dayFoodAmt = $totalEmployeePersent[0]->Food_Allowances;
|
|
//$allowances =$totalEmployeePersent[0]->Allowances;
|
|
|
|
// $Allowances = $allowances * $values;
|
|
|
|
$Food_Allowances = $dayFoodAmt * $values;
|
|
|
|
$daySalary = $Basic_Pay / $CUR_month;
|
|
/**per day salary working hour**/
|
|
|
|
$dayHra = $HRA_Amount / $CUR_month;
|
|
/** per day hra amount **/
|
|
|
|
$onehoursSalary = ($daySalary + $dayHra) / 8;
|
|
/**one hour salay ot calculation**/
|
|
$totSalayOT = ($totalothour != 0) ? $totalothour * $onehoursSalary : 0;
|
|
/** if ot not equal zero **/
|
|
|
|
$currentDaySalary = $daySalary * $values;
|
|
/** current day salary working days calculation**/
|
|
|
|
$currentDayHra = $dayHra * $values;
|
|
/** total working days hra calculations**/
|
|
|
|
$currentDatePF = $currentDaySalary + $currentDayHra + $totSalayOT;
|
|
/** current date pf calculation**/
|
|
|
|
$esiAmount = ($totalsalary <= 20000) ? $currentDatePF * 1.75 / 100 : 0;
|
|
/** esiamount not elgiable for 20000 **/
|
|
|
|
$pfAmount = $currentDaySalary * 12 / 100;
|
|
/** pf amount per day**/
|
|
|
|
$salaryInCurrentdays = $currentDaySalary + $totSalayOT + $currentDayHra + $Food_Allowances;
|
|
|
|
$salaryInCurrentday = $salaryInCurrentdays - ($esiAmount + $pfAmount);
|
|
$totalSalarys = $totalSalary + $salaryInCurrentday;
|
|
|
|
$totalSalary = round($totalSalarys);
|
|
// $salarycurrentdate[] = $salaryInCurrentday;;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$data['totalSalary'] = $totalSalary;
|
|
$this->loadViews("dashboard", $this->global, $data, NULL);
|
|
}
|
|
|
|
/*date click on day salary,absent name, total absent display*/
|
|
|
|
function dateFunctionChangeVales()
|
|
{
|
|
|
|
|
|
|
|
$date = $this->request->getPost("id");
|
|
$dates = date('Y-m');
|
|
$date = $dates . '-01';
|
|
|
|
// $dat = date('d', strtotime("-1 days"));
|
|
|
|
$WH = 'WH' . date('j', strtotime("-1 days"));
|
|
|
|
$yesterday = $this->dahsboard_Model->attyesterday($WH, $date);
|
|
|
|
$values = 0;
|
|
foreach ($yesterday as $weekda => $value) {
|
|
|
|
if ($value[$WH] == 0) {
|
|
|
|
$values++;
|
|
}
|
|
}
|
|
|
|
$data['values'] = $values;
|
|
|
|
|
|
|
|
|
|
$date = $this->request->getPost("id");
|
|
|
|
$daydate = format_date($date,0,'Y-m');
|
|
|
|
$daydate = $daydate . '-01';
|
|
|
|
$WH = 'WH' . format_date($date,0,'j');
|
|
|
|
$yesterday = $this->dahsboard_Model->attyesterday($WH, $daydate);
|
|
|
|
//$absEmp =array($absEmp);
|
|
$values = 0;
|
|
$absEmp = array();
|
|
|
|
foreach ($yesterday as $weekda => $value) {
|
|
|
|
if ($value[$WH] == 0) {
|
|
|
|
$values++;
|
|
$absendId = $value['EmpID'];
|
|
$absendName = $value['FirstName'];
|
|
$absEmp[] = $absendId . "-" . $absendName; //absend empid and name list
|
|
}
|
|
}
|
|
|
|
|
|
$data['today'] = $values;
|
|
$data['absname'] = $absEmp;
|
|
|
|
$OT = 'OT' .format_date($date,0,'j');
|
|
|
|
$CUR_month = date('t');
|
|
|
|
$toDayEmployee = $this->dahsboard_Model->dayAllPersentEmpSalary($WH, $OT, $daydate);
|
|
//$EmpID = $toDayEmployee[0]->EmpID;
|
|
|
|
$EmpID = 0;
|
|
|
|
$employeeSalary = 0;
|
|
|
|
foreach ($toDayEmployee as $value) {
|
|
$values = 0;
|
|
$totalothour = 0;
|
|
|
|
if ($value[$WH] != 0) {
|
|
|
|
$totalothour = $value[$OT];
|
|
|
|
$values = 1;
|
|
|
|
$Empid = $value['EmpID'];
|
|
|
|
$totalEmployeePersent = $this->dahsboard_Model->persentEmployeeDetails($Empid);
|
|
|
|
if (!empty($totalEmployeePersent)) {
|
|
|
|
$HRA_Amount = $totalEmployeePersent[0]->HRA_Amount;
|
|
$Basic_Pay = $totalEmployeePersent[0]->Basic_Pay;
|
|
$totalsalary = $totalEmployeePersent[0]->TotalSalary;
|
|
$dayFoodAmt = $totalEmployeePersent[0]->Food_Allowances;
|
|
//$allowances =$totalEmployeePersent[0]->Allowances;
|
|
|
|
//$Allowances = $allowances * $values;
|
|
$Food_Allowances = $dayFoodAmt * $values;
|
|
|
|
$daySalary = $Basic_Pay / $CUR_month;
|
|
/**per day salary working hour**/
|
|
|
|
$dayHra = $HRA_Amount / $CUR_month;
|
|
/** per day hra amount **/
|
|
|
|
$onehoursSalary = ($daySalary + $dayHra) / 8;
|
|
/**one hour salay ot calculation**/
|
|
if ($totalothour != 0)
|
|
/** if ot not equal zero **/
|
|
{
|
|
$totSalayOT = $totalothour * $onehoursSalary;
|
|
} else {
|
|
$totSalayOT = 0;
|
|
}
|
|
$currentDaySalary = $daySalary * $values;
|
|
/** current day salary working days calculation**/
|
|
|
|
$currentDayHra = $dayHra * $values;
|
|
/** total working days hra calculations**/
|
|
|
|
$currentDatePF = $currentDaySalary + $currentDayHra + $totSalayOT;
|
|
/** current date pf calculation**/
|
|
|
|
$esiAmount = ($totalsalary <= 20000) ? $currentDatePF * 1.75 / 100 : 0;
|
|
/** esiamount not elgiable for 20000 **/
|
|
|
|
$pfAmount = $currentDaySalary * 12 / 100;
|
|
/** pf amount per day**/
|
|
|
|
|
|
$salaryInCurrentdays = $currentDaySalary + $totSalayOT + $currentDayHra + $Food_Allowances;
|
|
$salaryInCurrentday = $salaryInCurrentdays - ($esiAmount + $pfAmount);
|
|
$employeeSalary += round($salaryInCurrentday);
|
|
}
|
|
}
|
|
}
|
|
|
|
//$salaryInCurrentday++;
|
|
|
|
$data['employeeSalary'] = $employeeSalary;
|
|
|
|
$working = array();
|
|
$overtime = array();
|
|
//$holid = array();
|
|
$len = format_date($date,0,'d');
|
|
for ($i = 1; $i <= $len; $i++) //echo $dat; die;
|
|
{
|
|
|
|
|
|
$Working[] = 'WH' . $i;
|
|
$overtime[] = 'OT' . $i;
|
|
|
|
$CUR_month = date('t');
|
|
|
|
// foreach ($holiday as $value)
|
|
// {
|
|
// //$holid []= 'WH'.$value;
|
|
// if($i==$value) {
|
|
// $holid []=$value;
|
|
// }
|
|
// }
|
|
|
|
}
|
|
|
|
$WH = implode(",", $Working);
|
|
|
|
$OT = implode(",", $overtime);
|
|
$salarycurrentdate = array();
|
|
|
|
$toDayEmployee = $this->dahsboard_Model->dayAllPersentEmpSalary($WH, $OT, $daydate);
|
|
|
|
$totalSalary = 0;
|
|
$working = explode(",", $WH);
|
|
$overtime = explode(",", $OT);
|
|
foreach ($toDayEmployee as $value) {
|
|
$values = 0;
|
|
foreach ($working as $work) {
|
|
//foreach ($overtime as $extra) {
|
|
|
|
if ($value[$work] != 0 || $value['OT' . substr($work, 2)] != 0) {
|
|
$totalothour = $value['OT' . substr($work, 2)];
|
|
|
|
$values = 1;
|
|
|
|
$Empid = $value['EmpID'];
|
|
|
|
$totalEmployeePersent = $this->dahsboard_Model->persentEmployeeDetails($Empid);
|
|
if (!empty($totalEmployeePersent)) {
|
|
|
|
$HRA_Amount = $totalEmployeePersent[0]->HRA_Amount;
|
|
$Basic_Pay = $totalEmployeePersent[0]->Basic_Pay;
|
|
$totalsalary = $totalEmployeePersent[0]->TotalSalary;
|
|
$dayFoodAmt = $totalEmployeePersent[0]->Food_Allowances;
|
|
//$allowances =$totalEmployeePersent[0]->Allowances;
|
|
|
|
// $Allowances = $allowances * $values;
|
|
|
|
$Food_Allowances = $dayFoodAmt * $values;
|
|
|
|
$daySalary = $Basic_Pay / $CUR_month;
|
|
/**per day salary working hour**/
|
|
|
|
$dayHra = $HRA_Amount / $CUR_month;
|
|
/** per day hra amount **/
|
|
|
|
$onehoursSalary = ($daySalary + $dayHra) / 8;
|
|
/**one hour salay ot calculation**/
|
|
|
|
$totSalayOT = ($totalothour != 0) ? $totalothour * $onehoursSalary : 0;
|
|
/** if ot not equal zero **/
|
|
|
|
$currentDaySalary = $daySalary * $values;
|
|
/** current day salary working days calculation**/
|
|
|
|
$currentDayHra = $dayHra * $values;
|
|
/** total working days hra calculations**/
|
|
|
|
$currentDatePF = $currentDaySalary + $currentDayHra + $totSalayOT;
|
|
/** current date pf calculation**/
|
|
|
|
$esiAmount = ($totalsalary <= 20000) ? $currentDatePF * 1.75 / 100 : 0;
|
|
/** esiamount not elgiable for 20000 **/
|
|
|
|
$pfAmount = $currentDaySalary * 12 / 100;
|
|
/** pf amount per day**/
|
|
|
|
$salaryInCurrentdays = $currentDaySalary + $totSalayOT + $currentDayHra + $Food_Allowances;
|
|
|
|
$salaryInCurrentday = $salaryInCurrentdays - ($esiAmount + $pfAmount);
|
|
$totalSalarys = $totalSalary + $salaryInCurrentday;
|
|
|
|
$totalSalary = round($totalSalarys);
|
|
// $salarycurrentdate[] = $salaryInCurrentday;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$data['totalSalary'] = $totalSalary;
|
|
|
|
// }
|
|
echo json_encode($data);
|
|
}
|
|
|
|
|
|
/*this function uesd to finance startdate */
|
|
public function getFinancialStartDate()
|
|
{
|
|
|
|
$CURMONTH = date('n');
|
|
$CURYEAR = date('Y');
|
|
$FINYEAR = 0;
|
|
if ($CURMONTH >= 4) {
|
|
$FINYEAR = $CURYEAR;
|
|
} else {
|
|
$FINYEAR = $CURYEAR - 1;
|
|
}
|
|
|
|
$dateInString = $FINYEAR . '-4-1';
|
|
$result = date_create($dateInString);
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/*this function uesd to finance EndDate */
|
|
public function getFinancialEndDate()
|
|
{
|
|
$CURMONTH = date('n');
|
|
$CURYEAR = date('Y');
|
|
$FINYEAR = 0;
|
|
if ($CURMONTH < 4) {
|
|
$FINYEAR = $CURYEAR;
|
|
} else {
|
|
$FINYEAR = $CURYEAR + 1;
|
|
}
|
|
|
|
$dateInString = $FINYEAR . '-3-31';
|
|
$result = date_create($dateInString);
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
|
|
/*this function used to speedometer month emp performances display*/
|
|
function monthattendance($empID = '')
|
|
{
|
|
|
|
$date = date('Y-m');
|
|
|
|
$dates = $date . '-01';
|
|
$EmpID = '';
|
|
if (empty($empID)) {
|
|
$EmpID = $this->request->getPost('id');
|
|
} else {
|
|
$EmpID = $empID;
|
|
}
|
|
|
|
$monthabs = $this->dahsboard_Model->attendance($EmpID, $dates);
|
|
$persent_month = date('t'); //current month of days 31
|
|
$values = array();
|
|
$otvalues = array();
|
|
|
|
$weekdays = array();
|
|
$otHours = array();
|
|
$date = date('j'); //current month current date
|
|
|
|
$CURDATE = date('d'); //current month current date
|
|
|
|
$CUR_month = date('t'); //current month of days 31
|
|
|
|
$CURYEAR = date('Y');
|
|
$CURMONTH = date('m');
|
|
|
|
$datejoin = $this->dahsboard_Model->joindate($EmpID);
|
|
$DateofJoiningInString = $datejoin[0]->DateofJoining;
|
|
$DateofJoining = date_create($DateofJoiningInString);
|
|
// $doj_month = date_format($DateofJoining, "n");
|
|
// $doj_year = date_format($DateofJoining, "Y");
|
|
// $doj_day = date_format($DateofJoining, "j");
|
|
$doj_month = format_date($DateofJoining, 0, 'n');
|
|
$doj_year = format_date($DateofJoining, 0, 'Y');
|
|
$doj_day = format_date($DateofJoining, 0, 'j');
|
|
|
|
for ($i = 1; $i <= $persent_month; $i++) {
|
|
$weekdays[] = 'WH' . $i;
|
|
$otHours[] = 'OT' . $i;
|
|
}
|
|
$totalwhhours = 0;
|
|
foreach ($monthabs as $weekda) {
|
|
|
|
foreach ($weekda as $key => $value) {
|
|
|
|
foreach ($weekdays as $weeks) {
|
|
if ($weeks == $key) {
|
|
if ($value != 0) {
|
|
$values[] = $value;
|
|
}
|
|
}
|
|
}
|
|
foreach ($otHours as $ot) {
|
|
if ($ot == $key) {
|
|
if ($value != 0) {
|
|
$otvalues[] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$totalothour = array_sum($otvalues);
|
|
//$totalwhhour = sizeof($values);
|
|
$totalwhhours = array_sum($values);
|
|
|
|
$totalwhhour = $totalwhhours / 8;
|
|
|
|
if ($CURMONTH == $doj_month && $CURYEAR == $doj_year) {
|
|
|
|
$data['CUR_month'] = $CURDATE - $doj_day + 1;
|
|
|
|
} else {
|
|
$data['CUR_month'] = $date;
|
|
}
|
|
|
|
if ($totalwhhour != 0) {
|
|
$year = date('Y');
|
|
$current_month = date('m');
|
|
|
|
$data['values'] = $totalwhhour;
|
|
//$data['salaryInCurrentday'] = round($salaryInCurrentday);
|
|
$data['present_percentage'] = round(($totalwhhour / $data['CUR_month']) * 100);
|
|
} else {
|
|
|
|
$data['values'] = 0;
|
|
//$data['salaryInCurrentday'] = 0;
|
|
$data['present_percentage'] = 0;
|
|
}
|
|
if (empty($empID)) {
|
|
echo json_encode($data);
|
|
} else {
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
/*this function used to speedometer year emp performances display*/
|
|
function attendanceyear($empID = '')
|
|
{
|
|
$CURMONTH = date('m');
|
|
$CURDATE = date('d');
|
|
$CURYEAR = date('Y');
|
|
$EmpID = '';
|
|
if (empty($empID)) {
|
|
$EmpID = $this->request->getPost('id');
|
|
} else {
|
|
$EmpID = $empID;
|
|
}
|
|
|
|
$day = array();
|
|
$datejoin = $this->dahsboard_Model->joindate($EmpID);
|
|
|
|
$DateofJoiningInString = $datejoin[0]->DateofJoining;
|
|
$DateofJoining = date_create($DateofJoiningInString);
|
|
// $doj_month = date_format($DateofJoining, "n");
|
|
// $doj_year = date_format($DateofJoining, "Y");
|
|
// $doj_day = date_format($DateofJoining, "j");
|
|
$doj_month = format_date($DateofJoining, 0, 'n');
|
|
$doj_year = format_date($DateofJoining, 0, 'Y');
|
|
$doj_day = format_date($DateofJoining, 0, 'j');
|
|
|
|
$finStart = $this->getFinancialStartDate();
|
|
$finEnd = $this->getFinancialEndDate();
|
|
|
|
$JoinedMonth = date_format($DateofJoining, "n");
|
|
|
|
if ($DateofJoining >= $finStart && $DateofJoining <= $finEnd) {
|
|
$JoinedMonthAttendance = $this->dahsboard_Model->getAllAttendances($EmpID, $JoinedMonth);
|
|
$joinedMonthDaysCount = cal_days_in_month(CAL_GREGORIAN, $doj_month, $doj_year);
|
|
|
|
if ($CURMONTH == $doj_month && $CURYEAR == $doj_year) {
|
|
$joinedMonthWorkingDayCount = $CURDATE - $doj_day + 1;
|
|
} else {
|
|
$joinedMonthWorkingDayCount = $joinedMonthDaysCount - $doj_day + 1;
|
|
}
|
|
|
|
$joinedMonthDays = 0;
|
|
for ($j = $doj_day; $j <= $joinedMonthDaysCount; $j++) {
|
|
$weekdays[] = 'WH' . $j;
|
|
}
|
|
foreach ($JoinedMonthAttendance as $day) {
|
|
foreach ($day as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
if ($weeks == $key) {
|
|
if ($value != 0) {
|
|
// echo $value;
|
|
$joinedMonthDays++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$result = $this->dahsboard_Model->attendanceyear($EmpID, $JoinedMonth + 1);
|
|
|
|
$yearabs = $this->dahsboard_Model->getAllAttendance($EmpID, $CURMONTH);
|
|
$TotalNoofDays = $result[0]->TotalWorkingDays;
|
|
$DaysWorked = $result[0]->DaysWorked;
|
|
|
|
$values = 0;
|
|
$values = array();
|
|
$weekdays = array();
|
|
$date = date('d');
|
|
|
|
$Work = array_sum($weekdays);
|
|
|
|
for ($j = 1; $j <= $date; $j++) {
|
|
$weekdays[] = 'WH' . $j;
|
|
}
|
|
$totalhours = 0;
|
|
foreach ($yearabs as $day) {
|
|
foreach ($day as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
if ($weeks == $key) {
|
|
if ($value != 0) {
|
|
//$values++;
|
|
//$totalhours = array_sum($value);
|
|
$values[] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$DaysWorked = 0;
|
|
|
|
$totalhours = array_sum($values);
|
|
|
|
$values = $totalhours / 8;
|
|
|
|
if ($CURMONTH == $doj_month && $CURYEAR == $doj_year) {
|
|
$TotalNoofDays = $TotalNoofDays + $joinedMonthWorkingDayCount;
|
|
$DaysWorked = $joinedMonthDays;
|
|
} else {
|
|
$TotalNoofDays = $TotalNoofDays + $CURDATE + $joinedMonthWorkingDayCount;
|
|
$DaysWorked = $DaysWorked + $joinedMonthDays + $values;
|
|
}
|
|
|
|
$final_res = round(($DaysWorked / $TotalNoofDays) * 100);
|
|
|
|
$data['workeds'] = $DaysWorked;
|
|
$data['yeardata'] = $final_res;
|
|
$data['totaldays'] = $TotalNoofDays;
|
|
} else {
|
|
$result = $this->dahsboard_Model->attendanceyear($EmpID, 4);
|
|
$yearabs = $this->dahsboard_Model->getAllAttendance($EmpID, $CURMONTH);
|
|
$TotalNoofDays = $result[0]->TotalWorkingDays;
|
|
$DaysWorked = $result[0]->DaysWorked;
|
|
|
|
$values = 0;
|
|
$values = array();
|
|
$weekdays = array();
|
|
$date = date('d');
|
|
|
|
$Work = array_sum($weekdays);
|
|
|
|
for ($j = 1; $j <= $date; $j++) {
|
|
$weekdays[] = 'WH' . $j;
|
|
}
|
|
foreach ($yearabs as $day) {
|
|
foreach ($day as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
if ($weeks == $key) {
|
|
if ($value != 0) {
|
|
$values[] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$totalhours = array_sum($values);
|
|
|
|
$values = $totalhours / 8;
|
|
|
|
$TotalNoofDays = $TotalNoofDays + $CURDATE;
|
|
$DaysWorked = $DaysWorked + $values;
|
|
$final_res = round(($DaysWorked / $TotalNoofDays) * 100);
|
|
|
|
$data['workeds'] = $DaysWorked;
|
|
$data['yeardata'] = $final_res;
|
|
$data['totaldays'] = $TotalNoofDays;
|
|
}
|
|
|
|
if (empty($empID)) {
|
|
|
|
echo json_encode($data);
|
|
} else {
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
/****************HR DASHBOART Controller END **************************************/
|
|
|
|
/**
|
|
* This function is used to load the user list
|
|
*/
|
|
function userListing()
|
|
{
|
|
// if($this->isAdmin() == TRUE)
|
|
// {
|
|
// $this->loadThis();
|
|
// }
|
|
// else
|
|
// {
|
|
|
|
$data['userRecords'] = $this->user_model->userListing();
|
|
|
|
$this->global['pageTitle'] = 'User Listing';
|
|
|
|
$this->loadViews("userListing", $this->global, $data, NULL);
|
|
//}
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to load the add new form
|
|
*/
|
|
function addNew()
|
|
{
|
|
// if($this->isAdmin() == TRUE)
|
|
// {
|
|
// $this->loadThis();
|
|
// }
|
|
// else
|
|
// {
|
|
$data['EmpList'] = $this->user_model->getAllEmployees();
|
|
|
|
|
|
$data['roles'] = $this->user_model->getUserRoles();
|
|
|
|
$data['Department'] = $this->costcenter_model->getDepartment();
|
|
|
|
$this->global['pageTitle'] = 'Add New User';
|
|
|
|
$this->loadViews("addUser", $this->global, $data, NULL);
|
|
// }
|
|
}
|
|
|
|
/**
|
|
* This function is used to check whether email already exist or not
|
|
*/
|
|
function checkEmailExists()
|
|
{
|
|
$userId = $this->request->getPost("userId");
|
|
$email = $this->request->getPost("email");
|
|
|
|
if (empty($userId)) {
|
|
$result = $this->user_model->checkEmailExists($email);
|
|
} else {
|
|
$result = $this->user_model->checkEmailExists($email, $userId);
|
|
}
|
|
|
|
if (empty($result)) {
|
|
echo ("true");
|
|
} else {
|
|
echo ("false");
|
|
}
|
|
}
|
|
/* Validation for Employee Dropdown
|
|
*/
|
|
function Employee_validate($selectValue)
|
|
{
|
|
//echo 'select_validate method called';
|
|
// 'none' is the first option and the text says something like "-Choose one-"
|
|
if ($selectValue == '0') {
|
|
// $this->validator->setMessage('Employee_validate', 'Please Select Employee.');
|
|
return false;
|
|
} else // user picked something
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
/* Validation for Employee Dropdown
|
|
*/
|
|
function Role_validate($selectValue)
|
|
{
|
|
//echo 'select_validate method called';
|
|
// 'none' is the first option and the text says something like "-Choose one-"
|
|
if ($selectValue == '0') {
|
|
// $this->validator->setMessage('Role_validate', 'Please Select Role.');
|
|
return false;
|
|
} else // user picked something
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
/**
|
|
* This function is used to add new user to the system
|
|
*/
|
|
public function addNewUser()
|
|
{
|
|
// $validationRules = [
|
|
// 'EmpList' => 'trim|callback_Employee_validate',
|
|
// 'password' => 'required|max_length[20]',
|
|
// 'cpassword' => 'trim|required|matches[password]|max_length[20]'
|
|
// ];
|
|
|
|
// $validationMessages = [
|
|
// 'EmpList' => [
|
|
// 'Employee_validateS' => 'Please select an employee.'
|
|
// ]
|
|
// ];
|
|
|
|
// $this->validate($validationRules, $validationMessages);
|
|
|
|
// Validation passed
|
|
$EmpID = $this->request->getPost('EmpList');
|
|
$roleId = '2';
|
|
$password = (string)$this->request->getPost('password');
|
|
$Createddt = date('Y-m-d H:i:s');
|
|
$email = $this->request->getPost('MailID');
|
|
$SelectedDepartment = (string)$this->request->getPost('txtSelectedDepartment');
|
|
$comma_separated = explode(':', $SelectedDepartment);
|
|
if(count($comma_separated)== 1 && in_array('DEP27', $comma_separated)){
|
|
$roleId = '6';
|
|
}
|
|
$userInfo = [
|
|
'email' => $email,
|
|
'EmpID' => $EmpID,
|
|
'password' => password_hash($password, PASSWORD_DEFAULT), // Use password_hash() for hashing passwords
|
|
'roleId' => $roleId,
|
|
'createdBy' => $this->vendorId,
|
|
'createdDtm' => $Createddt
|
|
];
|
|
|
|
$result = $this->user_model->addNewUser($userInfo);
|
|
|
|
if ($SelectedDepartment != '') {
|
|
foreach ($comma_separated as $DeptCode) {
|
|
$userdept = [
|
|
'EmpID' => $EmpID,
|
|
'Departmentcode' => $DeptCode
|
|
];
|
|
$access = $this->user_model->addAccess($userdept);
|
|
}
|
|
}
|
|
|
|
if ($result > 0) {
|
|
// return redirect()->to('userListing')->with('success', 'New user created successfully!');
|
|
$this->session->setFlashdata('success', 'New user created successfully!');
|
|
} else {
|
|
// return redirect()->to('userListing')->with('error', 'Failed to create user.');
|
|
$this->session->setFlashdata('error', 'Failed to create user.');
|
|
}
|
|
return redirect()->route('userListing');
|
|
}
|
|
|
|
function Adduserdepartment()
|
|
{
|
|
$empid = $this->request->getPost('Eid');
|
|
$Depcode = $this->request->getPost('Department');
|
|
$userdept = array('EmpID' => $empid, 'Departmentcode' => $Depcode);
|
|
|
|
$access = $this->user_model->addAccess($userdept);
|
|
if ($access > 0) {
|
|
echo "Successfully Added";
|
|
}
|
|
}
|
|
|
|
|
|
function Deleteuserdepartment()
|
|
{
|
|
$empid = $this->request->getPost('Eid');
|
|
$Depcode = $this->request->getPost('Department');
|
|
$userdept = array('EmpID' => $empid, 'Departmentcode' => $Depcode);
|
|
|
|
$access = $this->user_model->DeleteAccess($empid, $Depcode);
|
|
|
|
if ($access > 0) {
|
|
echo "Successfully Deleted";
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used load user edit information
|
|
* @param number $userId : Optional : This is user id
|
|
*/
|
|
function editOld($UserId = '')
|
|
{
|
|
// if($this->isAdmin() == TRUE )
|
|
// {
|
|
// $this->loadThis();
|
|
// }
|
|
// else
|
|
// {
|
|
if ($UserId == '') {
|
|
// redirect('userListing');
|
|
}
|
|
|
|
$Uid = $_GET['UID'];
|
|
$Empid = $_GET['EMPID'];
|
|
|
|
$data['roles'] = $this->user_model->getUserRoles();
|
|
|
|
$data['EmpList'] = $this->user_model->GetEmployeeDetails($Uid);
|
|
$data['Departmentlist'] = $this->costcenter_model->getDepartmentnotadded($Empid);
|
|
$data['EmpRole'] = $this->user_model->GetRoleNameByUserID($Uid);
|
|
$data['AccessDept'] = $this->costcenter_model->getaccessDept($Empid);
|
|
|
|
// $data['userInfo'] = $this->user_model->getUserInfo($userId);
|
|
|
|
$this->global['pageTitle'] = 'Edit User';
|
|
|
|
$this->loadViews("editOld", $this->global, $data, NULL);
|
|
//}
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to edit the user information
|
|
*/
|
|
function editUser()
|
|
{
|
|
// if($this->isAdmin() == TRUE)
|
|
// {
|
|
// $this->loadThis();
|
|
// }
|
|
// else
|
|
// {
|
|
// $userId = $this->request->getPost('EmpList');
|
|
// $this->validator->setRules([ 'EmpList'=> 'trim|callback_Employee_validate',
|
|
// 'role'=> 'trim|callback_Role_validate',
|
|
// 'password'=> 'required|max_length[20]',
|
|
// 'cpassword'=> 'trim|required|matches[password]|max_length[20]']);
|
|
|
|
// if ($this->validator->run() == FALSE) {
|
|
// $this->editOld($userId);
|
|
// } else {
|
|
$EmpID = $this->request->getPost('EmpList');
|
|
$role = $this->request->getPost('role');
|
|
$password = $this->request->getPost('password');
|
|
|
|
$updatedDate = get_current_date_time();
|
|
|
|
// echo $EmpID;
|
|
|
|
$userInfo = array();
|
|
|
|
$userInfo = array('password' => getHashedPassword($password), 'roleId' => $role, 'EmpId' => $EmpID, 'updatedDtm' => $updatedDate);
|
|
|
|
$result = $this->user_model->editUser($userInfo, $EmpID);
|
|
|
|
if ($result == true) {
|
|
$this->session->setFlashdata('success', 'User updated successfully');
|
|
} else {
|
|
$this->session->setFlashdata('error', 'User updation failed');
|
|
}
|
|
|
|
return redirect()->route('userListing');
|
|
// }
|
|
//}
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to delete the user using userId
|
|
* @return boolean $result : TRUE / FALSE
|
|
*/
|
|
function deleteUser()
|
|
{
|
|
echo 'Delete';
|
|
$Uid = $this->request->getPost('id');
|
|
|
|
$updatedDate = get_current_date_time();
|
|
|
|
$userInfo = array('isDeleted' => 1, 'updatedBy' => $this->vendorId, 'updatedDtm' => $updatedDate);
|
|
|
|
$result = $this->user_model->deleteUser($Uid, $userInfo);
|
|
|
|
echo 'Succssfully change the user status to InAcive';
|
|
}
|
|
|
|
/**
|
|
* This function is used to load the change password screen
|
|
*/
|
|
function loadChangePass()
|
|
{
|
|
$this->global['pageTitle'] = 'Change Password';
|
|
|
|
$this->loadViews("changePassword", $this->global, NULL, NULL);
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to change the password of the user
|
|
*/
|
|
function changePassword()
|
|
{
|
|
helper('form'); //$this->load->library('form_validation');
|
|
|
|
$this->validator->setRules(['oldPassword', 'Old password'=> 'required|max_length[20]']);
|
|
$this->validator->setRules(['newPassword', 'New password'=> 'required|max_length[20]']);
|
|
$this->validator->setRules(['cNewPassword', 'Confirm new password'=> 'required|matches[newPassword]|max_length[20]']);
|
|
|
|
if ($this->validator->run() == FALSE) {
|
|
$this->loadChangePass();
|
|
} else {
|
|
$oldPassword = $this->request->getPost('oldPassword');
|
|
$newPassword = $this->request->getPost('newPassword');
|
|
|
|
$resultPas = $this->user_model->matchOldPassword($this->vendorId, $oldPassword);
|
|
|
|
if (empty($resultPas)) {
|
|
$this->session->setFlashdata('nomatch', 'Your old password not correct');
|
|
return redirect()->route('loadChangePass');
|
|
} else {
|
|
$usersData = array(
|
|
'password' => getHashedPassword($newPassword), 'updatedBy' => $this->vendorId,
|
|
'updatedDtm' => date('Y-m-d H:i:sa')
|
|
);
|
|
|
|
$result = $this->user_model->changePassword($this->vendorId, $usersData);
|
|
|
|
if ($result > 0) {
|
|
$this->session->setFlashdata('success', 'Password updation successful');
|
|
} else {
|
|
$this->session->setFlashdata('error', 'Password updation failed');
|
|
}
|
|
|
|
return redirect()->route('loadChangePass');
|
|
}
|
|
}
|
|
}
|
|
|
|
//this function used to delivery performances
|
|
function deliver_perform()
|
|
{
|
|
|
|
$this->global['pageTitle'] = 'Delivery Performance';
|
|
if ($this->request->getPost('btn_submit')) {
|
|
|
|
$ab = (string)$this->request->getPost('financialyear');
|
|
|
|
$fa = substr($ab, 0, -5);
|
|
$aa = substr($ab, 5, 5);
|
|
$m = $this->request->getPost('month');
|
|
|
|
$data['fy'] = $this->user_model->fincalYear();
|
|
$data['per'] = $this->user_model->deliver_perform($fa, $aa, $m);
|
|
|
|
}
|
|
|
|
$data['fy'] = $this->user_model->fincalYear();
|
|
|
|
$this->loadviews("deliver_perform", $this->global, $data, NULL);
|
|
}
|
|
|
|
/*
|
|
*favourite add function and load view
|
|
*/
|
|
|
|
function favourite()
|
|
{
|
|
$this->global['pageTitle'] = 'Add Favourite';
|
|
|
|
|
|
// $data['ponoreset']=$this->purchaseorder_model->ponoresetfinyear();
|
|
|
|
|
|
$this->loadViews("Favourite", $this->global, Null);
|
|
}
|
|
function favouriteadd()
|
|
{
|
|
$name = $this->request->getPost('name');
|
|
$url = $this->request->getPost('url');
|
|
$status = $this->request->getPost('status');
|
|
$CreateBy = $this->session->get('userId');
|
|
|
|
|
|
$createddt = get_current_date_time();
|
|
$menu = $this->request->getPost('menu');
|
|
// $RowCount = $this->request->getPost('txtRowCount');
|
|
// $DeletedRow = $this->request->getPost('txtDeletedRow');
|
|
// $comma_separated = explode(':', $DeletedRow);
|
|
$favourite = array('Menu_Name' => $name, 'Menu_URL' => $url, 'Status' => $status, 'Created_BY' => $CreateBy, 'Created_ON' => $createddt, 'Menu_ID' => $menu);
|
|
$getdata = $this->user_model->favouriteadd($favourite);
|
|
|
|
if ($getdata == 1) {
|
|
echo "success";
|
|
} else {
|
|
echo "failed";
|
|
}
|
|
}
|
|
|
|
function zohobooks_api_fetch_all(){
|
|
// print_r($_GET);
|
|
// echo isset($_GET['from']) ? $_GET['from'] : 'n';
|
|
// echo isset($_GET['to']) ? $_GET['to'] : 'n';
|
|
// die();
|
|
try{
|
|
// if (isset($_POST['sync']) || $_GET['from'] != null && $_GET['to'] != null)
|
|
// {
|
|
// $ch=curl_init();
|
|
//$this->load->helper('zohobooks_fetch_api_helper');
|
|
helper('zohobook');
|
|
$Zohobook_model = model('Zohobook_api_model');
|
|
if(isset($_GET['from']) && $_GET['from'] != null && isset($_GET['to']) && $_GET['to'] != null)
|
|
{
|
|
$date_today = $_GET['to'];
|
|
$date_yesterday = $_GET['from'];
|
|
}
|
|
else
|
|
{
|
|
$date_today = date('Y-m-d');
|
|
$date_yesterday = date('Y-m-d',strtotime('-3 day',strtotime($date_today)));
|
|
}
|
|
// echo $date_today.'--'.$date_yesterday;die;
|
|
$chk_acc_token_val = $Zohobook_model->get_data('zohobook_accesstoken','id' , 1);
|
|
// print_r($chk_acc_token_val);//die();
|
|
$date = new \DateTime($chk_acc_token_val[0]['created_at']);
|
|
//print_r($date);
|
|
$date->add(new \DateInterval('PT1H'));
|
|
//print_r($date);
|
|
//echo '****************';
|
|
//print_r(date('Y-m-d h:i:s'));
|
|
$token = 0;
|
|
if ($date->format('Y-m-d H:i:s') > date('Y-m-d H:i:s')) { $token = $chk_acc_token_val[0]['token']; }
|
|
else { $token = generateNewToken(); $tokendata['token'] = $token; $Zohobook_model->customUpdate($tokendata , 1,'zohobook_accesstoken'); }
|
|
// $token = generateNewToken(); $tokendata['token'] = $token;
|
|
//$Zohobook_model->update($tokendata , 1,'zohobook_accesstoken');
|
|
$result = getheringInvoiceDetails($date_today , $date_yesterday , $token);
|
|
// echo json_encode($result);die;
|
|
$headers_new = $result['headers_new'];
|
|
$res = json_decode($result['data'],true);
|
|
$inv_array = $res['invoices'];
|
|
// print_r($inv_array);
|
|
// echo "rrrr";
|
|
// die();
|
|
foreach($inv_array as $inv){
|
|
$invoice_id = $inv['invoice_id'];
|
|
//filter only einvoice status pushed invoices only
|
|
//&& isset($inv['einvoice_details']) && isset($inv['einvoice_details']['status']) && ($inv['einvoice_details']['status'] == 'pushed')
|
|
if($invoice_id !== "" ){
|
|
$organization_id = '776847408';
|
|
$result2=getheringInvoiceSubDetails($invoice_id,$organization_id,$headers_new);
|
|
$resall = json_decode($result2,true);
|
|
$res2[] = $resall['invoice'];
|
|
}
|
|
}
|
|
$insert_count = 0;
|
|
$update_count = 0;
|
|
foreach($res2 as $rs)
|
|
{
|
|
$gst_no = $rs['gst_no'];
|
|
$invoice_number = $rs['invoice_number'];
|
|
$invoice_date = $rs['date'];
|
|
$status = $rs['status'];
|
|
$due_date = $rs['due_date'];
|
|
|
|
$invoice_time=$rs['created_time'];
|
|
$time_array = explode("T", $invoice_time);
|
|
$time_array = explode("+",$time_array[1]);
|
|
$invoice_time = $time_array[0];
|
|
|
|
$sql_invoice_chk = $Zohobook_model->ip_invoices($invoice_number , $invoice_date);
|
|
if($sql_invoice_chk <= 0)
|
|
{
|
|
|
|
$gst_sql = $Zohobook_model->ip_clients($gst_no);
|
|
if($gst_sql)
|
|
{
|
|
$client_id = $gst_sql[0]['client_id'];
|
|
log_message('error', 'Data fetch success DB : ip_clients , client_id : '.$client_id);
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'No data => Data fetch failed DB : ip_clients '.$gst_no);
|
|
$gst_no_data['client_tax_code'] = $gst_no;
|
|
$gst_sql = $Zohobook_model->customInsert($gst_no_data,'ip_clients');
|
|
$client_id = $gst_sql[0]['tax_rate_id'];
|
|
log_message('error', 'New Data Created : DB : ip_clients , client_id : '.$client_id);
|
|
}
|
|
|
|
|
|
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
$charactersLength = strlen($characters);
|
|
$randomString = '';
|
|
for ($i = 0; $i < 16; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; }
|
|
$url_key = $randomString;
|
|
|
|
$ip_invoices['user_id'] = 1;
|
|
$ip_invoices['client_id'] = $client_id;
|
|
$ip_invoices['invoice_group_id'] = 6;
|
|
$ip_invoices['invoice_status_id'] = ($status == 'draft' ? 1 : (($status == 'sent' || $status == 'overdue') ? 2 : 5));
|
|
$ip_invoices['invoice_date_created'] = $invoice_date;
|
|
$ip_invoices['invoice_time_created'] = $invoice_time;
|
|
$ip_invoices['invoice_date_due'] = $due_date;
|
|
$ip_invoices['invoice_number'] = $invoice_number;
|
|
$ip_invoices['invoice_url_key'] = $url_key;
|
|
$ip_invoices['receivedstatus'] = 'ST066';
|
|
$ip_invoices['credit_status'] = 0;
|
|
$invoice_insert_id = $Zohobook_model->customInsert($ip_invoices,'ip_invoices');
|
|
if($invoice_insert_id)
|
|
{
|
|
log_message('error', 'Data insert success DB : ip_invoices client id :'. $client_id);
|
|
$insert_count = $insert_count + 1;
|
|
//start invoice level custom fields
|
|
|
|
//custom fields insert
|
|
|
|
$batch_no = isset($rs['custom_fields'][5]['value']) ? $rs['custom_fields'][5]['value'] : "";
|
|
// $batch_no = "";
|
|
$vehicle_number = $rs['custom_field_hash']['cf_vehicle_number'];
|
|
$transport_mode =$rs['custom_field_hash']['cf_transport_mode'];
|
|
$purchase_order_date = $rs['custom_field_hash']['cf_purchase_order_date'];
|
|
$driver = $rs['custom_field_hash']['cf_driver'];
|
|
$place_of_supply = $rs['custom_field_hash']['cf_place_of_supply'];
|
|
// batch_no
|
|
$ip_invoice_custom_b['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_custom_b['invoice_custom_fieldid'] = 62;
|
|
$ip_invoice_custom_b['invoice_custom_fieldvalue'] = $batch_no;
|
|
$result_invoice_custom_insert = $Zohobook_model->customInsert($ip_invoice_custom_b,'ip_invoice_custom');
|
|
if($result_invoice_custom_insert)
|
|
log_message('error', 'Data insert success DB : ip_invoice_custom ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_custom ');
|
|
// vehicle_number
|
|
$ip_invoice_custom_v['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_custom_v['invoice_custom_fieldid'] = 8;
|
|
$ip_invoice_custom_v['invoice_custom_fieldvalue'] = $vehicle_number;
|
|
$res_vehicle = $Zohobook_model->customInsert($ip_invoice_custom_v,'ip_invoice_custom');
|
|
if($res_vehicle)
|
|
log_message('error', 'Data insert success DB : ip_invoice_custom ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_custom ');
|
|
// transport_mode
|
|
$ip_invoice_custom_t['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_custom_t['invoice_custom_fieldid'] = 7;
|
|
$ip_invoice_custom_t['invoice_custom_fieldvalue'] = $transport_mode;
|
|
$res_transport_mode = $Zohobook_model->customInsert($ip_invoice_custom_t,'ip_invoice_custom');
|
|
if($res_transport_mode)
|
|
log_message('error', 'Data insert success DB : ip_invoice_custom ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_custom ');
|
|
// purchase_order_date
|
|
$ip_invoice_custom_p['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_custom_p['invoice_custom_fieldid'] = 15;
|
|
$ip_invoice_custom_p['invoice_custom_fieldvalue'] = $purchase_order_date;
|
|
$res_purchase_order_date =$Zohobook_model->customInsert($ip_invoice_custom_p,'ip_invoice_custom');
|
|
if($res_purchase_order_date)
|
|
log_message('error', 'Data insert success DB : ip_invoice_custom ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_custom ');
|
|
// driver
|
|
$ip_invoice_custom_d['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_custom_d['invoice_custom_fieldid'] = 58;
|
|
$ip_invoice_custom_d['invoice_custom_fieldvalue'] = $driver;
|
|
$res_driver = $Zohobook_model->customInsert($ip_invoice_custom_d,'ip_invoice_custom');
|
|
if($res_driver)
|
|
log_message('error', 'Data insert success DB : ip_invoice_custom ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_custom ');
|
|
// place_of_supply
|
|
$ip_invoice_custom_d['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_custom_d['invoice_custom_fieldid'] = 10;
|
|
$ip_invoice_custom_d['invoice_custom_fieldvalue'] = $place_of_supply;
|
|
$res_place = $Zohobook_model->customInsert($ip_invoice_custom_d,'ip_invoice_custom');
|
|
if($res_place)
|
|
log_message('error', 'Data insert success DB : ip_invoice_custom ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_custom ');
|
|
//end invoice level custom fields
|
|
|
|
//if line items available
|
|
if(isset($rs['line_items']) && count($rs['line_items']) > 0)
|
|
{
|
|
log_message('error', 'Processing line items'.count($rs['line_items']));
|
|
|
|
for($i = 0; $i< count($rs['line_items']);$i++)
|
|
{ //start insert line items
|
|
$sku = $rs['line_items'][$i]['sku'];
|
|
|
|
|
|
$item_price = $rs['line_items'][$i]['rate'];
|
|
$item_order = $rs['line_items'][$i]['item_order'];
|
|
$item_product_unit = $rs['line_items'][$i]['unit'];
|
|
$item_name = $rs['line_items'][$i]['name'];
|
|
$item_description = $rs['line_items'][$i]['description'];
|
|
$item_quantity = $rs['line_items'][$i]['quantity'];
|
|
$cgst = $rs['line_items'][$i]['line_item_taxes'][1]['tax_name'];
|
|
$sgst = $rs['line_items'][$i]['line_item_taxes'][0]['tax_name'];
|
|
$cgst = $cgst[4];
|
|
$sgst = $sgst[4];
|
|
$cgst = $cgst.'.000';
|
|
$getcgsttax = $Zohobook_model->ip_tax_rates($cgst);
|
|
if($getcgsttax)
|
|
{
|
|
$cgsttaxid = $getcgsttax[0]['tax_rate_id'];
|
|
log_message('error', 'Data fetch success DB : ip_tax_rates cgst'. $cgst);
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'No data => Data fetch failed DB : ip_tax_rates '. $cgst);
|
|
$cgst_data['tax_rate_percent'] = $cgst;
|
|
$getcgsttax = $Zohobook_model->customInsert($cgst_data,'ip_tax_rates');
|
|
$cgsttaxid = $getcgsttax[0]['tax_rate_id'];
|
|
log_message('error', 'New Data Created : DB : ip_tax_rates , tax_rate_id : '.$cgsttaxid);
|
|
}
|
|
|
|
$sgst = $sgst.'.000';
|
|
$getsgsttax = $Zohobook_model->ip_tax_rates($sgst);
|
|
if($getsgsttax)
|
|
{
|
|
$sgsttaxid = $getsgsttax[0]['tax_rate_id'];
|
|
log_message('error', 'Data fetch success DB : ip_tax_rates sgst'. $sgst);
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'No data => Data fetch failed DB : ip_tax_rates '. $sgst);
|
|
$sgst_data['tax_rate_percent'] = $sgst;
|
|
$getsgsttax = $Zohobook_model->customInsert($sgst_data,'ip_tax_rates');
|
|
$sgsttaxid = $getsgsttax[0]['tax_rate_id'];
|
|
log_message('error', 'New Data Created : DB : ip_tax_rates , tax_rate_id : '.$sgsttaxid);
|
|
}
|
|
|
|
$item_subtotal = $rs['line_items'][$i]['item_total'];
|
|
|
|
|
|
$item_sgst_amt = $rs['line_items'][$i]['line_item_taxes'][0]['tax_amount'];
|
|
$item_cgst_amt = $rs['line_items'][$i]['line_item_taxes'][1]['tax_amount'];
|
|
$item_tax_total = ($item_sgst_amt + $item_cgst_amt);
|
|
$item_total = ($item_subtotal + $item_tax_total);
|
|
|
|
$item_discount = 0.00;
|
|
$item_igst_amt = 0.00;
|
|
// if($batch_no==""){ $batch_no = "";}
|
|
|
|
|
|
$sku_sql = $Zohobook_model->ip_products($sku);
|
|
if($sku_sql)
|
|
{
|
|
$product_id = $sku_sql[0]['product_id'];
|
|
log_message('error', 'Data fetch success DB : ip_products , product_id : '.$product_id);
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'No data => Data fetch failed DB : ip_products '. $sku);
|
|
$sku_data['product_name'] = $item_name;
|
|
$sku_data['product_description'] = $item_description;
|
|
$sku_data['sku'] = $sku;
|
|
$sku_sql = $Zohobook_model->customInsert($sku_data,'ip_products');
|
|
$product_id = $sku_sql[0]['sku'];
|
|
log_message('error', 'sku'.$sku);
|
|
log_message('error', 'New Data Created : DB : product_id , product_id : '.$product_id);
|
|
}
|
|
|
|
//#1
|
|
|
|
$ip_invoice_items['invoice_id'] = $invoice_insert_id;
|
|
$ip_invoice_items['item_product_id'] = $product_id;
|
|
$ip_invoice_items['item_date_added'] = $invoice_date;
|
|
$ip_invoice_items['item_name'] = $item_name;
|
|
$ip_invoice_items['item_description'] = $item_description;
|
|
$ip_invoice_items['item_quantity'] = $item_quantity;
|
|
$ip_invoice_items['item_price'] = $item_price;
|
|
$ip_invoice_items['item_order'] = $item_order;
|
|
$ip_invoice_items['item_product_unit'] = $item_product_unit;
|
|
$ip_invoice_items['Sgst_item_tax_rate_id'] = $sgsttaxid;
|
|
$ip_invoice_items['Cgst_item_tax_rate_id'] = $cgsttaxid;
|
|
$item_insert_id = $Zohobook_model->customInsert($ip_invoice_items,'ip_invoice_items');
|
|
if($item_insert_id)
|
|
log_message('error', 'Data insert success DB : ip_invoice_items => Sgst_item_tax_rate_id :'. $sgsttaxid);
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_items => Sgst_item_tax_rate_id :'. $sgsttaxid);
|
|
|
|
//tax amount -- ip_invoice_item_amounts - table
|
|
$ip_invoice_item_amounts['item_id'] = $item_insert_id;
|
|
$ip_invoice_item_amounts['item_subtotal'] = $item_subtotal;
|
|
$ip_invoice_item_amounts['item_tax_total'] = $item_tax_total;
|
|
$ip_invoice_item_amounts['item_total'] = $item_total;
|
|
$ip_invoice_item_amounts['item_sgst_amt'] = $item_sgst_amt;
|
|
$ip_invoice_item_amounts['item_cgst_amt'] = $item_cgst_amt;
|
|
$ip_invoice_item_amounts['item_discount'] = $item_discount;
|
|
$ip_invoice_item_amounts['item_igst_amt'] = $item_igst_amt;
|
|
$result_tax_amount_insert = $Zohobook_model->customInsert($ip_invoice_item_amounts,'ip_invoice_item_amounts');
|
|
if($result_tax_amount_insert)
|
|
log_message('error', 'Data insert success DB : ip_invoice_item_amounts ');
|
|
else
|
|
log_message('error', 'Data insert failed DB : ip_invoice_item_amounts ');
|
|
|
|
} //end line items insert
|
|
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'Line Items not found in API result');
|
|
}
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'Data insert failed DB : ip_invoice_items client id :'. $client_id);
|
|
}
|
|
|
|
|
|
}
|
|
else // update invoice status, especially for cancelled invoices
|
|
{
|
|
if($status == "void" || $status == "sent" || $status == "overdue")
|
|
{
|
|
$sql_invoice_update = array();
|
|
$sql_invoice_update['invoice_status_id'] = (($status == "sent" || $status == "overdue") ? 2 : 5);
|
|
// echo 'script' . $invoice_number. $status;
|
|
// print_r( $sql_invoice_update);
|
|
// echo '<br>';
|
|
$sql_invoice_update = $Zohobook_model->sql_invoice_update($sql_invoice_update,$invoice_number,$invoice_date,'ip_invoices');
|
|
if($sql_invoice_update)
|
|
{
|
|
log_message('error', 'Data update success DB : ip_invoices ');
|
|
}
|
|
else
|
|
{
|
|
log_message('error', 'Data update failed DB : ip_invoices ');
|
|
}
|
|
$update_count = $update_count + 1;
|
|
}
|
|
}
|
|
// echo 'new invoice inserted count- ' . $insert_count . '/' . 'status updated count - ' . $update_count;
|
|
|
|
}$response = [
|
|
'status' => true,
|
|
'message' => "Successfully data inserted. Total inserted: " . $insert_count . ", Total Updated: " . $update_count
|
|
];
|
|
return json_encode($response);
|
|
|
|
// curl_close($ch);
|
|
// }
|
|
}
|
|
catch (\Exception $e) {
|
|
$data['err'] = $e->getMessage();
|
|
// $db = \Config\Database::connect();
|
|
// $data['last_query'] = $db->getLastQuery();;
|
|
$Zohobook_model->customInsert($data,'zohobook_api_err');
|
|
log_message('error', "Data insertion failed : " . $e->getMessage());
|
|
|
|
return json_encode($response);
|
|
}
|
|
}
|
|
// END zoho API
|
|
} |