ok for all calculation, next add output

This commit is contained in:
JBthePenguin 2021-06-08 00:23:17 +02:00
parent 71775c0f67
commit 54858e2d18
14 changed files with 259 additions and 39 deletions

Binary file not shown.

View File

@ -47,21 +47,62 @@ class Equipment
return $entries - $outputs; return $entries - $outputs;
} }
public function listAllOwnedByCategory() public function CalculateOutOfStock($id)
{
$entries = DB::getInstance()->firstColumn(
"SELECT sum(equipment_number) FROM plugin_materiels_entry WHERE kind = 'Retour de location / prêt' AND equipment_id = ?;", $id);
$outputs = DB::getInstance()->firstColumn(
"SELECT sum(equipment_number) FROM plugin_materiels_output WHERE kind = 'Location / Prêt' AND equipment_id = ?;", $id);
return $outputs - $entries;
}
public function CalculateNoOwned($id)
{
$entries = DB::getInstance()->firstColumn(
"SELECT sum(equipment_number) FROM plugin_materiels_entry WHERE kind = 'Location / Prêt' AND equipment_id = ?;", $id);
$outputs = DB::getInstance()->firstColumn(
"SELECT sum(equipment_number) FROM plugin_materiels_output WHERE kind = 'Retour de location / prêt' AND equipment_id = ?;", $id);
return $entries - $outputs;
}
public function GetAllListByCategory()
{ {
$eqmts_by_cat = $this->listAllByCategory(); $eqmts_by_cat = $this->listAllByCategory();
$eqmts_owned_by_cat = array(); $eqmts_owned_by_cat = array();
$eqmts_no_owned_by_cat = array();
$eqmts_just_listed_by_cat = array();
foreach ($eqmts_by_cat as $cat => $eqmts) { foreach ($eqmts_by_cat as $cat => $eqmts) {
$eqmts_owned = array(); $eqmts_owned = array();
$eqmts_no_owned = array();
$eqmts_just_listed = array();
foreach ($eqmts as $eqmt) { foreach ($eqmts as $eqmt) {
$stock = $this->CalculateStock($eqmt->id); $stock = $this->CalculateStock($eqmt->id);
if ($stock) { if ($stock) {
$eqmt->stock = $this->CalculateStock($eqmt->id); $eqmt->stock = $stock;
$out_of_stock = $this->CalculateOutOfStock($eqmt->id);
if ($out_of_stock) {
$eqmt->out_of_stock = $out_of_stock;
} else {
$eqmt->out_of_stock = 0;
}
array_push($eqmts_owned, $eqmt); array_push($eqmts_owned, $eqmt);
} }
$no_owned = $this->CalculateNoOwned($eqmt->id);
if ($no_owned) {
$eqmt->no_owned = $no_owned;
array_push($eqmts_no_owned, $eqmt);
}
if ($stock + $no_owned == 0) {
array_push($eqmts_just_listed, $eqmt);
}
} }
$eqmts_owned_by_cat[$cat] = $eqmts_owned; $eqmts_owned_by_cat[$cat] = $eqmts_owned;
$eqmts_no_owned_by_cat[$cat] = $eqmts_no_owned;
$eqmts_just_listed_by_cat[$cat] = $eqmts_just_listed;
} }
return $eqmts_owned_by_cat; return array(
$eqmts_owned_by_cat, $eqmts_no_owned_by_cat,
$eqmts_just_listed_by_cat
);
} }
} }

View File

@ -17,4 +17,20 @@ class Output
'Retour de location / prêt', 'Retour de location / prêt',
); );
} }
public function add($data = [])
{
DB::getInstance()->insert('plugin_materiels_output', $data);
}
public function edit($id, $data = [])
{
$db = DB::getInstance();
$db->update('plugin_materiels_output', $data, $db->where('id', $id));
}
public function listAll()
{
return DB::getInstance()->get('SELECT * FROM plugin_materiels_output ORDER BY output_date DESC;');
}
} }

View File

