Upload plugin files but mPDF folder

This commit is contained in:
ramoloss 2019-11-02 16:53:27 +00:00
parent ba5c48b8e8
commit 9ac4bbce8a
36 changed files with 2864 additions and 0 deletions

View file

@ -0,0 +1,18 @@
<tfoot>
<tr>
{if $session->canAccess('membres', Membres::DROIT_ADMIN)}<td class="check"><input type="checkbox" value="Tout cocher / décocher" /></td>{/if}
<td class="actions" colspan="{$colspan}">
<em>Pour les membres cochés :</em>
{csrf_field key="membres_action"}
<select name="action">
<option value="">— Choisir une action à effectuer —</option>
<option value="csv">Exporter en tableau CSV</option>
<option value="ods">Exporter en classeur Office</option>
<option value="delete">Supprimer</option>
</select>
<noscript>
<input type="submit" value="OK" />
</noscript>
</td>
</tr>
</tfoot>

10
templates/_menu.tpl Normal file
View file

@ -0,0 +1,10 @@
<ul class="actions">
<li{if $current == 'index'} class="current"{/if}><a href="{plugin_url file=""}">Liste documents</a></li>
{if $session->canAccess('compta', Membres::DROIT_ECRITURE)}
<li{if $current == 'facture'} class="current"{/if}><a href="{plugin_url file="facture_ajouter.php"}">Nouveau document</a></li>
{/if}
<li{if $current == 'clients'} class="current"{/if}><a href="{plugin_url file="clients.php"}">Liste clients</a></li>
{if $session->canAccess('compta', Membres::DROIT_ADMIN)}
<li{if $current == 'config'} class="current"{/if}><a href="{plugin_url file="config.php"}">Configuration</a></li>
{/if}
</ul>

View file

@ -0,0 +1,10 @@
<ul class="actions">
<li{if $current == 'clients'} class="current"{/if}><a href="{plugin_url file="clients.php"}">Liste clients</a></li>
<li{if $current == 'client'} class="current"{/if}><a href="{plugin_url file="client.php"}?id={$client.id}">{$client.nom}</a></li>
{if $session->canAccess('compta', Membres::DROIT_ECRITURE)}
<li{if $current == 'client_modifier'} class="current"{/if}>
<a href="{plugin_url file="client_modifier.php"}?id={$client.id}">Modifier</a></li>{/if}
{if $session->canAccess('compta', Membres::DROIT_ADMIN)}
<li{if $current == 'client_supprimer'} class="current"{/if}>
<a href="{plugin_url file="client_supprimer.php"}?id={$client.id}">Supprimer</a></li>{/if}
</ul>

85
templates/client.tpl Normal file
View file

