Ajout du support des écritures ventilées.
[garradin.git] / templates / admin / compta / operations / saisir.tpl
1 {include file="admin/_head.tpl" title="Saisie d'une opération" current="compta/saisie" js=1}
2
3 {if $error}
4 <p class="error">
5 {$error|escape}
6 </p>
7 {/if}
8
9 {if $debug}
10 <p class="debug">
11 {$debug|escape}
12 </p>
13 {/if}
14
15 {if $ok}
16 <p class="confirm">
17 L'opération numéro <a href="{$www_url}admin/compta/operations/voir.php?id={$ok|escape}">{$ok|escape}</a> a été ajoutée.
18 (<a href="{$www_url}admin/compta/operations/voir.php?id={$ok|escape}">Voir l'opération</a>)
19 </p>
20 {/if}
21
22 <ul class="actions">
23 <li{if $type == Garradin\Compta_Categories::RECETTES} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?recette">Recette</a></li>
24 <li{if $type == Garradin\Compta_Categories::DEPENSES} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?depense">Dépense</a></li>
25 <li{if $type === 'virement'} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?virement">Virement interne</a></li>
26 <li{if $type === 'dette'} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?dette">Dette</a></li>
27 <li{if is_null($type)} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?avance">Saisie avancée</a></li>
28 </ul>
29
30 <form method="post" action="{$self_url|escape}">
31
32 <fieldset>
33 <legend>Informations sur l'opération</legend>
34 <dl>
35 <dt><label for="f_date">Date</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
36 <dd><input type="date" name="date" id="f_date" value="{form_field name=date default=$date}" size="10" required="required" /></dd>
37 <dt><label for="f_libelle">Libellé</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
38 <dd><input type="text" name="libelle" id="f_libelle" value="{form_field name=libelle}" required="required" /></dd>
39
40 {if is_null($type)}
41 <fieldset id="fluxs">
42 <legend>Flux <b title="(Champ obligatoire)">obligatoire</b></legend>
43 <table>
44 <thead>
45 <tr>
46 <th><label for="f_compte">Compte</label></th>
47 <th><label for="f_montant">Montant<br /><b title="">crédit &lt; 0 &lt; débit</b></label></th>
48 </tr>
49 </thead>
50 <tbody>
51 {foreach from=$fluxs item="flux" key="flux_n" name="fluxs"}
52 <tr>
53 <td class="compte">{select_compte comptes=$comptes name="compte" form_name="compte_$flux_n" id="f_compte_$flux_n" data=$flux}</td>
54 {if !$tpl.foreach.fluxs.last}
55 <td class="montant"><input type="number" size="5" name="montant_{$flux_n}" id="f_montant_{$flux_n}"
56 value="{form_field name="montant" data=$flux}"
57 min="0.00" step="0.01" required="required"
58 /> {$config.monnaie|escape}</td>
59 {/if}
60 </tr>
61 {/foreach}
62 </tbody>
63 </table>
64 </fieldset>
65 {elseif $type === 'virement'}
66 <dt><label for="f_compte1">Compte débité</label></dt>
67 <dd>
68 <select name="compte1" id="f_compte1">
69 <option value="{Garradin\Compta_Comptes::CAISSE}">Caisse</option>
70 {foreach from=$comptes_bancaires item="compte"}
71 <option value="{$compte.id|escape}"{if $compte.id == $banque} selected="selected"{/if}>{$compte.libelle|escape} - {$compte.banque|escape}</option>
72 {/foreach}
73 </select>
74 </dd>
75 <dt><label for="f_compte2">Compte crédité</label></dt>
76 <dd>
77 <select name="compte2" id="f_compte2">
78 <option value="{Garradin\Compta_Comptes::CAISSE}">Caisse</option>
79 {foreach from=$comptes_bancaires item="compte"}
80 <option value="{$compte.id|escape}"{if $compte.id == $banque} selected="selected"{/if}>{$compte.libelle|escape} - {$compte.banque|escape}</option>
81 {/foreach}
82 </select>
83 </dd>
84 {elseif $type === 'dette'}
85 <dt><label for="f_compte_usager">Type de dette</label></dt>
86 <dd>
87 <input type="radio" name="compte" id="f_compte_usager" value="4110" {form_field name=compte checked=4110 default=4110} />
88 <label for="f_compte_usager">Dette envers un membre ou usager</label>
89 </dd>
90 <dd>
91 <input type="radio" name="compte" id="f_compte_fournisseur" value="4010" {form_field name=compte checked=4010} />
92 <label for="f_compte_fournisseur">Dette envers un fournisseur</label>
93 </dd>
94 {else}
95 <dt><label for="f_moyen_paiement">Moyen de paiement</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
96 <dd>
97 <select name="moyen_paiement" id="f_moyen_paiement" required="required">
98 {foreach from=$moyens_paiement item="moyen"}
99 <option value="{$moyen.code|escape}"{if $moyen.code == $moyen_paiement} selected="selected"{/if}>{$moyen.nom|escape}</option>
100 {/foreach}
101 </select>
102 </dd>
103 <dt class="f_cheque"><label for="f_numero_cheque">Numéro de chèque</label></dt>
104 <dd class="f_cheque"><input type="text" name="numero_cheque" id="f_numero_cheque" value="{form_field name=numero_cheque}" /></dd>
105 <dt class="f_banque"><label for="f_banque">Compte bancaire</label></dt>
106 <dd class="f_banque">
107 <select name="banque" id="f_banque">
108 {foreach from=$comptes_bancaires item="compte"}
109 <option value="{$compte.id|escape}"{if $compte.id == $banque} selected="selected"{/if}>{$compte.libelle|escape} - {$compte.banque|escape}</option>
110 {/foreach}
111 </select>
112 </dd>
113 {/if}
114 <dt><label for="f_numero_piece">Numéro de pièce comptable</label></dt>
115 <dd><input type="text" name="numero_piece" id="f_numero_piece" value="{form_field name=numero_piece}" /></dd>
116 <dt><label for="f_remarques">Remarques</label></dt>
117 <dd><textarea name="remarques" id="f_remarques" rows="4" cols="30">{form_field name=remarques}</textarea></dd>
118 </dl>
119 </fieldset>
120
121 {if is_null($type)}
122 <script type="text/javascript">
123 {literal}
124 (function () {
125 if (!document.querySelector || !document.querySelectorAll)
126 {
127 return false;
128 }
129 fluxs = document.querySelector('#fluxs');
130 if (fluxs)
131 {
132 var fluxs = fluxs.querySelectorAll('#fluxs > table > tbody > tr');
133 var fluxs_nb = fluxs.length;
134
135 var add = document.createElement('input');
136 add.type = 'button';
137 add.className = 'icn add';
138 add.value = '+';
139 add.title = 'Ajouter un flux';
140 add.onclick = function (e) {
141 var p = this.parentNode.parentNode; // tbody
142 var fluxs = p.querySelectorAll('tr'); // tr
143 var fluxs_nb = fluxs.length;
144
145 // Add new last flux
146 var new_flux = this.parentNode.cloneNode(true); // tr
147 var new_compte = new_flux.querySelector('.compte');
148 new_compte.querySelector('select').id = 'f_compte_'+fluxs_nb;
149 new_compte.querySelector('select').name = 'compte_'+fluxs_nb;
150 p.appendChild(new_flux);
151
152 // Add a montant to old last flux
153 var new_montant = fluxs[0].querySelector('.montant').cloneNode(true);
154 new_montant.querySelector('input').id = 'f_montant_'+(fluxs_nb - 1);
155 new_montant.querySelector('input').name = 'montant_'+(fluxs_nb - 1);
156 new_montant.querySelector('input').value = '0';
157 this.parentNode.appendChild(new_montant);
158 this.parentNode.removeChild(this);
159
160 // Register this callback on new flux
161 var btn = new_flux.querySelector('input.add');
162 btn.onclick = this.onclick;
163 };
164
165 fluxs[fluxs_nb - 1].appendChild(add);
166 }
167 }());
168 {/literal}
169 </script>
170 {elseif $type == Garradin\Compta_Categories::DEPENSES || $type == Garradin\Compta_Categories::RECETTES || $type == 'dette'}
171 <fieldset>
172 <legend>Catégorie</legend>
173 <dl class="catList">
174 {foreach from=$categories item="cat"}
175 <dt>
176 <input type="radio" name="categorie" value="{$cat.id|escape}" id="f_cat_{$cat.id|escape}" {form_field name="categorie" checked=$cat.id} />
177 <label for="f_cat_{$cat.id|escape}">{$cat.intitule|escape}</label>
178 </dt>
179 {if !empty($cat.description)}
180 <dd class="desc">{$cat.description|escape}</dd>
181 {/if}
182 {/foreach}
183 </dl>
184 </fieldset>
185
186 <script type="text/javascript">
187 {literal}
188 (function () {
189
190 window.changeMoyenPaiement = function()
191 {
192 var elm = $('#f_moyen_paiement');
193 toggleElementVisibility('.f_cheque', elm.value == 'CH');
194 toggleElementVisibility('.f_banque', elm.value != 'ES');
195 };
196
197 changeMoyenPaiement();
198
199 $('#f_moyen_paiement').onchange = changeMoyenPaiement;
200 } ());
201 {/literal}
202 </script>
203 {/if}
204
205 <p class="submit">
206 {csrf_field key="compta_saisie"}
207 <input type="submit" name="save" value="Enregistrer &rarr;" />
208 </p>
209
210 </form>
211
212 {include file="admin/_foot.tpl"}