@ -3,7 +3,7 @@
<li class="{if $current == 'index'}current{/if}"><a href="{plugin_url}">Inventaire</a></li> <li class="{if $current == 'index'}current{/if}"><a href="{plugin_url}">Inventaire</a></li>
<li class="{if $current == 'categories'}current{/if}"><a href="{plugin_url file="categories/index.php"}">Catégories</a></li> <li class="{if $current == 'categories'}current{/if}"><a href="{plugin_url file="categories/index.php"}">Catégories</a></li>
<li class="{if $current == 'entrees'}current{/if}"><a href="{plugin_url file="entrees/index.php"}">Entrées</a></li> <li class="{if $current == 'entrees'}current{/if}"><a href="{plugin_url file="entrees/index.php"}">Entrées</a></li>
<li class="{if $current == 'sorties_definitives'}current{/if}"><a href="{plugin_url file="sorties.php"}">Sorties</a></li> <li class="{if $current == 'sorties'}current{/if}"><a href="{plugin_url file="sorties/index.php"}">Sorties</a></li>
<li class="{if $current == 'recherche'}current{/if}"><a href="{plugin_url file="recherche.php"}">Recherche</a></li> <li class="{if $current == 'recherche'}current{/if}"><a href="{plugin_url file="recherche.php"}">Recherche</a></li>
</ul> </ul>
</nav> </nav>

View File

@ -5,11 +5,13 @@
<dd> <dd>
<select name="equipment_id" id="f_eqmt"> <select name="equipment_id" id="f_eqmt">
{foreach from=$eqmts_by_cat key='cat' item="eqmts"} {foreach from=$eqmts_by_cat key='cat' item="eqmts"}
{if $eqmts}
<optgroup label="-- {$cat} --"> <optgroup label="-- {$cat} --">
{foreach from=$eqmts item="eqmt"} {foreach from=$eqmts item="eqmt"}
<option value="{$eqmt.id}">{$eqmt.designation}</option> <option value="{$eqmt.id}">{$eqmt.designation}</option>
{/foreach} {/foreach}
</optgroup> </optgroup>
{/if}
{/foreach} {/foreach}
</select> </select>
</dd> </dd>

View File

@ -8,6 +8,7 @@
{linkbutton shape="plus" label="Matériel déjà répertorié" href="deja_repertorie.php"} {linkbutton shape="plus" label="Matériel déjà répertorié" href="deja_repertorie.php"}
</fieldset> </fieldset>
{if $entries}
<table class="list"> <table class="list">
<thead> <thead>
<th><b>Date</b></th> <th><b>Date</b></th>
@ -28,5 +29,6 @@
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
{/if}
{include file="admin/_foot.tpl"} {include file="admin/_foot.tpl"}

View File

@ -21,8 +21,8 @@
<tr> <tr>
<td>{$eqmt.designation}</td> <td>{$eqmt.designation}</td>
<td>{$eqmt.stock}</td> <td>{$eqmt.stock}</td>
<td>0</td> <td>{$eqmt.out_of_stock}</td>
<td>0</td> <td>{$eqmt.stock - $eqmt.out_of_stock}</td>
<td class="actions"> <td class="actions">
{linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id} {linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id}
</td> </td>
@ -33,8 +33,56 @@
{/if} {/if}
{/foreach} {/foreach}
<h2>Matériel dont l'association n'est pas propriétaire</h2> <h2>Matériel dont l'association n'est pas propriétaire (loué ou prêté)</h2>
{foreach from=$eqmts_no_owned_by_cat key='cat' item="eqmts"}
{if $eqmts}
<h3>{$cat}</h3>
<table class="list">
<thead>
<tr>
<th><b>Désignation</b></th>
<th><b>Nombre</b></th>
<th></th>
</tr>
</thead>
<tbody>
{foreach from=$eqmts item="eqmt"}
<tr>
<td>{$eqmt.designation}</td>
<td>{$eqmt.no_owned}</td>
<td class="actions">
{linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id}
</td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
{/foreach}
<h2>Matériel déjà répertorié qui n'est plus en possession de l'association</h2> <h2>Matériel dont l'association n'est plus en possession</h2>
{foreach from=$eqmts_just_listed_by_cat key='cat' item="eqmts"}
{if $eqmts}
<h3>{$cat}</h3>
<table class="list">
<thead>
<tr>
<th><b>Désignation</b></th>
<th></th>
</tr>
</thead>
<tbody>
{foreach from=$eqmts item="eqmt"}
<tr>
<td>{$eqmt.designation}</td>
<td class="actions">
{linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id}
</td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
{/foreach}
{include file="admin/_foot.tpl"} {include file="admin/_foot.tpl"}

