{{* -*- brindille -*- *}} {{#restrict block=true section="accounting" level="write"}}{{/restrict}} {{* récupérer la config des entrées/sorties *}} {{:include file="../_get_config.html" keep="config"}} {{* types d'entrées *}} {{#foreach from=$config.input_nature key=key}} {{if $type != 'retour'}} {{:assign var="input_labels.%s"|args:$key value=$label}} {{/if}} {{/foreach}} {{* lister les catégories *}} {{#load type="category" assign="category" order="$$.name"}} {{:assign var="categories.%s"|args:$category.key value=$category.name}} {{/load}} {{* lister les états matériels possibles *}} {{:assign var="states" value=$module.config.states|explode:","}} {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} {{* vérifier la quantité saisie *}} {{if $_POST.amount <= 0}} {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}} {{/if}} {{* vérifier la date saisie *}} {{:assign mvt_date=$_POST.date|parse_date}} {{if $mvt_date == null || $mvt_date === false}} {{:error message="La date saisie est vide ou incorrecte (%s)"|args:$_POST.date}} {{/if}} {{if $mvt_date|strtotime > $now}} {{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}} {{/if}} {{* vérifier l'existence d'un matériel de même nom *}} {{#load type="equipment" where="$$.name = :name COLLATE U_NOCASE" :name=$_POST.name|trim limit=1 assign="equipment"}} {{:assign present=true}} {{/load}} {{:assign var=nom_cat from="categories.%s"|args:$equipment.category}} {{:assign var=post_cat from="categories.%s"|args:$_POST.category}} {{:assign post_mat=$_POST.name|trim}} {{:assign var="type_mvt" from="config.input_nature.%s.type"|args:$_POST.operation}} {{if $present}} {{* voir si le matériel existe dans une autre catégorie *}} {{if $nom_cat != $post_cat}} {{:error message="Le matériel « %s » est déjà présent dans la catégorie « %s » ..."|args:$post_mat:$nom_cat}} {{/if}} {{* calculer la nouvelle quantité du matériel *}} {{if $type_mvt == 'définitif'}} {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$_POST.amount|intval}} {{elseif $type_mvt == 'temporaire'}} {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$_POST.amount|intval}} {{/if}} {{:assign equipment_key=$equipment.key}} {{:save key=$equipment_key validate_schema="../equipment.schema.json" type="equipment" category=$_POST.category name=$post_mat status="disponible" stock=$equipment.stock out=$equipment.out notowned=$equipment.notowned state=$equipment.state serialno=$equipment.serialno description=$equipment.descriptio member=$equipment.member fields=$equipment.fields }} {{else}} {{* enregistrer un nouveau matériel *}} {{:assign equipment_key=""|uuid}} {{if $type_mvt == 'définitif'}} {{:assign stock=$_POST.amount|intval}} {{:assign notowned=null}} {{elseif $type_mvt == 'temporaire'}} {{:assign notowned=$_POST.amount|intval}} {{:assign stock=null}} {{/if}} {{* Enregistrer membre *}} {{if $_POST.user|count > 1}} {{:error message="Un membre au plus peut être associé à un équipement !"}} {{else}} {{#foreach from=$_POST.user key="id" item="name"}} {{:assign var="user.id" value=$id}} {{:assign var="user.name" value=$name}} {{/foreach}} {{/if}} {{* Champs personnalisés *}} {{#foreach from=$module.config.fields key="i" item="field"}} {{if $field.assignedto == 'M'}} {{:assign var="value" from="_POST.fields.%d"|args:$i}} {{:assign var="fields" append=$i value=$value label=$field.label}} {{if $field.required && $value|trim === ''}} {{:error message="Le champ '%s' doit être renseigné."|args:$field.label}} {{/if}} {{/if}} {{/foreach}} {{*:debug post=$_POST*}} {{:save key=$equipment_key validate_schema="../equipment.schema.json" type="equipment" category=$_POST.category name=$post_mat status="disponible" stock=$stock|intval|or:0 out=0 notowned=$notowned|intval|or:0 state=$_POST.state|intval serialno=$_POST.serialno|trim|or:null description=$_POST.description|trim|or:null member=$user.id|intval|or:null fields=$fields|arrayval|or:null }} {{/if}} {{* documents liés *}} {{#foreach from=$_POST.transactions item="value"}} {{:assign var="transactions." value=$value|intval}} {{/foreach}} {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} {{:assign var="operation" from="input_labels.%d"|args:$_POST.type_operation}} {{:save key=$mvt_key validate_schema="./movement.schema.json" type="movement" direction="input" operation=$_POST.operation amount=$_POST.amount|intval equipment=$equipment_key date=$mvt_date comment=$_POST.remarques|trim storage=$_POST.storage transactions=$transactions }} {{if $type_mvt == "temporaire"}} {{:assign prop=0}} {{else}} {{:assign prop=1}} {{/if}} {{:redirect force="../index.html?prop=%s&ok=1&msg=ajout"|args:$prop}} {{/form}} {{:admin_header title="Entrée de matériel" current="module_%s"|args:$module.name}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="../_nav.html" current="entrees"}} {{/if}} {{:form_errors}} {{if $categories != null}} {{#load type="storage" order="$$.name"}} {{:assign var="storage.%s"|args:$key value=$name}} {{/load}} {{* formulaire ajout matériel *}}
{{else}}Il n'y a aucune catégorie, il faut en créer au moins une
{{/if}} {{:admin_footer}}