From 54858e2d189081728f1fb969dc262d47edef2eb5 Mon Sep 17 00:00:00 2001 From: JBthePenguin Date: Tue, 8 Jun 2021 00:23:17 +0200 Subject: [PATCH] ok for all calculation, next add output --- materiels.tar.gz | Bin 18707 -> 20497 bytes src/lib/Equipment.php | 55 ++++++++++++++--- src/lib/Output.php | 16 +++++ src/templates/_nav.tpl | 2 +- src/templates/entrees/deja_repertorie.tpl | 12 ++-- src/templates/entrees/index.tpl | 42 ++++++------- src/templates/index.tpl | 56 ++++++++++++++++-- .../{sorties.tpl => sorties/en_stock.tpl} | 2 + src/templates/sorties/index.tpl | 34 +++++++++++ src/templates/sorties/pas_proprietaire.tpl | 7 +++ src/www/admin/index.php | 9 ++- src/www/admin/sorties/en_stock.php | 21 +++++++ src/www/admin/sorties/index.php | 21 +++++++ src/www/admin/sorties/pas_proprietaire.php | 21 +++++++ 14 files changed, 259 insertions(+), 39 deletions(-) rename src/templates/{sorties.tpl => sorties/en_stock.tpl} (91%) create mode 100644 src/templates/sorties/index.tpl create mode 100644 src/templates/sorties/pas_proprietaire.tpl create mode 100644 src/www/admin/sorties/en_stock.php create mode 100644 src/www/admin/sorties/index.php create mode 100644 src/www/admin/sorties/pas_proprietaire.php diff --git a/materiels.tar.gz b/materiels.tar.gz index 3a210c69d102da479abd982990b2f83a4ec44d1a..4e35a8283c391511df25ecf90b79fdd75f473d63 100644 GIT binary patch literal 20497 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 C_S9nl diff --git a/src/lib/Equipment.php b/src/lib/Equipment.php index 7073614..6b3253d 100644 --- a/src/lib/Equipment.php +++ b/src/lib/Equipment.php @@ -47,21 +47,62 @@ class Equipment 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_owned_by_cat = array(); + $eqmts_no_owned_by_cat = array(); + $eqmts_just_listed_by_cat = array(); foreach ($eqmts_by_cat as $cat => $eqmts) { $eqmts_owned = array(); + $eqmts_no_owned = array(); + $eqmts_just_listed = array(); foreach ($eqmts as $eqmt) { - $stock = $this->CalculateStock($eqmt->id); - if ($stock) { - $eqmt->stock = $this->CalculateStock($eqmt->id); - array_push($eqmts_owned, $eqmt); - } + $stock = $this->CalculateStock($eqmt->id); + if ($stock) { + $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); + } + $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_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 + ); } } diff --git a/src/lib/Output.php b/src/lib/Output.php index fa81984..edccd08 100644 --- a/src/lib/Output.php +++ b/src/lib/Output.php @@ -17,4 +17,20 @@ class Output '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;'); + } } diff --git a/src/templates/_nav.tpl b/src/templates/_nav.tpl index 53d00bb..f864fad 100644 --- a/src/templates/_nav.tpl +++ b/src/templates/_nav.tpl @@ -3,7 +3,7 @@
  • Inventaire
  • Catégories
  • Entrées
  • -
  • Sorties
  • +
  • Sorties
  • Recherche
  • diff --git a/src/templates/entrees/deja_repertorie.tpl b/src/templates/entrees/deja_repertorie.tpl index 64bf151..37795a6 100644 --- a/src/templates/entrees/deja_repertorie.tpl +++ b/src/templates/entrees/deja_repertorie.tpl @@ -5,11 +5,13 @@
    diff --git a/src/templates/entrees/index.tpl b/src/templates/entrees/index.tpl index 8f85de4..15e08f6 100644 --- a/src/templates/entrees/index.tpl +++ b/src/templates/entrees/index.tpl @@ -8,25 +8,27 @@ {linkbutton shape="plus" label="Matériel déjà répertorié" href="deja_repertorie.php"} - - - - - - - - - - {foreach from=$entries item="entry"} - - - - - - - - {/foreach} - -
    DateTypeNombreMatérielRemarques
    {$entry.entry_date}{$entry.kind}{$entry.equipment_number}{$entry.equipment.designation}{$entry.additional_comment}
    +{if $entries} + + + + + + + + + + {foreach from=$entries item="entry"} + + + + + + + + {/foreach} + +
    DateTypeNombreMatérielRemarques
    {$entry.entry_date}{$entry.kind}{$entry.equipment_number}{$entry.equipment.designation}{$entry.additional_comment}
    +{/if} {include file="admin/_foot.tpl"} diff --git a/src/templates/index.tpl b/src/templates/index.tpl index c9256dc..55dbb3f 100644 --- a/src/templates/index.tpl +++ b/src/templates/index.tpl @@ -21,8 +21,8 @@ {$eqmt.designation} {$eqmt.stock} - 0 - 0 + {$eqmt.out_of_stock} + {$eqmt.stock - $eqmt.out_of_stock} {linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id} @@ -33,8 +33,56 @@ {/if} {/foreach} -

    Matériel dont l'association n'est pas propriétaire

    +

    Matériel dont l'association n'est pas propriétaire (loué ou prêté)

    +{foreach from=$eqmts_no_owned_by_cat key='cat' item="eqmts"} + {if $eqmts} +

    {$cat}

    + + + + + + + + + + {foreach from=$eqmts item="eqmt"} + + + + + + {/foreach} + +
    DésignationNombre
    {$eqmt.designation}{$eqmt.no_owned} + {linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id} +
    + {/if} +{/foreach} -

    Matériel déjà répertorié qui n'est plus en possession de l'association

    +

    Matériel dont l'association n'est plus en possession

    +{foreach from=$eqmts_just_listed_by_cat key='cat' item="eqmts"} + {if $eqmts} +

    {$cat}

    + + + + + + + + + {foreach from=$eqmts item="eqmt"} + + + + + {/foreach} + +
    Désignation
    {$eqmt.designation} + {linkbutton shape="edit" label="Modifier" href="modifier_materiel.php?id=%d"|args:$eqmt.id} +
    + {/if} +{/foreach} {include file="admin/_foot.tpl"} diff --git a/src/templates/sorties.tpl b/src/templates/sorties/en_stock.tpl similarity index 91% rename from src/templates/sorties.tpl rename to src/templates/sorties/en_stock.tpl index a458237..d099546 100644 --- a/src/templates/sorties.tpl +++ b/src/templates/sorties/en_stock.tpl @@ -2,4 +2,6 @@ {include file="%s_nav.tpl"|args:$plugin_tpl current="sorties"} +en stock sortie + {include file="admin/_foot.tpl"} diff --git a/src/templates/sorties/index.tpl b/src/templates/sorties/index.tpl new file mode 100644 index 0000000..d292667 --- /dev/null +++ b/src/templates/sorties/index.tpl @@ -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"} + +
    + Ajouter une sortie pour du + {linkbutton shape="plus" label="Matériel en stock" href="en_stock.php"} + {linkbutton shape="plus" label="Matériel emprunté" href="pas_proprietaire.php"} +
    + +{if $outputs} + + + + + + + + + + {foreach from=$outputs item="output"} + + + + + + + + {/foreach} + +
    DateTypeNombreMatérielRemarques
    {$output.output_date}{$output.kind}{$output.equipment_number}{$output.equipment.designation}{$output.additional_comment}
    +{/if} + +{include file="admin/_foot.tpl"} diff --git a/src/templates/sorties/pas_proprietaire.tpl b/src/templates/sorties/pas_proprietaire.tpl new file mode 100644 index 0000000..4c30ce2 --- /dev/null +++ b/src/templates/sorties/pas_proprietaire.tpl @@ -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"} diff --git a/src/www/admin/index.php b/src/www/admin/index.php index f61213a..39ae74e 100644 --- a/src/www/admin/index.php +++ b/src/www/admin/index.php @@ -13,8 +13,13 @@ require_once __DIR__ . '/_inc.php'; $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'); diff --git a/src/www/admin/sorties/en_stock.php b/src/www/admin/sorties/en_stock.php new file mode 100644 index 0000000..f4cc7a2 --- /dev/null +++ b/src/www/admin/sorties/en_stock.php @@ -0,0 +1,21 @@ +assign(compact('csrf_key')); + +$tpl->display(PLUGIN_ROOT . '/templates/sorties/en_stock.tpl'); diff --git a/src/www/admin/sorties/index.php b/src/www/admin/sorties/index.php new file mode 100644 index 0000000..351d909 --- /dev/null +++ b/src/www/admin/sorties/index.php @@ -0,0 +1,21 @@ +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'); diff --git a/src/www/admin/sorties/pas_proprietaire.php b/src/www/admin/sorties/pas_proprietaire.php new file mode 100644 index 0000000..7b32f79 --- /dev/null +++ b/src/www/admin/sorties/pas_proprietaire.php @@ -0,0 +1,21 @@ +assign(compact('csrf_key')); + +$tpl->display(PLUGIN_ROOT . '/templates/sorties/pas_proprietaire.tpl');