View File

@ -2,4 +2,6 @@
{include file="%s_nav.tpl"|args:$plugin_tpl current="sorties"} {include file="%s_nav.tpl"|args:$plugin_tpl current="sorties"}
en stock sortie
{include file="admin/_foot.tpl"} {include file="admin/_foot.tpl"}

View File

@ -0,0 +1,34 @@
{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
{include file="%s_nav.tpl"|args:$plugin_tpl current="sorties"}
<fieldset>
<legend>Ajouter une sortie pour du </legend>
{linkbutton shape="plus" label="Matériel en stock" href="en_stock.php"}
{linkbutton shape="plus" label="Matériel emprunté" href="pas_proprietaire.php"}
</fieldset>
{if $outputs}
<table class="list">
<thead>
<th><b>Date</b></th>
<th><b>Type</b></th>
<th><b>Nombre</b></th>
<th><b>Matériel</b></th>
<th><b>Remarques</b></th>
</thead>
<tbody>
{foreach from=$outputs item="output"}
<tr>
<td>{$output.output_date}</td>
<td>{$output.kind}</td>
<td>{$output.equipment_number}</td>
<td>{$output.equipment.designation}</td>
<td>{$output.additional_comment}</td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
{include file="admin/_foot.tpl"}

View File

@ -0,0 +1,7 @@
{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
{include file="%s_nav.tpl"|args:$plugin_tpl current="sorties"}
pas propriétaire sortie
{include file="admin/_foot.tpl"}

View File

@ -13,8 +13,13 @@ require_once __DIR__ . '/_inc.php';
$eqmt = new Equipment; $eqmt = new Equipment;
$eqmts_owned_by_cat = $eqmt->listAllOwnedByCategory(); list(
$eqmts_owned_by_cat, $eqmts_no_owned_by_cat,
$eqmts_just_listed_by_cat) = $eqmt->GetAllListByCategory();
$tpl->assign(compact('eqmts_owned_by_cat')); $tpl->assign(compact(
'eqmts_owned_by_cat', 'eqmts_no_owned_by_cat',
'eqmts_just_listed_by_cat'
));
$tpl->display(PLUGIN_ROOT . '/templates/index.tpl'); $tpl->display(PLUGIN_ROOT . '/templates/index.tpl');

View File

@ -0,0 +1,21 @@
<?php
namespace Garradin;
use Garradin\Plugin\Materiels\Output;
use Garradin\Plugin\Materiels\Equipment;
use Garradin\Utils;
require_once __DIR__ . '/../_inc.php';
$output = new Output;
$eqmt = new Equipment;
$csrf_key = 'add_output';
$cancel_link = PLUGIN_URL . 'sorties/index.php';
$tpl->assign(compact('csrf_key'));
$tpl->display(PLUGIN_ROOT . '/templates/sorties/en_stock.tpl');

View File

@ -0,0 +1,21 @@
<?php
namespace Garradin;
use Garradin\Plugin\Materiels\Equipment;
use Garradin\Plugin\Materiels\Output;
require_once __DIR__ . '/../_inc.php';
$eqmt = new Equipment;
$output = new Output;
$outputs = $output->listAll();
foreach ($outputs as $key => $value) {
$outputs[$key]->equipment = $eqmt->get($value->equipment_id);
}
$tpl->assign(compact('outputs'));
$tpl->display(PLUGIN_ROOT . '/templates/sorties/index.tpl');

View File

@ -0,0 +1,21 @@
<?php
namespace Garradin;
use Garradin\Plugin\Materiels\Output;
use Garradin\Plugin\Materiels\Equipment;
use Garradin\Utils;
require_once __DIR__ . '/../_inc.php';
$output = new Output;
$eqmt = new Equipment;
$csrf_key = 'add_output';
$cancel_link = PLUGIN_URL . 'sorties/index.php';
$tpl->assign(compact('csrf_key'));
$tpl->display(PLUGIN_ROOT . '/templates/sorties/pas_proprietaire.tpl');