Merge pull request 'paulcortezl5' (#11) from paulcortezl5 into main

Reviewed-on: #11
pull/12/head
paul 7 months ago
commit ab08c11980

@ -78,7 +78,7 @@ class Auth extends ShieldAuth
public array $redirects = [ public array $redirects = [
'register' => '/hi', 'register' => '/hi',
'login' => '/hi', 'login' => '/hi',
'logout' => 'login', 'logout' => '/login',
'force_reset' => '/', 'force_reset' => '/',
'permission_denied' => '/', 'permission_denied' => '/',
'group_denied' => '/', 'group_denied' => '/',

@ -46,6 +46,7 @@ $routes->post('payroll/addemppayinfo', 'PayrollController::addEmployeePayrollInf
$routes->get('payroll/compben', 'PayrollController::employeeCompensationBenefits'); $routes->get('payroll/compben', 'PayrollController::employeeCompensationBenefits');
$routes->post('payroll/addcompben', 'PayrollController::addEmployeeCompensationBenefits'); $routes->post('payroll/addcompben', 'PayrollController::addEmployeeCompensationBenefits');
$routes->post('payroll/delcomben', 'PayrollController::deleteEmployeeCompensationBenefits');
$routes->get('payroll/paysettings', 'PayrollController::payrollSettings'); $routes->get('payroll/paysettings', 'PayrollController::payrollSettings');
$routes->post('payroll/paysettings', 'PayrollController::payrollSettings'); $routes->post('payroll/paysettings', 'PayrollController::payrollSettings');

@ -300,12 +300,26 @@ class PayrollController extends BaseController
$rawData['is_override'] = isset($rawData['is_override']) ? 1 : 0; $rawData['is_override'] = isset($rawData['is_override']) ? 1 : 0;
$empPayInDed->fill($rawData); $empPayInDed->fill($rawData);
$empPayInDedModel->save($empPayInDed);
if($empPayInDedModel->getInsertID() == 0) if($empPayInDedModel->save($empPayInDed))
{
if(isset($rawData['emppayinded_id']))
return redirect()->to('/payroll/compben?payschedid='.$this->request->getPost('payschedule_id').'&empid='.$this->request->getPost('emp_id'))->with('message', 'Employee Compensation Benefits edited');
else
return redirect()->to('/payroll/compben?payschedid='.$this->request->getPost('payschedule_id').'&empid='.$this->request->getPost('emp_id'))->with('message', 'Employee Compensation Benefits Added');
}
else
return redirect()->back()->withInput()->with('error', 'Failed to add employee compensation benefits'); return redirect()->back()->withInput()->with('error', 'Failed to add employee compensation benefits');
}
public function deleteEmployeeCompensationBenefits()
{
$empPayInDedModel = new EmpPayIncomeDeductionModel();
if($empPayInDedModel->delete($this->request->getPost('emppayinded_id')))
return redirect()->to('/payroll/compben?payschedid='.$this->request->getPost('payschedule_id').'&empid='.$this->request->getPost('emp_id'))->with('message', 'Employee Compensation Benefits deleted');
else else
return redirect()->to('/payroll/compben?payschedid='.$this->request->getPost('payschedule_id').'&empid='.$this->request->getPost('emp_id'))->with('message', 'Employee Compensation Benefits Added'); return redirect()->back()->with('error', 'Failed to delete employee compensation benefits');
} }
public function payrollSettings() public function payrollSettings()

@ -62,22 +62,22 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="radio" id="rdoFixedAmount" name="amount_type" value="fixed" checked> <input class="form-check-input" type="radio" id="rdoInFixedAmount" name="amount_type" value="fixed" checked>
<label for="rdoFixedAmount" class="form-check-label">Fixed amount.</label> <label for="rdoInFixedAmount" class="form-check-label">Fixed amount.</label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="radio" id="rdoPercentageAmount" name="amount_type" value="perc"> <input class="form-check-input" type="radio" id="rdoInPercentageAmount" name="amount_type" value="perc">
<label for="rdoPercentageAmount" class="form-check-label">Amount is in percentage.</label> <label for="rdoInPercentageAmount" class="form-check-label">Amount is in percentage.</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="txtAmount">Amount</label> <label for="txtInAmount">Amount</label>
<input class="form-control" type="number" id="txtAmount" name="amount" values="<?= old('amount') ?>"> <input class="form-control" type="text" id="txtInAmount" name="amount" step="0.01" values="<?= old('amount') ?>">
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="custom-control custom-checkbox"> <div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="chkIsOverride" name="is_override"> <input class="custom-control-input" type="checkbox" id="chkInIsOverride" name="is_override">
<label for="chkIsOverride" class="custom-control-label">Override computations if there are any.</label> <label for="chkInIsOverride" class="custom-control-label">Override computations if there are any.</label>
<p><small><i>Override will implement this amount and not the computational amount made like in SSS, Philhealth, Pag-IBIG and taxastion</i></small></p> <p><small><i>Override will implement this amount and not the computational amount made like in SSS, Philhealth, Pag-IBIG and taxastion</i></small></p>
</div> </div>
</div> </div>
@ -131,22 +131,160 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="radio" id="rdoFixedAmount" name="amount_type" value="fixed" checked> <input class="form-check-input" type="radio" id="rdoDedFixedAmount" name="amount_type" value="fixed" checked>
<label for="rdoFixedAmount" class="form-check-label">Fixed amount.</label> <label for="rdoDedFixedAmount" class="form-check-label">Fixed amount.</label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="radio" id="rdoPercentageAmount" name="amount_type" value="perc"> <input class="form-check-input" type="radio" id="rdoDedPercentageAmount" name="amount_type" value="perc">
<label for="rdoPercentageAmount" class="form-check-label">Amount is in percentage.</label> <label for="rdoDedPercentageAmount" class="form-check-label">Amount is in percentage.</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="txtAmount">Amount</label> <label for="txtDedAmount">Amount</label>
<input class="form-control" type="number" id="txtAmount" name="amount" values="<?= old('amount') ?>"> <input class="form-control" type="number" id="txtDedAmount" name="amount" step="0.01" values="<?= old('amount') ?>">
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="custom-control custom-checkbox"> <div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="chkIsOverride" name="is_override"> <input class="custom-control-input" type="checkbox" id="chkDedIsOverride" name="is_override">
<label for="chkIsOverride" class="custom-control-label">Override computations if there are any.</label> <label for="chkDedIsOverride" class="custom-control-label">Override computations if there are any.</label>
<p><small><i>Override will implement this amount and not the computational amount made like in SSS, Philhealth, Pag-IBIG and taxastion</i></small></p>
</div>
</div>
</div>
<?php else : ?>
<div class="col-12">
<p class="text-danger">No Employee Loaded. Please select employee first</p>
</div>
<?php endif ?>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save changes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal Edit Income -->
<div class="modal fade" id="mdlEditIncome">
<div class="modal-dialog">
<div class="modal-content">
<form action="<?= url_to('payroll/addcompben') ?>" method="post">
<div class="modal-header bg-warning">
<h4 class="modal-title" >Edit Employee Income</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12">
<p class="lead">Employee Income Information</p>
<div class="row">
<?php if($empLoaded) : ?>
<div class="col-12">
<div class="form-group">
<div class="form-group">
<label for="txtEditInInDedName">Income Name</label>
<input class="form-control" type="text" readonly id="txtEditInInDedName" name="inded_name">
</div>
<input type="hidden" id="txtEditInEmpPayIndedId" name="emppayinded_id" > <!-- Primary Key -->
<input type="hidden" name="emppay_id" value="<?= $selectedEmployee->emppay_id ?>" >
<input type="hidden" name="payschedule_id" value="<?= $_GET['payschedid'] ?>">
<input type="hidden" id="txtEditInInDedId" name="inded_id">
<input type="hidden" name="emp_id" value="<?= $selectedEmployee->employee_id ?>" >
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="radio" id="rdoEditInFixedAmount" name="amount_type" value="fixed">
<label for="rdoEditInFixedAmount" class="form-check-label">Fixed amount.</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="rdoEditInPercentageAmount" name="amount_type" value="perc">
<label for="rdoEditInPercentageAmount" class="form-check-label">Amount is in percentage.</label>
</div>
</div>
<div class="form-group">
<label for="txtEditInAmount">Amount</label>
<input class="form-control" type="number" id="txtEditInAmount" name="amount" step="0.01" values="<?= old('amount') ?>">
</div>
<div class="form-group">
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="chkEditInIsOverride" name="is_override">
<label for="chkEditInIsOverride" class="custom-control-label">Override computations if there are any.</label>
<p><small><i>Override will implement this amount and not the computational amount made like in SSS, Philhealth, Pag-IBIG and taxastion</i></small></p>
</div>
</div>
</div>
<?php else : ?>
<div class="col-12">
<p class="text-danger">No Employee Loaded. Please select employee first</p>
</div>
<?php endif ?>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save changes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal Edit Income -->
<div class="modal fade" id="mdlEditDeduction">
<div class="modal-dialog">
<div class="modal-content">
<form action="<?= url_to('payroll/addcompben') ?>" method="post">
<div class="modal-header bg-warning">
<h4 class="modal-title" >Edit Employee Deduction</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12">
<p class="lead">Employee Deduction Information</p>
<div class="row">
<?php if($empLoaded) : ?>
<div class="col-12">
<div class="form-group">
<div class="form-group">
<label for="txtEditDedInDedName">Deduction Name</label>
<input class="form-control" type="text" readonly id="txtEditDedInDedName" name="inded_name">
</div>
<input type="hidden" id="txtEditDedEmpPayIndedId" name="emppayinded_id" > <!-- Primary Key -->
<input type="hidden" name="emppay_id" value="<?= $selectedEmployee->emppay_id ?>" >
<input type="hidden" name="payschedule_id" value="<?= $_GET['payschedid'] ?>">
<input type="hidden" id="txtEditDedInDedId" name="inded_id">
<input type="hidden" name="emp_id" value="<?= $selectedEmployee->employee_id ?>" >
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="radio" id="rdoEditDedFixedAmount" name="amount_type" value="fixed">
<label for="rdoEditDedFixedAmount" class="form-check-label">Fixed amount.</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="rdoEditDedPercentageAmount" name="amount_type" value="perc">
<label for="rdoEditDedPercentageAmount" class="form-check-label">Amount is in percentage.</label>
</div>
</div>
<div class="form-group">
<label for="txtEditDedAmount">Amount</label>
<input class="form-control" type="number" id="txtEditDedAmount" name="amount" step="0.01" values="<?= old('amount') ?>">
</div>
<div class="form-group">
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="chkEditDedIsOverride" name="is_override">
<label for="chkEditDedIsOverride" class="custom-control-label">Override computations if there are any.</label>
<p><small><i>Override will implement this amount and not the computational amount made like in SSS, Philhealth, Pag-IBIG and taxastion</i></small></p> <p><small><i>Override will implement this amount and not the computational amount made like in SSS, Philhealth, Pag-IBIG and taxastion</i></small></p>
</div> </div>
</div> </div>
@ -174,7 +312,7 @@
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h3 class="card-title">List of Payroll Type</h3> <h3 class="card-title">Select Schedule and Employee</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
@ -211,101 +349,152 @@
</form> </form>
</div> </div>
</div> </div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Payroll Income and Deduction Details</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-12">
<?php if($empLoaded): ?>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-6 col-xs-6">
<?php if($empLoaded): ?> <p><strong>Employee Name:</strong> <?= $selectedEmployee->last_name . ', ' . $selectedEmployee->first_name ?></p>
<h3>Payroll Income and Deduction Details</h3> <p><strong>Employee ID:</strong> <?= $selectedEmployee->company_issued_id ?></p>
<div class="row"> </div>
<div class="col-6 col-xs-6"> <div class="col-6 col-xs-6 text-right">
<p><strong>Employee Name:</strong> <?= $selectedEmployee->last_name . ', ' . $selectedEmployee->first_name ?></p> <p><strong>Basic Salary</strong> <?= $selectedEmployee->basic_monthly_pay ?></p>
<p><strong>Employee ID:</strong> <?= $selectedEmployee->company_issued_id ?></p> <p><strong>Date:</strong> 20/09/2024</p>
</div> </div>
<div class="col-6 col-xs-6 text-right"> </div>
<p><strong>Basic Salary</strong> <?= $selectedEmployee->basic_monthly_pay ?></p> <table class="table table-bordered">
<p><strong>Date:</strong> 20/09/2024</p> <thead>
</div> <tr>
</div> <th>Description</th>
<table class="table table-bordered"> <th colspan="2" class="text-center">Amount</th>
<thead> <th>Action</th>
<tr> </tr>
<th>Description</th> </thead>
<th colspan="2" class="text-center">Amount</th> <tbody>
<th>Action</th> <?php
</tr> $grossTotal = $selectedEmployee->basic_daily_pay * 13;
</thead> $taxableGross = $selectedEmployee->basic_daily_pay * 13;
<tbody> $deductionTotal = 0;
<tr> ?>
<td><span class="pl-3">Basic Salary</span></td> <tr>
<td>&nbsp;</td> <td>
<td class="text-right"><?= number_format($selectedEmployee->basic_semi_monthly_pay, 2, ".", ",") ?></td> <span class="pl-3">Basic Salary</span><br>
<td>&nbsp;</td> <span class="pl-4 text-sm"><i>Php<?= number_format($selectedEmployee->basic_daily_pay, 2, ".", ",") ?> daily rate (assumes 13 days of work per cutoff)</i></span>
</tr> </td>
<?php <td>&nbsp;</td>
<td class="text-right"><?= number_format($selectedEmployee->basic_daily_pay * 13, 2, ".", ",") ?></td>
$grossTotal = 0; <td>&nbsp;</td>
$deductionTotal = 0; </tr>
$netTotal = 0; <?php foreach($empPayIncomeList as $empPayIncome):?>
<tr>
foreach($empPayIncomeList as $empPayIncome):?> <td><span class="pl-3"><?= $empPayIncome->inded_name ?></span></td>
<tr> <td>&nbsp;</td>
<td><span class="pl-3"><?= $empPayIncome->inded_name ?></span></td> <td class="text-right"><?= number_format($empPayIncome->amount, 2, ".", ",") ?></td>
<td>&nbsp;</td> <td>
<td class="text-right"><?= number_format($empPayIncome->amount, 2, ".", ",") ?></td> <a href="#" class="ml-3" data-toggle="tooltip" title="Edit Income Information"
<td>&nbsp;</td> data-emppayinded_id = "<?= $empPayIncome->emppayinded_id ?>"
</tr> data-inded_name = "<?= $empPayIncome->inded_name ?>"
<?php data-emppay_id = "<?= $empPayIncome->emppay_id ?>"
data-payschedule_id = "<?= $empPayIncome->payschedule_id ?>"
data-inded_id = "<?= $empPayIncome->inded_id ?>"
data-is_fixed_amt = "<?= $empPayIncome->is_fixed_amt ?>"
data-is_percent_amt = "<?= $empPayIncome->is_percent_amt ?>"
data-amount = "<?= $empPayIncome->amount ?>"
data-is_override = "<?= $empPayIncome->is_override ?>"
onclick="editIncome(this)"><i class="fas fa-edit"></i></a>
<form action="/payroll/delcomben" method="post" class="ml-3 d-inline-block">
<input type="hidden" name="emppayinded_id" value="<?= $empPayIncome->emppayinded_id ?>">
<input type="hidden" name="payschedule_id" value="<?= $empPayIncome->payschedule_id ?>">
<input type="hidden" name="emp_id" value="<?= $selectedEmployee->employee_id ?>">
<button type="submit" class="btn btn-link p-0 m-0"><i class="fas fa-trash "></i></a>
</form>
</td>
</tr>
<?php
$grossTotal += $empPayIncome->amount; $grossTotal += $empPayIncome->amount;
if($empPayIncome->is_taxable) $taxableGross += $empPayIncome->amount;
endforeach; ?>
<tr> endforeach; ?>
<td><strong>Gross Total</strong></td> <tr>
<td>&nbsp;</td> <td><strong>Gross Total</strong></td>
<td class="text-right"><strong>Php <?= number_format($grossTotal, 2, ".", ","); ?></strong></td> <td>&nbsp;</td>
<td>&nbsp;</td> <td class="text-right"><strong>Php <?= number_format($grossTotal, 2, ".", ","); ?></strong></td>
</tr> <td>&nbsp;</td>
</tr>
<?php foreach($empPayDeductionList as $empPayDeduction):?>
<tr> <?php foreach($empPayDeductionList as $empPayDeduction):?>
<td><span class="pl-3"><?= $empPayDeduction->inded_name ?></span></td> <tr>
<td class="text-right">-<?= number_format($empPayDeduction->amount, 2, ".", ",") ?></td> <td><span class="pl-3"><?= $empPayDeduction->inded_name ?></span></td>
<td>&nbsp;</td> <td class="text-right">-<?= number_format($empPayDeduction->amount, 2, ".", ",") ?></td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> <td>
<?php <a href="#" class="ml-3" data-toggle="tooltip" title="Edit Deduction Information"
data-emppayinded_id = "<?= $empPayDeduction->emppayinded_id ?>"
data-inded_name = "<?= $empPayDeduction->inded_name ?>"
data-emppay_id = "<?= $empPayDeduction->emppay_id ?>"
data-payschedule_id = "<?= $empPayDeduction->payschedule_id ?>"
data-inded_id = "<?= $empPayDeduction->inded_id ?>"
data-is_fixed_amt = "<?= $empPayDeduction->is_fixed_amt ?>"
data-is_percent_amt = "<?= $empPayDeduction->is_percent_amt ?>"
data-amount = "<?= $empPayDeduction->amount ?>"
data-is_override = "<?= $empPayDeduction->is_override ?>"
onclick="editDeduction(this)"><i class="fas fa-edit "></i></a>
<form action="/payroll/delcomben" method="post" class="ml-3 d-inline-block">
<input type="hidden" name="emppayinded_id" value="<?= $empPayDeduction->emppayinded_id ?>">
<input type="hidden" name="payschedule_id" value="<?= $empPayDeduction->payschedule_id ?>">
<input type="hidden" name="emp_id" value="<?= $selectedEmployee->employee_id ?>">
<button type="submit" class="btn btn-link p-0 m-0"><i class="fas fa-trash "></i></a>
</form>
</td>
</tr>
<?php
$deductionTotal += $empPayDeduction->amount; $deductionTotal += $empPayDeduction->amount;
endforeach; endforeach;
?> ?>
<tr> <tr>
<td><strong>Total Deductions</strong></td> <td><strong>Total Deductions</strong></td>
<td class="text-right"><strong>Php <?= number_format($deductionTotal, 2, ".", ","); ?></strong></td> <td class="text-right"><strong>Php <?= number_format($deductionTotal, 2, ".", ","); ?></strong></td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
</tbody> </tbody>
<tfoot> <tfoot>
<tr> <tr>
<th><span class="text-uppercase">Net Income</span></th> <th><span class="text-uppercase">Net Income</span></th>
<td>&nbsp;</td> <td>&nbsp;</td>
<th class="text-right">Php <?= number_format($grossTotal - $deductionTotal, 2, ".", ",") ?></th> <th class="text-right">Php <?= number_format($grossTotal - $deductionTotal, 2, ".", ",") ?></th>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
<?php else: ?> <?php else: ?>
<p>Select an employee first then click on "Load Income &amp; Deduction" button</p> <p>Select an employee first then click on "Load Income &amp; Deduction" button</p>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div>
</div>
<div class="card-footer">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#mdlAddIncome">Add Income</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#mdlAddDeduction">Add Deduction</button>
</div>
</div> </div>
</div>
<div class="card-footer">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#mdlAddIncome">Add Income</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#mdlAddDeduction">Add Deduction</button>
</div>
</div> </div>
</div>
</div> </div>
@ -332,6 +521,32 @@ $('.select2').select2();
}); });
function editIncome(element) {
$('#txtEditInInDedName').val($(element).data('inded_name'));
$('#txtEditInEmpPayIndedId').val($(element).data('emppayinded_id'));
//$('#emppay_id').val($(element).data('emppay_id'));
//$('#payschedule_id').val($(element).data('payschedule_id'));
$('#txtEditInInDedId').val($(element).data('inded_id'));
$("[name='amount_type'][value='" + ($(element).data('is_fixed_amt') ? 'fixed' : 'perc') + "']").prop('checked', true);
$('#txtEditInAmount').val($(element).data('amount'));
$('#chkEditInIsOverride').val($(element).data('is_override'));
$('#mdlEditIncome').modal('show');
}
function editDeduction(element) {
$('#txtEditDedInDedName').val($(element).data('inded_name'));
$('#txtEditDedEmpPayIndedId').val($(element).data('emppayinded_id'));
$('#txtEditDedInDedId').val($(element).data('inded_id'));
$("[name='amount_type'][value='" + ($(element).data('is_fixed_amt') ? 'fixed' : 'perc') + "']").prop('checked', true);
$('#txtEditDedAmount').val($(element).data('amount'));
$('#chkEditDedIsOverride').val($(element).data('is_override'));
$('#mdlEditDeduction').modal('show');
}
</script> </script>
<?= $this->endSection() ?> <?= $this->endSection() ?>

Loading…
Cancel
Save