Compare commits

..

No commits in common. "92622fb9a01612be8bb94b40ef9d318f9a1d14bc" and "d2f924a81ec93b2825c6488a6f768ae2195c6d86" have entirely different histories.

11 changed files with 107 additions and 199 deletions

View File

@ -7,6 +7,7 @@
résultat : open_years, selected_year, selected_chart
*}}
{{*:debug check::date=$date*}}
{{:assign open_years=""}}
{{#years status=false}}
{{:assign open_years=$open_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "}}

View File

@ -1,14 +1,7 @@
<nav class="tabs">
<ul>
<li {{if $current == 'index'}} class="current"{{/if}}><a href="{{$module.url}}index.html">Immobilisations</a></li>
{{if $current == 'amortization'}}<li class="current"><a>Amortissements</a></li>{{/if}}
<li {{if $current == 'aide'}} class="current"{{/if}}><a href="{{$module.url}}aide.html">Aide</a></li>
</ul>
{{if $current == 'index'}}
<ul class="sub">
{{if $subcurrent == 'amortization'}}
<li class="current"><a>Amortissements</a></li>
{{/if}}
</ul>
{{/if}}
</nav>

View File

@ -1,6 +1,7 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Ajout immobilisation" current="module_amortissement"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include file="_nav.html" current="index"}}
@ -8,24 +9,18 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="add"}}
{{*:debug add::POST=$_POST*}}
{{* vérifier que la date est située dans un exercice ouvert *}}
{{:include
file="_check_date.html"
date=$_POST.date_achat
date=$_POST.date
keep="open_years, selected_year, selected_chart"
}}
{{* vérifier que la date d'acquisition est antérieure à la date de mise en service *}}
{{:assign date_debut=$_POST.date_mes|or:$_POST.date_achat|parse_date}}
{{if $date_debut|strtotime < $_POST.date_achat|parse_date|strtotime}}
{{:assign dd=$date_debut|date_short}}
{{:assign da=$_POST.date_achat|date_short}}
{{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$dd:$da}}
{{/if}}
{{if $selected_year == null}}
{{:error message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$open_years}}
{{:assign message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$open_years}}
{{:error message=$message}}
{{/if}}
{{* déterminer le numéro des comptes au cas où la clé serait un identifiant *}}
@ -68,7 +63,7 @@
assign="result"
id_year=$selected_year
type="revenue"
date=$_POST.date_achat
date=$_POST.date
label=$_POST.designation
amount=$_POST.montant
debit=$debit_account|keys|key:0
@ -76,6 +71,7 @@
id_project=$_POST.id_project
}}
{{* enregistrer les infos de l'immobilisation *}}
{{* vérifier s'il y a déjà un document avec le même numéro de ligne *}}
{{:assign var="immo_id" value=$result.lines.1.id}}
{{#load where="$$.line = :line_id" :line_id=$immo_id}}
@ -84,14 +80,12 @@
{{:assign key=""|uuid}}
{{/load}}
{{* enregistrer les infos de l'immobilisation *}}
{{:save
key=$key
validate_schema="schema.json"
type="immo"
line=$immo_id
duration=$_POST.duree|intval
date=$date_debut
}}
{{:redirect force="index.html?ok=1&msg=immobilisation"}}
@ -111,8 +105,7 @@
<fieldset class="ajout_immo">
<legend>Ajouter une immobilisation</legend>
<dl>
{{:input type="date" name="date_achat" label="Date d'acquisition" required=true default=$now|date_short}}
{{:input type="date" name="date_mes" label="Date de mise en service" help="à renseigner uniquement si différente de la date d'acquisition"}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="text" name="designation" label="Désignation" required=true}}
{{:input type="money" name="montant" label="Montant" required=true}}
{{:input type="number" name="duree" label="Durée d'amortissement" required=true default=1}}

View File

@ -1,54 +1,36 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Renseigner informations amortissement" custom_css=$custom_css current="module_amortissement"}}
{{:admin_header title="Renseigner durée amortissement" custom_css=$custom_css current="module_amortissement"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include file="_nav.html" current="index"}}
{{/if}}
{{* renseigner la durée d'amortissement *}}
<h2 class="ruler">Durée d'amortissement</h2>
{{* Traiter l'envoi du formulaire *}}
{{#form on="add"}}
{{* chercher la date d'achat de l'immobilisation *}}
{{:assign var="immo_id" value=$_GET.immo_id|intval}}
{{#select
trans.date as date_achat
from acc_transactions_lines as line
inner join acc_transactions as trans on line.id_transaction = trans.id
where line.id = :line_id;
:line_id = $immo_id
assign=ligne_immo
}}
{{/select}}
{{* vérifier que la date d'acquisition est antérieure à la date de mise en service *}}
{{:assign date_debut=$_POST.date_mes|or:$ligne_immo.date_achat|parse_date}}
{{if $date_debut|strtotime < $ligne_immo.date_achat|strtotime}}
{{:assign dd=$date_debut|date_short}}
{{:assign da=$ligne_immo.date_achat|date_short}}
{{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$dd:$da}}
{{/if}}
{{:assign key=""|uuid}}
{{* enregistrer les infos de l'immobilisation *}}
{{:assign var="immo_id" value=$_GET.immo_id|intval}}
{{:assign key=""|uuid}}
{{:save
key=$key
validate_schema="schema.json"
type="immo"
line=$immo_id
duration=$_POST.duree|intval
date=$date_debut
}}
{{:redirect force="index.html?ok=1&msg=durée"}}
{{/form}}
{{* renseigner la date de mise en service et durée d'amortissement *}}
<form method="post" action="">
<fieldset class="ajout_duree">
<legend>Renseigner informations amortissement</legend>
<legend>Renseigner durée amortissement</legend>
<dl>
{{:input type="date" name="date_mes" label="Date de mise en service" help="à renseigner uniquement si différente de la date d'acquisition"}}
{{:input type="number" name="duree" label="Durée d'amortissement" required=true default=1}}
</dl>
</fieldset>
@ -59,5 +41,4 @@
</form>
{{:form_errors}}
{{:admin_footer}}

View File

@ -8,24 +8,16 @@
<h2>Liste des immobilisations</h2>
<div class="infos">
<p>
On y trouve les immobilisations détectées par le module,
c'est-à-dire les écritures passées sur les comptes
d'immobilisation <b>20xx</b> et <b>21xx</b>.
On y trouve les immobilisations détectées par le module, c'est-à-dire les écritures passées sur les comptes d'immobilisation <b>20xx</b> et <b>21xx</b>
</p>
<p>
Dans le cas d'une immobilisation qui n'est pas encore prise en
charge par le module, il faut fournir la date de mise en
service du bien (si différente de la date d'acquisition) ainsi
que la durée en années de l'amortissement en cliquant sur le
bouton « Ajouter infos ».
Dans le cas d'une immobilisation qui n'est pas encore prise en charge par le module, il faut fournir la durée en années de l'amortissement en cliquant sur le bouton « Ajouter durée »
</p>
<p>
On obtient la liste des amortissements d'une immobilisation
en cliquant le bouton «Amortissements ».
Une fois la durée indiquée, on accède à la liste des amortissements d'une immobilisation en cliquant le bouton «Amortissements »
</p>
<p>
On peut enregistrer une nouvelle immobilisation en
cliquant le bouton « Ajouter une immobilisation ».
On peut enregistrer une nouvelle immobilisation en cliquant le bouton « Ajouter une immobilisation »
</p>
</div>
@ -35,8 +27,7 @@
<p>
Il faut renseigner les différents paramètres de l'immobilisation :
<ul>
<li>Date d'acquisition du bien</li>
<li>Date de mise en service du bien : uniquement si différente de la précédente</li>
<li>Date : celle de l'écriture de l'immobilisation</li>
<li>Désignation : c'est le libellé de l'immobilisation</li>
<li>Montant</li>
<li>Durée d'amortissement en années</li>
@ -49,61 +40,34 @@
</p>
</div>
<h2>Amortissements</h2>
<div class="infos">
<p>
Le calcul de l'amortissement se fait par la <em>méthode linéaire</em>.
</p>
<p>
La date de début du calcul est par défaut la <em>date d'achat</em> ; si la
date de mise en service est <em>postérieure</em> à la date d'achat, c'est
celle-ci qui est prise en compte.
</p>
</div>
<h3>Liste des amortissements</h3>
<h2>Liste des amortissements</h2>
<div class="help block">
<fieldset>
On trouve ici de une à trois listes, selon la situation :
<ul>
<li>
<b>Écritures d'amortissement liées à l'immobilisation courante</b>
<dl>
<dt>
<label>liste des écritures d'amortissement liées à l'immobilisation courante</label>
</dt>
<dd>
Ce sont des écritures d'amortissement déjà enregistrées et liées à l'écriture de l'immobilisation courante.
</dd>
<dt>
<label>liste des amortissements à enregistrer</label>
</dt>
<dd>
Ce sont les amortissements qui n'ont pas encore été enregistrés ; seules les amortissements d'un exercice ouvert peuvent être enregistrés ; les autres sont présents pour information et pourront être enregistrés quand l'exercice correspondant aura été ouvert.
</dd>
<dt>
<label>liste des écritures d'amortissement qui ne sont associées à aucune immobilisation</label>
</dt>
<dd>
Ce sont des écritures passées sur un compte d'amortissement (<b>28xx</b>) ; en cliquant le bouton « Attacher », on peut rattacher l'écriture d'amortissement sélectionnée à l'immobilisation courante
<p>
Ce sont des écritures d'amortissement déjà
enregistrées et liées à l'écriture de
l'immobilisation courante.
Si on a rattaché par ereur une écritures d'amortissement à une immobilisation, le bouton « Détacher » en face de l'écriture permettra de défaire l'opération
</p>
</li>
<li>
<b>Écritures d'amortissements à enregistrer</b>
<p>
Ce sont les amortissements qui n'ont pas encore
été enregistrés ; seules les amortissements d'un
exercice ouvert peuvent être enregistrés ; les
autres sont présents pour information et pourront
être enregistrés quand l'exercice correspondant
aura été ouvert.
</p>
</li>
<li>
<b>Écritures d'amortissement qui ne sont associées à aucune immobilisation</b>
<p>
Ce sont des écritures passées sur un compte
d'amortissement (<b>28xx</b>) ; en cliquant le
bouton « Attacher », on peut rattacher l'écriture
d'amortissement sélectionnée à l'immobilisation
courante.
</p>
<p>
Si on a rattaché par erreur une écritures
d'amortissement à une immobilisation, le bouton «
Détacher » en face de l'écriture permettra de
défaire l'opération.
</p>
</li>
</ul>
</dd>
</dl>
</fieldset>
</div>

View File

@ -3,7 +3,7 @@
{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortissement"}}
{{* barre de navigation *}}
{{:include file="_nav.html" current="index" subcurrent="amortization"}}
{{:include file="_nav.html" current="amortization"}}
{{if $_GET.ok}}
{{if $_GET.msg|match:"attach"}}
@ -26,10 +26,10 @@
{{* récupérer les infos de l'immobilisation *}}
{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}}
{{else}}
{{:error message="Pas d'info concernant l'immobilisation %s"|args:$_GET.immo_id}}
{{:assign message="Pas d'info concernant l'immobilisation %s"|args:$_GET.immo_id}}
{{:error message=$message}}
{{/load}}
{{:assign var="duree" from="info_immo.duration"|args:$_GET.immo_id}}
{{:assign date_debut=$info_immo.date|date_short}}
{{#select
line.id as immo_id,
@ -38,6 +38,7 @@
line.debit as montant,
trans.id as trans_id,
trans.label as label,
trans.date as date_achat,
y.id as year_id,
y.end_date as date_amort,
project.label as project_label
@ -49,9 +50,10 @@
:line_id = $_GET.immo_id|intval
assign=ligne_immo
}}
<h2>Amortissement de « {{$label}} » d'un montant de {{"%f"|math:$montant|money_currency}} en date du {{$date_debut}} sur {{$duree}} ans</h2>
<h2>Amortissement de « {{$label}} » d'un montant de {{"%f"|math:$montant|money_currency}} en date du {{$date_achat|date_short}} sur {{$duree}} ans</h2>
{{else}}
{{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
{{:assign message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
{{:error message=$message}}
{{/select}}
{{* chercher des écritures d'amortissement liées à l'immobilisation *}}
@ -68,7 +70,8 @@
trans.id_year as amort_year,
acc.id as account_id,
acc.code as account_code,
acc.label as account_name
acc.label as account_name,
"vrai" as linked
FROM
acc_transactions_lines as l_immo
INNER JOIN acc_transactions as t_immo on t_immo.id = l_immo.id_transaction
@ -97,8 +100,9 @@
{{:assign annuite="%f/%f"|math:$montant:$duree}}
{{* première annuité *}}
{{:assign date_achat=$ligne_immo.date_achat|date_short}}
{{:assign date_amort=$ligne_immo.date_amort|date_short}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{:include file="_calcul_dates.html" date_debut=$date_achat date_fin=$date_amort keep="nbjours"}}
{{:assign annuite_1="%f/360*%d"|math:$annuite:$nbjours|intval}}
{{:assign annuite_courante=$annuite_1}}
@ -112,7 +116,7 @@
Amortissements attachés à « <a class="num"
href={{"%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}>{{$ligne_immo.trans_id}}</a>
{{$ligne_immo.label}} »
({{"%f"|math:$ligne_immo.montant|money_currency}}, {{$date_debut}})
({{"%f"|math:$ligne_immo.montant|money_currency}}, {{$ligne_immo.date_achat|date_short}})
</h3>
<table class="list">
<thead>
@ -150,7 +154,11 @@
<td><a href={{$compte_url}}>{{$line.account_code}}</a></td>
<td>{{$line.account_name}}</td>
<td>
{{if $line.linked == null}}
{{:linkbutton label="Détacher" href="detach_amort.html?amort_id=%d&immo_id=%d"|args:$line.amort_line:$ligne_immo.immo_id shape="plus"}}
{{else}}
{{:linkbutton label="Détacher" href="" shape="lock" class="disabled"}}
{{/if}}
</td>
</tr>
{{:assign annuite_courante=$annuite}}
@ -208,11 +216,13 @@
<td class="actions">
{{if $enregistrer == 1}}
{{:linkbutton
label="Créer l'écriture"
label="Enregistrer"
href="save_amort.html?amount=%d&account=%s&year=%s&trans_id=%d&immo_id=%s&project_id=%d&label=%s&solde=%d"|args:$annuite_courante:$ligne_immo.account_id:$current_year:$ligne_immo.trans_id:$_GET.immo_id:$project_id:$libelle:$solde_prec
shape="right"
target="_dialog"
}}
{{else}}
{{:linkbutton label="Enregistrer" href="" shape="lock" class="disabled"}}
{{/if}}
</td>
</tr>
@ -249,6 +259,7 @@
order by trans.date, trans.label;
assign=autre_amort
}}
{{:assign linked="false"}}
{{#select
id_transaction,
id_related
@ -256,6 +267,7 @@
where id_transaction = :id_amort or id_related = :id_amort;
:id_amort=$t_id
}}
{{:assign var=autre_amort.linked value="true"}}
{{else}}
{{:assign var="autres_amortissements." value=$autre_amort}}
{{/select}}
@ -293,7 +305,11 @@
<td>{{$line.a_code}}</td>
<td>{{$line.a_label}}</td>
<td>
{{if $linked != "true"}}
{{:linkbutton label="Attacher" href="attach_amort.html?amort_id=%d&immo_id=%d"|args:$line.l_id:$ligne_immo.immo_id shape="plus"}}
{{else}}
{{:linkbutton label="Attacher" href="" shape="lock" class="disabled"}}
{{/if}}
</td>
</tr>
{{/foreach}}

View File

@ -12,9 +12,11 @@
WHERE id = :line_id;
:line_id = $_GET.immo_id|intval
}}
{{:assign immo_trans_id=$id_transaction}}
{{:assign immo_id=$id_transaction}}
{{else}}
{{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_id}}
{{* TODO : améliorer le message d'erreur *}}
{{:assign message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_id}}
{{:error message=$message}}
{{/select}}
{{* chercher l'écriture d'amortissement *}}
@ -26,18 +28,20 @@
}}
{{:assign amort_id=$id_transaction}}
{{else}}
{{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_id}}
{{* TODO : améliorer le message d'erreur *}}
{{:assign message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_id}}
{{:error message=$message}}
{{/select}}
{{* chercher les liaisons de l'écriture d'immobilisation *}}
{{#select
CASE links.id_related = :immo_trans_id
CASE links.id_related = :immo_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as linked_id
FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $immo_trans_id
WHERE id_transaction = :immo_id or id_related = :immo_id;
:immo_id = $immo_id
}}
{{:assign var="linked_transactions." value=$linked_id}}
{{/select}}
@ -48,9 +52,10 @@
{{* Enregistrer les liaisons *}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$immo_trans_id
path="accounting/transaction/%s/transactions"|args:$immo_id
assign="result"
assign_code="result_code"
transactions=$linked_transactions
}}
{{:redirect to="amortization.html?immo_id=%s&ok=1&msg=attach"|args:$_GET.immo_id}}

View File

@ -5,54 +5,27 @@
une écriture d'immobilisation
*}}
{{* chercher l'écriture d'immobilisation *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $_GET.immo_id|intval
}}
{{:assign immo_trans_id=$id_transaction}}
{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}}
{{else}}
{{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_id}}
{{/select}}
{{:assign message="Pas d'info concernant l'immobilisation %s"|args:$_GET.immo_id}}
{{:error message=$message}}
{{/load}}
{{* chercher l'écriture d'amortissement *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $_GET.amort_id|intval
}}
{{:assign amort_id=$id_transaction}}
{{else}}
{{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_id}}
{{/select}}
{{:assign var="liste_amort" val=$info_immo.amort}}
{{*
chercher les liaisons de l'écriture d'immobilisation
et supprimer la liaison avec l'écriture d'amortissement
*}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as linked_id
FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $immo_trans_id
}}
{{if $linked_id != $amort_id}}
{{:assign var="linked_transactions." value=$linked_id}}
{{#foreach from=$info_immo.amort item="amort_id"}}
{{if $amort_id != $_GET.amort_id}}
{{:assign var="t_amort." value=$amort_id}}
{{/if}}
{{/select}}
{{/foreach}}
{{* Enregistrer les liaisons *}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$immo_trans_id
assign="result"
assign_code="result_code"
transactions=$linked_transactions
{{* Enregistrer les infos *}}
{{:save
key=$info_immo.key
validate_schema="schema.json"
type="immo"
line=$info_immo.line
duration=$info_immo.duration
amort=$t_amort
}}
{{:redirect to="amortization.html?immo_id=%s&ok=1&msg=detach"|args:$_GET.immo_id}}

View File

@ -15,20 +15,6 @@
<p class="block error">Échec enregistrement immobilisation</p>
{{/if}}
{{* supprimer les documents sans écriture associée *}}
{{#load type="immo"}}
{{#select
line.id as line_id
FROM acc_transactions_lines as line
INNER JOIN acc_transactions AS trans on line.id_transaction = trans.id
WHERE line.id = :line_id;
:line_id = $line
}}
{{else}}
{{:delete key=$key}}
{{/select}}
{{/load}}
{{* lister les immobilisations *}}
<section class="immobilisation">
<h2 class="ruler">Liste des immobilisations</h2>
@ -69,7 +55,7 @@
INNER JOIN acc_years AS years ON trans.id_year = years.id
LEFT JOIN acc_projects AS project ON line.id_project = project.id
WHERE
(account.code LIKE '21%' OR account.code LIKE '22%' OR account.code LIKE '27%')
(account.code LIKE '21%' OR account.code LIKE '22%')
ORDER BY trans.date DESC
}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
@ -92,7 +78,7 @@
<td class="actions">
{{if $duration == null}}
{{:linkbutton
label="Ajouter infos"
label="Ajouter durée"
href="add_duration.html?immo_id=%s"|args:$immo_id
shape="help"
target="_dialog"

View File

@ -18,7 +18,8 @@
}}
{{if $selected_year == null}}
{{:error message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$open_years}}
{{:assign message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$open_years}}
{{:error message=$message}}
{{/if}}
{{* déterminer le numéro des comptes au cas où la clé serait un identifiant *}}

View File

@ -13,12 +13,7 @@
"duration" : {
"description": "durée de l'amortissement en années",
"type": "integer"
},
"date" : {
"description" : "date de mise en service de l'immobilisation",
"type" : ["string", "null"],
"format" : "date"
}
},
"required": ["type", "line", "duration", "date"]
"required": ["type", "line", "duration"]
}