2021-06-07 18:30:20 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Garradin\Plugin\Materiels;
|
|
|
|
|
|
|
|
use Garradin\DB;
|
2021-06-10 15:17:54 +02:00
|
|
|
use Garradin\Plugin\Materiels\Equipment;
|
2021-06-12 11:30:20 +02:00
|
|
|
use Garradin\Plugin\Materiels\Entry;
|
2021-06-07 18:30:20 +02:00
|
|
|
|
|
|
|
class Output
|
|
|
|
{
|
|
|
|
public function listKinds()
|
|
|
|
{
|
|
|
|
return array(
|
|
|
|
'Vente',
|
|
|
|
'Don',
|
|
|
|
'Besoin',
|
|
|
|
'Autre (perte, vol, ...)',
|
|
|
|
'Location / Prêt',
|
|
|
|
);
|
|
|
|
}
|
2021-06-08 00:23:17 +02:00
|
|
|
|
|
|
|
public function add($data = [])
|
|
|
|
{
|
|
|
|
DB::getInstance()->insert('plugin_materiels_output', $data);
|
|
|
|
}
|
|
|
|
|
2021-06-12 11:30:20 +02:00
|
|
|
public function get($id)
|
|
|
|
{
|
|
|
|
return DB::getInstance()->first('SELECT * FROM plugin_materiels_output WHERE id = ?;', $id);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function delete($id)
|
2021-06-08 00:23:17 +02:00
|
|
|
{
|
2021-06-12 11:30:20 +02:00
|
|
|
DB::getInstance()->delete('plugin_materiels_output', 'id = ' . $id);
|
2021-06-08 00:23:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function listAll()
|
|
|
|
{
|
|
|
|
return DB::getInstance()->get('SELECT * FROM plugin_materiels_output ORDER BY output_date DESC;');
|
|
|
|
}
|
2021-06-10 15:17:54 +02:00
|
|
|
|
|
|
|
public function PossibilityOwnedEqmtOutput($id, $eqmt_number, $date)
|
|
|
|
{
|
|
|
|
$after_output_dates = DB::getInstance()->get(
|
|
|
|
"SELECT output_date FROM plugin_materiels_output WHERE kind IN (
|
|
|
|
'Vente', 'Don', 'Besoin', 'Autre (perte, vol, ...)',
|
|
|
|
'Location / Prêt') AND equipment_id = '{$id}' AND output_date > '{$date}';");
|
|
|
|
$output_dates = array($date);
|
|
|
|
foreach ($after_output_dates as $row)
|
|
|
|
{
|
|
|
|
array_push($output_dates, $row->output_date);
|
|
|
|
}
|
|
|
|
$eqmt = new Equipment;
|
|
|
|
foreach ($output_dates as $output_date) {
|
|
|
|
$available_eqmt = $eqmt->CalculateAvailableByDate($id, $output_date);
|
|
|
|
if ($available_eqmt - $eqmt_number < 0)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
2021-06-11 14:36:42 +02:00
|
|
|
|
|
|
|
public function PossibilityNoOwnedEqmtOutput($id, $eqmt_number, $date)
|
|
|
|
{
|
|
|
|
$after_output_dates = DB::getInstance()->get(
|
|
|
|
"SELECT output_date FROM plugin_materiels_output WHERE kind = 'Retour de location / prêt' AND equipment_id = '{$id}' AND output_date > '{$date}';");
|
|
|
|
$output_dates = array($date);
|
|
|
|
foreach ($after_output_dates as $row)
|
|
|
|
{
|
|
|
|
array_push($output_dates, $row->output_date);
|
|
|
|
}
|
|
|
|
$eqmt = new Equipment;
|
|
|
|
foreach ($output_dates as $output_date) {
|
|
|
|
$borrowed_eqmt = $eqmt->CalculateNoOwnedByDate($id, $output_date);
|
|
|
|
if ($borrowed_eqmt - $eqmt_number < 0)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
2021-06-12 11:30:20 +02:00
|
|
|
|
|
|
|
public function PossibilityDeleteOutput($output)
|
|
|
|
{
|
|
|
|
$entry = new Entry;
|
|
|
|
if ($output->kind == 'Location / Prêt')
|
|
|
|
{
|
|
|
|
return $entry->PossibilityRentEqmtEntry(
|
|
|
|
$output->equipment_id, $output->equipment_number, $output->output_date);
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
2021-08-31 13:36:06 +02:00
|
|
|
|
|
|
|
public function AllDatesByEquipment($eqmt_id)
|
|
|
|
{
|
|
|
|
$output_dates = DB::getInstance()->get(
|
|
|
|
'SELECT DISTINCT output_date FROM plugin_materiels_output WHERE equipment_id = ? ORDER BY output_date DESC;', $eqmt_id);
|
|
|
|
$output_dates_array = array();
|
|
|
|
foreach ($output_dates as $row)
|
|
|
|
{
|
|
|
|
array_push($output_dates_array, $row->output_date);
|
|
|
|
}
|
|
|
|
return $output_dates_array;
|
|
|
|
}
|
2021-06-07 18:30:20 +02:00
|
|
|
}
|