По сути, я должен рассчитывать ежемесячное пособие на питание для каждого сотрудника на основе их ежемесячной посещаемости, что оставляет мне только одну таблицу, таблица посещаемости
Вычисление надбавки на питание довольно простое, мне нужно только подсчитать, сколько дней посетил сотрудник, и рассчитать его одним номером (это число должно быть динамическим или редактируемым).
this is the example of the calculation:
number of attendance * 15.00 (editable number)
вот мои данные для таблица посещаемости
----------------------------------------------------------------------------
| attendance_id | emp_code | emp_name | date | time_in | time_out |
| 1 | ALB | Albert | 2018.01.01 | 07.00 | 18.00 |
| 2 | GlN | GLENN | 2018.01.01 | 07.00 | 18.00 |
| 3 | ALB | Albert | 2018.01.02 | 07.00 | 18.00 |
| 4 | GLN | GLENN | 2018.01.02 | 07.00 | 18.00 |
| 5 | ALB | Albert | 2018.01.04 | 07.00 | 18.00 |
| 6 | GLN | GLENN | 2018.01.04 | 07.00 | 18.00 |
----------------------------------------------------------------------------
До сих пор мне уже удавалось подсчитать ежемесячный итог (подсчитав, сколько дней они посетили), это мое текущее состояние:
------------------------------------------------
| emp_code | emp_name | days_attended |
| ALB | Albert | 3 |
| GLN | GLENN | 3 |
-------------------------------------------------
Это мое контроллер
public function index(){
$this->load->model('allowance_m');
$data['query'] = $this->allowance_m->calculate();
$this->load->vars($data);
$this->load->view('allowance_v',$data);
}
Это мое модель (Allowance_m.php)
public function hitungabsen()
{
$this->db->select('attendance_id,emp_code,emp_name, COUNT(date) as days_attended');
$this->db->from('attendance');
$this->db->group_by('emp_code');
$query = $this->db->get();
return $query->result();
}
Это мое Посмотреть allowance_v.php
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th><center>Employee Code</center></th>
<th><center>Employee Name</center></th>
<th><center>Days Attended</center></th>
</tr>
</thead>
<?php
$no = 1;
foreach($query as $row){
?>
<tr>
<td><?php echo $row->emp_code ?></td>
<td><?php echo $row->emp_name ?></td>
<td><?php echo $row->days_attended ?></td>
</tr>
<?php } ?>
</table>
Теперь мне действительно нужно знать, как я могу рассчитать пособие на питание с учетом введенных дней, и после вычисления результата мне нужно вставить результат в базу данных, чтобы я мог сделать отчет в формате PDF об этом. результат должен быть таким:
------------------------------------------------------------------------
| emp_code | emp_name | days_attended | meal allowance |
| ALB | Albert | 3 |(automaticaly updated) |
| GLN | GLENN | 3 |(automaticaly updated) |
------------------------------------------------------------------------
ЗАРАНЕЕ СПАСИБО! Очень нужен ответ как можно скорее, это много значит для меня
Не совсем все понимаю, но это должно сработать:
public function calc() {
$meal_allowance = array_column($this->db->select('emp_code')->get('tablename')->result_array(), 'emp_code');
$n = 15;
$results = $this->hitungabsen();
$this->db->trans_start();
foreach ($results as $row) {
$calc = intval($row->days_attended) * $n;
if (in_array($row->emp_code, $meal_allowance)) {
$this->db->update('tablename', array('meal_allowance' => $calc));
} else {
$data = array(
'emp_code' => $row->emp_code,
'emp_name' => $row->emp_name,
'days_attended' => $row->days_attended,
'meal_allowance' => $calc
);
$this->db->insert('tablename', $data);
}
}
$this->db->trans_complete();
return $this->db->trans_status();
}
Обновляет, если запись существует, вставляет, если ее нет (предполагается, что отдельная таблица со спецификациями в вашем последнем графике)
Других решений пока нет …