@ -0,0 +1,85 @@
{include file="admin/_head.tpl" title="Client — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id js=0}
{include file="%s/templates/_menu_client.tpl"|args:$plugin_root current="client"}
<dl class="describe" style="display: inline-block;">
<dt>Numéro de client</dt>
<dd><p>{$client.id}</p></dd>
<dt>Nom</dt>
<dd><p>{$client.nom|escape|rtrim|nl2br}</p>
<dt>Adresse</dt>
<dd><p>{$client.adresse|escape|rtrim|nl2br}</p></dd>
<dt>Ville</dt>
<dd><p>{$client.ville|escape|rtrim|nl2br}</p></dd>
<dt>Code postal</dt>
<dd><p>{$client.code_postal|escape|rtrim|nl2br}</p></dd>
<dt>Adresse électronique</dt>
<dd>
{if empty($client.email)}
<em>(Non renseigné)</em>
{else}
<a href="mailto:{$client.email|escape:'url'}">{$client.email}</a>
{/if}
</dd>
<dt>Numéro de téléphone</dt>
<dd>
{if empty($client.telephone)}
<em>(Non renseigné)</em>
{else}
<a href="tel:{$client.telephone}">{$client.telephone|format_tel}</a>
{/if}
</dd>
<dt>Date d'ajout</dt>
<dd>{$client.date_creation|date_fr:'d/m/Y'}</dd>
</dl>
{if $docs}
<div style="display: block;">
<h4>Documents associés</h4>
<table class="list">
<thead>
<td>Type</td>
<td>Numéro</td>
<td>Emission</td>
<td>Echéance</td>
<td>Réglée</td>
<td>Archivée</td>
<td>Moyen paiement</td>
<td>Contenu</td>
<td>Total</td>
</thead>
<tbody>
{foreach from=$docs item=facture}
<tr>
<td>{if $facture.type_facture == 1}Facture{else}Devis{/if}</td>
<td><a href="{plugin_url file="facture.php"}?id={$facture.id}">{$facture.numero}</a></td>
<td>{$facture.date_emission|date_fr:'d/m/Y'}</td>
<td>{$facture.date_echeance|date_fr:'d/m/Y'}</td>
<td>{$facture.reglee}</td>
<td>{$facture.archivee}</td>
<td>{$facture.moyen_paiement}</td>
<td>
{foreach from=$facture.contenu item=contenu}
<p>{$contenu.designation} : {$contenu.prix|escape|html_money}&nbsp;{$config.monnaie}</p>
{/foreach}
</td>
<td>{$facture.total|escape|html_money}&nbsp;{$config.monnaie}</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
{else}
<h4>Cet utilisateur n'a pas de document associé.</h4>
{/if}
{include file="admin/_foot.tpl"}

View file

@ -0,0 +1,32 @@
{include file="admin/_head.tpl" title="Modifier un client — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id js=0}
{include file="%s/templates/_menu_client.tpl"|args:$plugin_root current="client_modifier"}
{form_errors}
<form method="post" action="{$self_url}">
<fieldset>
<legend>Modifier un client</legend>
<dl>
<dt><label for="f_nom">Nom</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="nom" id="f_nom" value="{$client.nom}"/></dd>
<dt><label for="f_adresse">Adresse</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="adresse" id="f_adresse" value="{$client.adresse}"/></dd>
<dt><label for="f_cp">Code postal</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="code_postal" id="f_cp" value="{$client.code_postal}"/></dd>
<dt><label for="f_ville">Ville</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="ville" id="f_ville" value="{$client.ville}"/></dd>
<dt><label for="f_tel">Téléphone</label></dt>
<dd><input type="text" name="telephone" id="f_tel" value="{$client.telephone}"/></dd>
<dt><label for="f_email">Adresse mail</label></dt>
<dd><input type="text" name="email" id="f_email" value="{$client.email}"/></dd>
</dl>
</fieldset>
<p class="submit">
{csrf_field key="edit_client"}
<input type="submit" name="save" value="Enregistrer &rarr;" />
</p>
</form>
{include file="admin/_foot.tpl"}

View file

@ -0,0 +1,30 @@
{include file="admin/_head.tpl" title="Supprimer un client — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id js=0}
{include file="%s/templates/_menu_client.tpl"|args:$plugin_root current="client_supprimer"}
{form_errors}
{if !$deletable}
<form method="post" action="{$self_url}">
<fieldset>
<legend>Supprimer ce client ?</legend>
<h3 class="warning">
Êtes-vous sûr de vouloir supprimer le membre «&nbsp;{$client.nom}&nbsp;» ?
</h3>
<p class="alert">
<strong>Attention</strong> : cette action est irréversible.
</p>
</fieldset>
<p class="submit">
{csrf_field key="delete_client_"|cat:$client.id}
<input type="submit" name="delete" value="Supprimer &rarr;" />
</p>
</form>
{else}
<p>Ce/cette client·e ne peut pas être supprimé·e car des documents lui y sont liés.</p>
{/if}
{include file="admin/_foot.tpl"}

76
templates/clients.tpl Normal file
View file

@ -0,0 +1,76 @@
{include file="admin/_head.tpl" title="Clients — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id js=1}
{include file="%s/templates/_menu.tpl"|args:$plugin_root current="clients"}
{form_errors}
<form method="post" action="{$self_url}" class="memberList">
{if !empty($clients)}
<table class="list">
<thead class="userOrder">
<tr>
{if $session->canAccess('membres', Membres::DROIT_ADMIN)}<td class="check"><input type="checkbox" title="Tout cocher / décocher" /></td>{/if}
{foreach from=$champs key="c" item="champ"}
<td>{if $c == "numero"}#{else}{$champ.title}{/if} </td>
{/foreach}
<td></td>
</tr>
</thead>
<tbody>
{foreach from=$clients item="membre"}
<tr>
{if $session->canAccess('membres', Membres::DROIT_ADMIN)}<td class="check"><input type="checkbox" name="selected[]" value="{$membre.id}" /></td>{/if}
{foreach from=$champs key="c" item="cfg"}
<td>
{if $c == 'nom'}<a href="{plugin_url file="client.php"}?id={$membre.id}">{/if}
{$membre->$c}
{if $c == 'nom'}</a>{/if}
</td>
{/foreach}
<td class="actions">
<a class="icn" href="{plugin_url file="client.php"}?id={$membre.id}" title="Fiche membre">👤</a>
{if $session->canAccess('membres', Membres::DROIT_ECRITURE)}<a class="icn" href="{plugin_url file="client_modifier.php"}?id={$membre.id}" title="Modifier la fiche membre">✎</a>{/if}
</td>
</tr>
{/foreach}
</tbody>
{if $session->canAccess('membres', Membres::DROIT_ADMIN)}
{include file="%s/templates/_list_actions.tpl"|args:$plugin_root colspan=count((array)$champs)+1}
{/if}
</table>
{else}
<p class="alert">
Aucun client trouvé.
</p>
{/if}
</form>
<form method="post" action="{$self_url}">
<fieldset>
<legend>Ajouter un client</legend>
<dl>
<dt><label for="f_nom">Nom</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="nom" name="nom" id="f_nom"/></dd>
<dt><label for="f_adresse">Adresse</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="adresse" id="f_adresse"/></dd>
<dt><label for="f_cp">Code postal</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="code_postal" id="f_cp"/></dd>
<dt><label for="f_ville">Ville</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="text" name="ville" id="f_ville"/></dd>
<dt><label for="f_tel">Téléphone</label></dt>
<dd><input type="text" name="telephone" id="f_tel"/></dd>
<dt><label for="f_email">Adresse mail</label></dt>
<dd><input type="text" name="email" id="f_email"/></dd>
</dl>
</fieldset>
<p class="submit">
{csrf_field key="add_client"}
<input type="submit" name="add" value="Enregistrer &rarr;" />
</p>
</form>
{include file="admin/_foot.tpl"}

35
templates/config.tpl Normal file
View file

@ -0,0 +1,35 @@
{include file="admin/_head.tpl" title="Configuration — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
{include file="%s/templates/_menu.tpl"|args:$plugin_root current="config"}
{if $ok && !$form->hasErrors()}
<p class="confirm">
La configuration a bien été enregistrée.
</p>
{/if}
{form_errors}
<form method="post" action="{$self_url}">
<fieldset>
<legend>Configuration du plugin</legend>
<dl>
<dt><label for="f_siret">SIRET de l'assocation</label></dt>
<dd><input type="text" name="siret_asso" id="f_siret" value="{$siret_asso}"></dd>
<dt><label for="f_footer">Pied de documents/informatiosn légales</label></dt>
<dd><textarea name="footer" id="f_footer" cols="50" rows="5">{$footer}</textarea></dd>
<dt><input type="checkbox" name="validate_cp" id="f_validate_cp" {$validate_cp}> <label for="f_validate_cp">Vérifier le code postal lors de saisie/modification de client (seulement FR)</label></dt>
<dt><input type="checkbox" name="unique_name" id="f_unique_name" {$unique_name}> <label for="f_unique_name">Noms des clients uniques</label></dt>
</dl>
<i>Pour personnaliser l'apparence de la facture, il faut pour l'instant se retrousser les manches et éditer soi-même le fichier www/admin/facture_pdf.php du plugin ! </i>
</fieldset>
<p class="submit">
{csrf_field key="facturation_config"}
<input type="submit" name="save" value="Enregistrer &rarr;" />
</p>
</form>
{include file="admin/_foot.tpl"}

17
templates/facture.tpl Normal file
View file

@ -0,0 +1,17 @@
{include file="admin/_head.tpl" title="Document — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
{include file="%s/templates/_menu.tpl"|args:$plugin_root current="index"}
{form_errors}
{if $session->canAccess('compta', Membres::DROIT_ECRITURE)}
<a href="{plugin_url file="facture_modifier.php"}?id={$facture.id}">
<button type="button" class="btn btn-primary">Modifier ce document</button></a>
{/if}
<a href="{plugin_url file="facture_pdf.php"}?d&id={$facture.id}">
<button type="button" class="btn btn-primary">Télécharger ce document</button></a>
<div>
<embed src="facture_pdf.php?id={$id}" type="application/pdf" width="100%" height="800px;" style="max-width: 900px;">
</div>
{include file="admin/_foot.tpl"}

View file

@ -0,0 +1,191 @@
{include file="admin/_head.tpl" title="Créer un document — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id js=1}
{include file="%s/templates/_menu.tpl"|args:$plugin_root current="facture"}
<style>
{literal}
#Line1 > .fact_rm_line {
display: none;
}
{{/literal}}
</style>
{form_errors}
<form method="post" action="{$self_url}">
<ul class="actions">
<li><input type="radio" name="type" value="facture" {form_field name=type checked=facture default=facture} id="f_type_facture"{if $type !== "devis"} checked="checked"{/if}/><label for="f_type_facture">Facture</label></li>
<li><input type="radio" name="type" value="devis" {form_field name=type checked=devis} id="f_type_devis" /><label for="f_type_devis"{if $type == "devis"} checked="checked"{/if}>Devis</label></li>
</ul>
<fieldset>
<legend>Créer une facture</legend>
<dl>
{* <dt><label>Type de document :</label></dt>
<dd><input type="radio" name="type" value="facture" {form_field name=type checked=facture default=facture} id="f_type_facture" /><label for="f_type_facture"> Facture</label></dt>
<dd><input type="radio" name="type" value="devis" {form_field name=type checked=devis} id="f_type_devis" /><label for="f_type_devis"> Devis</label></dt> *}
<dt><label for="f_numero_facture">Numéro facture</label> <b title="(Champ obligatoire et unique)">obligatoire et unique</b></dt>
<dd><input type="numero" name="numero_facture" maxlength="12" id="f_numero_facture" value="{$numero_facture}"/></dd>
<p> Chaque facture doit comporter un numéro unique délivré chronologiquement et de façon continue.<br>Il faut que le système adopté par l'association garantisse que deux factures émises la même année ne peuvent pas porter le même numéro. </p>
<br>
<dt><label for="f_date_emission">Date d'émission</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="date" name="date_emission" id="f_date_emission" size="10" required="required" value="{$date_emission}"/></dd>
<dt><label for="f_date_echeance">Date d'échéance</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="date" name="date_echeance" id="f_date_echeance" size="10" required="required" value="{$date_echeance}"/></dd>
<dt><label for="f_reglee">Réglée</label></dt>
<dd><input type="checkbox" name="reglee" id="f_reglee"{if $reglee == "on"} checked="checked"{/if}></dd>
<dt><label for="f_archivee">Archivée</label></dt>
<dd><input type="checkbox" name="archivee" id="f_archivee" disabled></dd>
</dl>
</fieldset>
<fieldset>
<legend>Client</legend>
<dl>
<dt><label>Facture adressée à un·e :</label></dt>
<dd>
<input type="radio" name="base_receveur" value="membre" id="f_base_membre"{if $base_receveur == "membre"} checked="checked"{/if}/><label for="f_base_membre"> Membre</label>
<input type="radio" name="base_receveur" value="client" id="f_base_client" {if $base_receveur !== "membre"} checked="checked"{/if}/><label for="f_base_client"> Client·e</label>
</dd>
<dt><label>Client</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd>
<select class="type_membre" name="membre" id="f_membre" required="required">
{foreach from=$membres item="membre"}
<option value="{$membre.id}"{if $membre.id == $membre_id} selected="selected"{/if}>{$membre.nom}</option>
{/foreach}
</select>
<select class="type_client" name="client" id="f_client" required="required">
{foreach from=$clients item="client"}
<option value="{$client.id}"{if $client.id == $client_id} selected="selected"{/if}>{$client.nom}</option>
{/foreach}
</select>
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Contenu</legend>
<dl>
<dt><label for="f_moyen_paiement">Moyen de paiement</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd>
<select name="moyen_paiement" id="f_moyen_paiement" required="required">
{foreach from=$moyens_paiement item="moyen"}
<option value="{$moyen.code}"{if $moyen.code == $moyen_paiement} selected="selected"{/if}>{$moyen.nom}</option>
{/foreach}
</select>
</dd>
<dt><label for="f_contenu">Contenu du document</label><dt>
<dd>
<table class="list" style="max-width: 800px;">
<colgroup>
<col width="65%">
<col width="33%">
<col width="2%">
</colgroup>
<thead>
<tr>
<td>Désignation</td>
<td>Prix</td>
<td></td>
</tr>
</thead>
<tbody id="Lines">
{if count($designations) > 0}
<tr id="Line1" class="hidden">
<td><textarea name="designation[]" style="width:98%;"></textarea></td>
<td><input type="number" step="0.01" value="0" style="width: 60%" onchange="updateSum();" name="prix[]"><span style="position: relative;right: 50px;">€</span></td>
<td class="fact_rm_line"><button type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);updateSum();">Supprimer</button></td>
</tr>
{foreach from=$designations item=designation key=key}
<tr>
<td><textarea name="designation[]" style="width:98%;">{$designation}</textarea></td>
<td><input type="number" step="0.01" value="{$prix[$key]}" style="width: 60%" onchange="updateSum();" name="prix[]"><span style="position: relative;right: 50px;">€</span></td>
<td class="fact_rm_line"><button type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);updateSum();">Supprimer</button></td>
</tr>
{/foreach}
{else}
<tr id="Line1">
<td><textarea name="designation[]" style="width:98%;"></textarea></td>
<td><input type="number" step="0.01" value="0" style="width: 60%" onchange="updateSum();" name="prix[]"><span style="position: relative;right: 50px;">€</span></td>
<td class="fact_rm_line"><button type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);updateSum();">Supprimer</button></td>
</tr>
{/if}
</tbody>
<tfoot>
<tr>
<td style="text-align: right;">Total :</td>
<td><span id="total">0.00</span> €</td>
<td></td>
</tr>
</tfoot>
</table>
<button type="button" id="ajouter_ligne">Ajouter une ligne</button>
</dd>
</dl>
</fieldset>
<script type="text/javascript">
{literal}
function updateSum(){
var total = 0;
e = document.querySelectorAll('input[name="prix[]"]');
e.forEach( function sum(item, index){
total = total + Number(item.value);
});
document.getElementById('total').innerHTML = total.toFixed(2);
}
(function () {
function plus(){
var newdiv = document.createElement('tr');
newdiv.innerHTML = document.getElementById('Line1').innerHTML;
document.getElementById('Lines').appendChild(newdiv);
}
plus();
$('#ajouter_ligne').onclick = plus;
function changeTypeSaisie(type)
{
g.toggle(['.type_client', '.type_membre'], false);
g.toggle('.type_' + type, true);
}
changeTypeSaisie(document.forms[0].base_receveur.value);
var inputs = $('input[name="base_receveur"]');
for (var i = 0; i < inputs.length; i++)
{
inputs[i].onchange = function (e) {
changeTypeSaisie(this.value);
};
}
} ());
{/literal}
</script>
<p class="submit">
{csrf_field key="ajout_facture"}
<input type="submit" name="add" value="Enregistrer &rarr;" />
</p>
</form>
{include file="admin/_foot.tpl"}

View file

@ -0,0 +1,192 @@
{include file="admin/_head.tpl" title="Modifier un document — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id js=1}
{include file="%s/templates/_menu.tpl"|args:$plugin_root current="index"}
{form_errors}
<style>
{literal}
#Line1 > .fact_rm_line {
display: none;
}
{{/literal}}
</style>
{form_errors}
<form method="post" action="{$self_url}">
<ul class="actions">
<li><input type="radio" name="type" value="facture" {form_field name=type checked=facture default=facture} id="f_type_facture"{if $type !== "devis"} checked="checked"{/if}/><label for="f_type_facture">Facture</label></li>
<li><input type="radio" name="type" value="devis" {form_field name=type checked=devis} id="f_type_devis" {if $type == "devis"} checked="checked"{/if}/><label for="f_type_devis">Devis</label></li>
</ul>
<fieldset>
<legend>Créer une facture</legend>
<dl>
<dt><label for="f_numero_facture">Numéro facture</label> <b title="(Champ obligatoire et unique)">obligatoire et unique</b></dt>
<dd><input type="numero" name="numero_facture" maxlength="12" id="f_numero_facture" value="{$numero_facture}"/></dd>
<p>Chaque facture doit comporter un numéro unique délivré chronologiquement et de façon continue.<br>Il faut que le système adopté par l'association garantisse que deux factures émises la même année ne peuvent pas porter le même numéro. </p>
<br>
<dt><label for="f_date_emission">Date d'émission</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="date" name="date_emission" id="f_date_emission" size="10" required="required" value="{$date_emission|date_fr:'Y-m-d'}"/></dd>
<dt><label for="f_date_echeance">Date d'échéance</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd><input type="date" name="date_echeance" id="f_date_echeance" size="10" required="required" value="{$date_echeance|date_fr:'Y-m-d'}"/></dd>
<dt><label for="f_reglee">Réglée</label></dt>
<dd><input type="checkbox" name="reglee" id="f_reglee"{if $reglee == "on"} checked="checked"{/if}></dd>
<dt><label for="f_archivee">Archivée</label></dt>
<dd><input type="checkbox" name="archivee" id="f_archivee" disabled></dd>
</dl>
</fieldset>
<fieldset>
<legend>Client</legend>
<dl>
<dt><label>Facture adressée à un·e :</label></dt>
<dd>
<input type="radio" name="base_receveur" value="membre" id="f_base_membre"{if $base_receveur == "membre"} checked="checked"{/if}/><label for="f_base_membre"> Membre</label>
<input type="radio" name="base_receveur" value="client" id="f_base_client" {if $base_receveur !== "membre"} checked="checked"{/if}/><label for="f_base_client"> Client·e</label>
</dd>
<dt><label>Client</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd>
<select class="type_membre" name="membre" id="f_membre" required="required">
{foreach from=$membres item="membre"}
<option value="{$membre.id}"{if $membre.id == $membre_id} selected="selected"{/if}>{$membre.nom}</option>
{/foreach}
</select>
<select class="type_client" name="client" id="f_client" required="required">
{foreach from=$clients item="client"}
<option value="{$client.id}"{if $client.id == $client_id} selected="selected"{/if}>{$client.nom}</option>
{/foreach}
</select>
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Contenu</legend>
<dl>
<dt><label for="f_moyen_paiement">Moyen de paiement</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
<dd>
<select name="moyen_paiement" id="f_moyen_paiement" required="required">
{foreach from=$moyens_paiement item="moyen"}
<option value="{$moyen.code}"{if $moyen.code == $moyen_paiement} selected="selected"{/if}>{$moyen.nom}</option>
{/foreach}
</select>
</dd>
<dt><label for="f_contenu">Contenu du document</label><dt>
<dd>
<table class="list" style="max-width: 800px;">
<colgroup>
<col width="65%">
<col width="33%">
<col width="2%">
</colgroup>
<thead>
<tr>
<td>Désignation</td>
<td>Prix</td>
<td></td>
</tr>
</thead>
<tbody id="Lines">
{if count($designations) > 0}
<tr id="Line1" class="hidden">
<td><textarea name="designation[]" style="width:98%;"></textarea></td>
<td><input type="number" step="0.01" value="0" style="width: 60%" onchange="updateSum();" name="prix[]"><span style="position: relative;right: 50px;">€</span></td>
<td class="fact_rm_line"><button type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);updateSum();">Supprimer</button></td>
</tr>
{foreach from=$designations item=designation key=key}
<tr>
<td><textarea name="designation[]" style="width:98%;">{$designation}</textarea></td>
<td><input type="number" step="0.01" value="{$prix[$key]}" style="width: 60%" onchange="updateSum();" name="prix[]"><span style="position: relative;right: 50px;">€</span></td>
<td class="fact_rm_line"><button type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);updateSum();">Supprimer</button></td>
</tr>
{/foreach}
{else}
<tr id="Line1">
<td><textarea name="designation[]" style="width:98%;"></textarea></td>
<td><input type="number" step="0.01" value="0" style="width: 60%" onchange="updateSum();" name="prix[]"><span style="position: relative;right: 50px;">€</span></td>
<td class="fact_rm_line"><button type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);updateSum();">Supprimer</button></td>
</tr>
{/if}
</tbody>
<tfoot>
<tr>
<td style="text-align: right;">Total :</td>
<td><span id="total">0.00</span> €</td>
<td></td>
</tr>
</tfoot>
</table>
<button type="button" id="ajouter_ligne">Ajouter une ligne</button>
</dd>
</dl>
</fieldset>
<script type="text/javascript">
{literal}
function updateSum(){
var total = 0;
e = document.querySelectorAll('input[name="prix[]"]');
e.forEach( function sum(item, index){
total = total + Number(item.value);
});
document.getElementById('total').innerHTML = total.toFixed(2);
}
updateSum();
(function () {
function plus(){
var newdiv = document.createElement('tr');
newdiv.innerHTML = document.getElementById('Line1').innerHTML;
document.getElementById('Lines').appendChild(newdiv);
}
plus();
$('#ajouter_ligne').onclick = plus;
function changeTypeSaisie(type)
{
g.toggle(['.type_client', '.type_membre'], false);
g.toggle('.type_' + type, true);
}
changeTypeSaisie(document.forms[0].base_receveur.value);
var inputs = $('input[name="base_receveur"]');
for (var i = 0; i < inputs.length; i++)
{
inputs[i].onchange = function (e) {
changeTypeSaisie(this.value);
};
}
} ());
{/literal}
</script>
<p class="submit">
{csrf_field key="modifier_facture"}
<input type="submit" name="save" value="Enregistrer &rarr;" />
</p>
</form>
{include file="admin/_foot.tpl"}

