{{* -*- 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 *}}
Informations obligatoires
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="text" name="name" label="Désignation" required=true}} {{:input type="textarea" cols=40 rows=3 name="description" label="Description complète" required=false}} {{:input type="text" name="serialno" label="N° de suivi" required=false help="Exemples: numéro de série, code-barre, référence d'immobilisation, immatriculation, etc."}} {{:input type="number" name="amount" label="Quantité" min=1 required=true default=1 help="Ne pas dépasser 1 si un N° de série est renseigné."}} {{if $input_labels|count == 1}} {{:input type="select" name="operation" label="Type" required=true options=$input_labels}} {{else}} {{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}} {{/if}} {{if $categories|count == 1}} {{:input type="select" name="category" label="Catégorie" options=$categories required=true}} {{else}} {{:input type="select" name="category" label="Catégorie" default_empty="— Aucune —" options=$categories required=true}} {{/if}} {{:input type="select" name="state" label="État du matériel" default_empty="— Aucun —" options=$states required=true}}
Autres informations
{{if $storage != null}} {{:input type="select" name="storage" label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}} {{/if}} {{:input type="list" name="transactions" label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}} {{:input type="list" name="user" label="Donateur/Loueur" target="!users/selector.php" multiple=false can_delete=true help="Donateur ou Loueur (membres uniquement)"}} {{*:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false*}}
Champs Personnalisés
{{#foreach from=$module.config.fields key="i" item="field"}} {{if $field.assignedto == 'M'}} {{*:assign var="value" from="item.fields.%d"|args:$i}} {{:assign var="_value" from="entry.fields.%d.value"|args:$i*}} {{* aa:{{$i}} {{$field.label}} / {{$value.label}} / {{$value.value}} != {{$_value}} *}} {{if $field.type == 'checkbox'}} {{:assign retval="Oui"}} {{else}} {{*:assign var="retval" from='parentitem.0.fields.%d.value'|args:$i*}} {{* bb: {{$retval}}*}} {{*if $_value !== null}} {{:assign var="retval" value=$_value}} {{/if*}} {{/if}} {{if $field.type == 'monetary'}} {{:input name="fields[%s]"|args:$i label=$field.label type="number" help=$field.help required=$field.required default=$retval value=$retval min="0" step="any"}} {{else}} {{:input name="fields[%s]"|args:$i label=$field.label type=$field.type help=$field.help required=$field.required default=$retval value=$retval}} {{/if}} {{/if}} {{/foreach}}

{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}

{{else}}

Il n'y a aucune catégorie, il faut en créer au moins une

{{/if}} {{:admin_footer}}