50
templates/index.tpl Normal file
View file

@ -0,0 +1,50 @@
{include file="admin/_head.tpl" title="Documents — %s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
{include file="%s/templates/_menu.tpl"|args:$plugin_root current="index"}
{form_errors}
<table class="list">
<thead>
<td>Type</td>
<td>Numéro</td>
<td>Receveur</td>
<td>Son adresse</td>
<td>Sa ville</td>
<td>Emission</td>
<td>Echéance</td>
<td>Réglée</td>
<td>Archivée</td>
<td>Moyen paiement</td>
<td>Contenu</td>
<td>Total</td>
</thead>
<tbody>
{foreach from=$factures item=facture}
<tr>
<td>{if $facture.type_facture == 1}Facture{else}Devis{/if}</td>
<td><a href="{plugin_url file="facture.php"}?id={$facture.id}">{$facture.numero}</a></td>
{if $facture.receveur_membre}
<td><a href="{$admin_url}membres/fiche.php?id={$facture.receveur.id}">{$facture.receveur.nom}</a></td>
{else}
<td><a href="{plugin_url file="client.php"}?id={$facture.receveur.id}">{$facture.receveur.nom}</a></td>
{/if}
<td>{$facture.receveur.adresse}</td>
<td>{$facture.receveur.ville}</td>
<td>{$facture.date_emission|date_fr:'d/m/Y'}</td>
<td>{$facture.date_echeance|date_fr:'d/m/Y'}</td>
<td>{$facture.reglee}</td>
<td>{$facture.archivee}</td>
<td>{$facture.moyen_paiement}</td>
<td>
{foreach from=$facture.contenu item=contenu}
<p>{$contenu.designation} : {$contenu.prix|escape|html_money}&nbsp;{$config.monnaie}</p>
{/foreach}
</td>
<td>{$facture.total|escape|html_money}&nbsp;{$config.monnaie}</td>
</tr>
{/foreach}
</tbody>
</table>
{include file="admin/_foot.tpl"}