Compare commits

..

1 Commits
main ... v0.11

Author SHA1 Message Date
fa208c566f Amélioration affichage nombres 2025-01-06 15:24:45 +01:00
15 changed files with 445 additions and 307 deletions

69
_amort_exclus.html Normal file
View File

@ -0,0 +1,69 @@
{{* -*- brindille -*- *}}
{{*
Trouver les lignes d'amortissement et d'immobilisation qui sont dans la même écriture
- param : aucun
- résultat : amort_exclus = tableau des amortissements à exclure
*}}
{{* lignes des immo non amorties *}}
{{#load type="immo" where="$$.noamort = true"}}
{{:assign var="lines." value="'%s'"|args:$line}}
{{/load}}
{{:assign lines=$lines|implode:","}}
{{:assign lines="("|cat:$lines|cat:")"}}
{{:assign condition="line.id IN %s"|args:$lines}}
{{*:debug condition=$condition*}}
{{* écritures et comptes associés *}}
{{#select
line.id as line_id,
line.id_transaction as trans_id,
account.id as account_id,
account.code as account_code,
account.id_chart as id_chart
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans on trans.id = line.id_transaction
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_years AS years ON trans.id_year = years.id
WHERE !condition;
!condition=$condition
assign="ecriture"
}}
{{:assign var="ecritures." value="'%s'"|args:$trans_id}}
{{* déterminer le numéro du compte d'amortissement associé au compte d'immobilisation *}}
{{:include
file="./_get_amort_code.html"
code_immo=$account_code
keep="code_amort"
}}
{{:assign var="accounts." value="'%s'"|args:$code_amort}}
{{/select}}
{{*:debug ecritures=$ecritures accounts=$accounts*}}
{{* écritures d'amortissement avec :
- numéro d'écritures obtenus ci-dessus
- numéros de comptes d'amortissement déduits des comptes d'immo ci-dessus
*}}
{{:assign ecritures=$ecritures|implode:","}}
{{:assign ecritures="("|cat:$ecritures|cat:")"}}
{{:assign accounts=$accounts|implode:","}}
{{:assign accounts="("|cat:$accounts|cat:")"}}
{{:assign condition="line.id_transaction IN %s AND account.code IN %s"|args:$ecritures:$accounts}}
{{#select
line.id as line_id,
line.id_transaction as trans_id,
account.id as account_id,
account.code as account_code
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans on trans.id = line.id_transaction
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_years AS years ON trans.id_year = years.id
WHERE !condition;
!condition=$condition
assign="amort"
}}
{{:assign var="amort_exclus." value=$trans_id}}
{{/select}}

View File

@ -9,12 +9,13 @@
{{:assign ts_debut=$date_debut|strtotime}}
{{:assign ts_fin=$date_fin|strtotime}}
{{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$ts_fin:$ts_debut}}
{{if $ts_debut <= $ts_fin}}
{{:assign nbjours="(%d-%d)/(60*60*24)"|math:$ts_fin:$ts_debut}}
{{else}}
{{:assign nbjours="(%d-%d)/(60*60*24)"|math:$ts_debut:$ts_fin}}
{{* au cas où les deux dates seraient inversées ... *}}
{{if $nbjours < 0}}
{{:assign nbjours="-1*%d"|math:$nbjours}}
{{/if}}
{{* pour simplifier : 360 jours par an *}}
{{:assign nbjours="round(%f/365*360)"|math:$nbjours}}
{{if $nbjours > 360}}
{{:assign nbjours=360}}
{{/if}}

View File

@ -12,10 +12,10 @@
- account_ok
*}}
{{:assign quote="'"}}
{{:assign condition=" AND ("}}
{{#foreach from=$prefix_array item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign condition=$condition|cat:" code LIKE "|cat:$code|cat:" OR "}}
{{:assign condition=$condition|cat:" code LIKE "|cat:$quote|cat:$code|cat:"%"|cat:$quote|cat:" OR "}}
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}

View File

@ -8,7 +8,7 @@
*}}
{{:assign open_years=""}}
{{#years status=false order="start_date"}}
{{#years status=false}}
{{:assign open_years=$open_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "}}
{{:assign debut=$start_date|date_short}}
{{:assign fin=$end_date|date_short}}

View File

@ -1,12 +1,4 @@
{{* -*- brindille -*- *}}
<nav class="tabs">
{{if $current == 'index'}}
<aside>
{{:linkbutton label="Ajouter une immobilisation" shape="plus" href="add_asset.html" target="_dialog"}}
</aside>
{{/if}}
<ul>
<li {{if $current == 'index'}} class="current"{{/if}}><a href="{{$module.url}}index.html">Immobilisations</a></li>
<li {{if $current == 'aide'}} class="current"{{/if}}><a href="{{$module.url}}aide.html">Aide</a></li>
@ -14,14 +6,13 @@
{{if $current == 'index'}}
<ul class="sub">
<li {{if $subcurrent == 'amort'}}class="current"{{/if}}><a href="index.html?amort=amort">Amortissables</a></li>
<li {{if $subcurrent == 'fini'}}class="current"{{/if}}><a href="index.html?amort=fini">Terminées</a></li>
<li {{if $subcurrent == 'no_amort'}}class="current"{{/if}}><a href="index.html?amort=no_amort">Non amortissables</a></li>
<li {{if $subcurrent == 'amort'}}class="current"{{/if}}><a href="index.html?amort=1">Amortissables</a></li>
<li {{if $subcurrent == 'fini'}}class="current"{{/if}}><a href="index.html?amort=2">Terminées</a></li>
<li {{if $subcurrent == 'no_amort'}}class="current"{{/if}}><a href="index.html?amort=0">Non amortissables</a></li>
</ul>
{{if $subsubcurrent == 'amortization'}}
<ul class="sub">
<li class="title"><strong>Amortissements</strong></li>
<li class="current"><a>Amortissements</a></li>
</ul>
{{/if}}
{{/if}}

View File

@ -6,10 +6,6 @@
{{:include file="_nav.html" current="index"}}
{{/if}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{* Traiter l'envoi du formulaire *}}
{{#form on="add"}}
@ -59,6 +55,10 @@
- est présent dans le PC de l'exercice correspondant à la date
*}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{:include
file="_check_account.html"
account=$debit_account
@ -123,28 +123,22 @@
{{:assign var="projects.%d"|args:$id value=$label}}
{{/select}}
{{#foreach from=$prefix_array item="code"}}
{{:assign var="pattern_array." value="%s*"|args:$code}}
{{/foreach}}
{{:assign patterns=$pattern_array|implode:"|"}}
{{:assign date=$now|date:'Y-m-d'}}
<form method="post" action="">
<fieldset>
<legend>Ajouter une immobilisation</legend>
<dl>
{{:input id="no_amort" type="checkbox" value=1 name="no_amort" label="Ne pas amortir" help="Cocher pour ne pas amortir" onclick="toggleInputs('f_no_amort_1', ['f_date_mes','f_duree'])"}}
{{:input type="date" name="date_achat" label="Date d'acquisition" required=true default=$now|date_short onchange="setDate('date_achat', ['credit_account', 'debit_account'])"}}
{{: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="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 min=0 default=1 suffix="année(s)"}}
{{:input type="number" name="duree" label="Durée d'amortissement" required=true min=0 default=1}}
{{:input
type="list"
name="credit_account"
label="Compte de décaissement"
required=true
target="!acc/charts/accounts/selector.php?types=%s&date=%s"|args:"1|2|3":$date
target="!acc/charts/accounts/selector.php?targets=1:2:3&key=code"
default=$bank_account
}}
{{:input
@ -152,7 +146,7 @@
name="debit_account"
label="Compte d'immobilisation (20xx, 21xx, ...)"
required=true
target="!acc/charts/accounts/selector.php?date=%s&codes=%s"|args:$date:$patterns
target="!acc/charts/accounts/selector.php?key=code"
default=$immo_account
}}
{{if $projects != null}}
@ -167,9 +161,9 @@
</form>
<script type="text/javascript">
{{* activer/désactiver les champs passés en paramètres *}}
function toggleInputs(idcb, idfields) {
<script type="text/javascript">
function toggleInputs(idcb, idfields) {
const noamort = document.getElementById(idcb);
for (let id of idfields) {
const field = document.getElementById(id);
@ -180,22 +174,7 @@ function toggleInputs(idcb, idfields) {
field.removeAttribute("disabled");
}
}
}
{{* fixer la date des sélecteurs *}}
function setDate(b_date, button_names) {
const elem_date = document.querySelector("input[name=" + b_date + "]");
const date_fr = elem_date.value;
const new_date = date_fr.replace(/([0-9]+)\/([0-9]+)\/([0-9]+)/, "$3-$2-$1");
for (const name of button_names) {
const button = document.querySelector("button[data-name=" + name + "]");
const b_value = button.value;
const new_value = b_value.replace(/date=[0-9]+-[0-9]+-[0-9]+/, 'date=' + new_date);
console.log(" date = " + new_date + " old_val = " + b_value + " new_val = " + new_value);
button.setAttribute('value', new_value);
console.log("button_value = " + button.value);
}
}
</script>
{{:admin_footer}}

124
aide.html
View File

@ -5,78 +5,69 @@
{{* barre de navigation *}}
{{:include file="_nav.html" current="aide"}}
<p class="aide">
Ce module gère l'amortissement linéaire des immobilisations.
</p>
<h2 class="aide">Immobilisations</h2>
Elles sont classées dans 3 onglets :
<h3 class="aide">Amortissables</h3>
On y trouve les immobilisations en cours et celles pour lesquelles le
module n'a pas d'information.
<p class="aide">
Dans le deuxième cas, il faut cliquer sur le bouton « Ajouter
infos » puis :
<ul class="aide">
<li>soit indiquer que l'immobilisation ne doit pas être amortie</li>
<li>soit 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</li>
</ul>
</p>
<p class="aide">
Tant qu'une immobilisation ne possède pas d'amortissement, il est
possible de modifier ses informations à l'aide du bouton «
Modifier infos ».
</p>
<h3 class="aide">Terminées</h3>
On y trouve les immobilisations dont l'amortissement est terminé
<h3 class="aide">Non amortissables</h3>
<h3 class="aide">Ajouter une immobilisation</h3>
<div class="aide">
<p class="aide">
On peut indiquer qu'il s'agit d'une immobilisation qui ne doit pas être amortie ; dans le cas contraire, il faut renseigner les différents paramètres de l'immobilisation :
<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>.
</p>
<ul class="aide">
<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 ».
</p>
<p>
On obtient 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 ».
</p>
</div>
<h3>Ajout d'immobilisation</h3>
<div class="help block">
<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>Désignation : c'est le libellé de l'immobilisation</li>
<li>Montant</li>
<li>Durée d'amortissement en années</li>
<li>Compte de décaissement : à choisir dans la liste</li>
<li>Compte d'immobilisation : doit débuter par <b>20</b>, <b>21</b> ou <b>27</b></li>
<li>Compte d'immobilisation : doit débuter par <b>20</b> ou <b>21</b></li>
<li>Projet analytique (optionnel)</li>
</ul>
<p>
Après ajout, on se retrouve sur la page d'accueil des immobilisations.
Après ajout, on se retrouve sur la page d'accueil (Liste des immobilisations)
</p>
</div>
<h2 class="aide">Amortissements</h2>
<h2>Amortissements</h2>
<div class="infos">
<p class="aide">
<p>
Le calcul de l'amortissement se fait par la <em>méthode linéaire</em>.
</p>
<p class="aide">
<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 class="aide">Liste des amortissements</h3>
<h3>Liste des amortissements</h3>
<div class="aide">
<div class="help block">
<fieldset>
On trouve ici de une à trois listes, selon la situation :
<ul class="aide">
<ul>
<li>
<b>Écritures d'amortissement liées à l'immobilisation courante</b>
<p>
@ -88,9 +79,8 @@ On y trouve les immobilisations dont l'amortissement est terminé
<li>
<b>Écritures d'amortissements à enregistrer</b>
<p>
Ce sont les écritures amortissement de
l'immobilisation courante qui n'ont pas encore été
enregistrées ; seules les amortissements d'un
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
@ -107,23 +97,24 @@ On y trouve les immobilisations dont l'amortissement est terminé
courante.
</p>
<p>
Si on a rattaché par erreur une écriture
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>
</fieldset>
</div>
<h3 class="aide">Créer une écriture d'amortissement</h3>
<h3>Enregistrer un amortissement</h3>
<div class="aide">
<p class=aide">
<div class="help block">
<p>
Il faut renseigner les différents paramètres de l'amortissement :
<ul class="aide">
<ul>
<li>Date ; par défaut, il s'agit de la date de fin d'exercice</li>
<li>Désignation : déterminée à partir du libellé de l'immobilisation< ; elle peut être modifiée/li>
<li>Désignation : déterminée à partir du libellé de l'immobilisation</li>
<li>Montant : sa valeur est calculée par le module ; elle peut être modifiée</li>
<li>
Compte de débit : à choisir dans la liste ; par défaut c'est le compte <em>6811 : Dotation aux amortissements des immobilisations</em>
@ -132,24 +123,7 @@ On y trouve les immobilisations dont l'amortissement est terminé
Compte d'amortissement : à choisir dans la liste ; par défaut c'est le compte formé en intercalant un 8 après le 2 initial du compte d'immobilisation (exemple : 2183 => 28183)
</li>
</ul>
<p class="aide">
Après enregistrement, on se retrouve sur la page des amortissements
</p>
</p>
</div>
<h2 class="aide">Remarques</h2>
<ul class="aide">
<li>
Les écritures d'immobilisation et d'amortissement créées en
dehors du module ne peuvent être associées automatiquement que
si leurs écritures ont été liées ; dans le cas contraire, il
faudra renseigner manuellement les infos de l'immobilisation.
</li>
<li>
Les écritures d'immobilisation de la balance d'ouverture ne
peuvent être détectées automatiquement : il faudra indiquer
manuellement qu'elles ne doivent pas être amorties.
</li>
</ul>

View File

@ -3,9 +3,9 @@
{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortissement"}}
{{* barre de navigation *}}
{{if $_GET.amort == null || $_GET.amort == "amort"}}
{{if $_GET.fini == null || $_GET.fini == 0}}
{{:assign subcurrent="amort"}}
{{elseif $_GET.amort == "fini"}}
{{elseif $_GET.fini == 1}}
{{:assign subcurrent="fini"}}
{{else}}
{{:assign subcurrent="no_amort"}}
@ -14,9 +14,9 @@
{{if $_GET.ok}}
{{if $_GET.msg|match:"attach"}}
{{:assign msg="Attachement écriture %s effectué"|args:$_GET.trans_id}}
{{:assign msg="Attachement effectué (écriture %s)"|args:$_GET.trans_id}}
{{elseif $_GET.msg|match:"detach"}}
{{:assign msg="Détachement écriture %s affectué"|args:$_GET.trans_id}}
{{:assign msg="Attachement supprimé (écriture %s)"|args:$_GET.trans_id}}
{{elseif $_GET.msg|match:"amortissement"}}
{{:assign msg="Amortissement enregistré"}}
{{/if}}
@ -31,6 +31,13 @@
{{/if}}
{{* 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}}
{{/load}}
{{:assign var="duree" from="info_immo.duration"|args:$_GET.immo_id}}
{{:assign date_debut=$info_immo.date}}
{{#select
line.id as immo_id,
line.id_account as account_id,
@ -38,27 +45,21 @@
line.debit as montant,
trans.id as trans_id,
trans.label as label,
trans.date,
y.id as year_id,
y.end_date as date_amort,
project.label as project_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_years AS y ON trans.id_year = y.id
LEFT JOIN acc_projects AS project ON line.id_project = project.id
WHERE line.id = :line_id;
from acc_transactions_lines as line
inner join acc_transactions as trans on line.id_transaction = trans.id
inner join acc_years as y on trans.id_year = y.id
left join acc_projects AS project ON line.id_project = project.id
where line.id = :line_id;
: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|date_short}} sur {{$duree}} ans</h2>
{{else}}
{{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
{{/select}}
{{:assign date_debut=$ligne_immo.date}}
{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}}
{{:assign var="duree" from="info_immo.duration"|args:$_GET.immo_id}}
{{:assign date_debut=$info_immo.date}}
{{/load}}
{{* chercher des écritures d'amortissement liées à l'immobilisation *}}
{{#select
@ -72,10 +73,11 @@
trans.date as amort_date,
trans.label as trans_label,
trans.id_year as amort_year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines as l_immo
acc.id as account_id,
acc.code as account_code,
acc.label as account_name
FROM
acc_transactions_lines as l_immo
INNER JOIN acc_transactions as t_immo on t_immo.id = l_immo.id_transaction
INNER JOIN acc_transactions_links as links
ON (
@ -85,53 +87,43 @@
)
INNER JOIN acc_transactions_lines as l_amort on amort_trans_id = l_amort.id_transaction
INNER join acc_transactions as trans on l_amort.id_transaction = trans.id
INNER join acc_accounts as account on l_amort.id_account = account.id
INNER join acc_accounts as acc on l_amort.id_account = acc.id
WHERE
l_immo.id = :line_id
AND
l_amort.credit <> 0
AND
account.code LIKE '28%'
ORDER BY trans.date;
:line_id = $_GET.immo_id|intval
assign=linked_lines.
}}
{{:assign var="amort_years." value=$amort_year}}
{{if $date_debut == null}}
{{:assign date_debut=$amort_date}}
{{/if}}
{{/select}}
<h3>Amortissement de «
<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}} » d'un montant de
{{"%f"|math:$ligne_immo.montant|money_currency}}
en date du {{$date_debut|date_short}}{{if $duree != null}} sur {{$duree}} ans{{/if}}
</h3>
{{if $duree != null}}
{{* montant de l'annuité théorique *}}
{{:assign montant="%f"|math:$ligne_immo.montant}}
{{:assign annuite="%f/%f"|math:$montant:$duree}}
{{* première annuité *}}
{{:assign date_amort=$ligne_immo.date_amort}}
{{if $date_amort|strtotime < $date_debut|strtotime}}
{{* montant de l'annuité théorique *}}
{{:assign montant="%f"|math:$ligne_immo.montant}}
{{:assign annuite="%f/%f"|math:$montant:$duree}}
{{* première annuité *}}
{{:assign date_amort=$ligne_immo.date_amort}}
{{if $date_amort|strtotime < $date_debut|strtotime}}
{{* changer d'exercice *}}
{{:include file="_next_year.html" date=$date_amort keep="date_amort"}}
{{:assign date_amort=$date_amort|parse_date}}
{{/if}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{:assign annuite_1="%f/360*%d"|math:$annuite:$nbjours|intval}}
{{:assign annuite_courante=$annuite_1}}
{{:assign current_year=$ligne_immo.year_id}}
{{:assign nbamort=0}}
{{/if}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{:assign annuite_1="%f/360*%d"|math:$annuite:$nbjours|intval}}
{{:assign annuite_courante=$annuite_1}}
{{:assign current_year=$ligne_immo.year_id}}
{{:assign solde=$ligne_immo.montant}}
{{:assign nbamort=0}}
{{if $linked_lines != null}}
<section class="amortissement">
<h3 class="center-block ruler">Amortissements rattachés</h3>
<h3 class="ruler">
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|date_short}})
</h3>
<table class="list">
<thead>
<tr>
@ -166,7 +158,7 @@
{{/if}}
</td>
<td><a href={{$compte_url}}>{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td>{{$line.account_name}}</td>
<td>
{{:linkbutton label="Détacher" href="detach_amort.html?amort_id=%d&immo_id=%d"|args:$line.amort_line:$ligne_immo.immo_id shape="plus"}}
</td>
@ -180,13 +172,13 @@
</section>
{{/if}}
{{if $duree != null && $solde > 0}}
{{if $solde > 0}}
{{:assign project_id=$ligne_immo.project_id}}
{{:assign project_label=$ligne_immo.project_label}}
{{:assign nbamort="%d-%d"|math:$duree:$nbamort}}
{{:assign annuite_courante="min(%f,%f)"|math:$annuite_courante:$solde}}
<section class="amortissement">
<h3 class="center-block ruler">Amortissements à enregistrer</h3>
<h3 class="ruler">Amortissements à enregistrer</h3>
<table class="list">
<thead>
<tr>
@ -202,7 +194,7 @@
{{#foreach count="%d+1"|math:$nbamort key="num"}}
{{:assign solde_prec=$solde}}
{{:assign solde="%f-%d"|math:$solde:$annuite_courante}}
{{#select id FROM acc_years WHERE :amort_date >= start_date AND :amort_date <= end_date AND status == 0; :amort_date=$date_amort|parse_date}}
{{#select id from acc_years where :amort_date >= start_date and :amort_date <= end_date and status == 0; :amort_date=$date_amort|parse_date}}
{{:assign enregistrer=1}}
{{:assign current_year=$id}}
{{else}}
@ -239,43 +231,52 @@
</section>
{{/if}}
{{if $_GET.amort == null || $_GET.amort != "fini"}}
{{if $_GET.fini == null || $_GET.fini != 1}}
{{* Autres amortissements non rattachés *}}
{{#select
line.id as l_id,
line.id_transaction as t_id,
line.credit as amort_amount,
line.label as l_label,
{{* amortissement à exclure *}}
{{:include
file="_amort_exclus.html"
keep="amort_exclus"
}}
{{* Autres amortissements non rattachés *}}
{{#select
li.id as l_id,
li.id_transaction as t_id,
li.credit as montant,
li.reference,
li.label as l_label,
trans.date as t_date,
trans.label as t_label,
trans.id_year as amort_year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_accounts AS account ON account.id = line.id_account
INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction
INNER JOIN acc_years AS y ON y.id = trans.id_year
WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16)
ORDER BY trans.date, trans.label;
acc.code as a_code,
acc.label as a_label,
y.label as y_label
from acc_transactions_lines as li
inner join acc_accounts as acc on acc.id = li.id_account
inner join acc_transactions as trans on trans.id = li.id_transaction
inner join acc_years as y on y.id = trans.id_year
where acc.code like "28%"
order by trans.date, trans.label;
assign=autre_amort
}}
}}
{{#select
id_transaction,
id_related
FROM acc_transactions_links
WHERE id_transaction = :id_amort OR id_related = :id_amort;
from acc_transactions_links
where id_transaction = :id_amort or id_related = :id_amort;
:id_amort=$t_id
}}
{{else}}
{{if $autre_amort.t_id|in:$amort_exclus}}
{{else}}
{{:assign var="autres_amortissements." value=$autre_amort}}
{{/if}}
{{/select}}
{{/select}}
{{/select}}
{{if $autres_amortissements != null}}
{{if $autres_amortissements != null}}
<section class="amortissement">
<h3 class="center-block ruler">Autres amortissements non rattachés</h3>
<h3 class="ruler">Autres amortissements non rattachés</h3>
<table class="list">
<thead>
<tr>
@ -289,21 +290,21 @@
</tr>
</thead>
<tbody>
{{#foreach from=$autres_amortissements item="line"}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.t_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}}
<tr>
<td class="num"><a href={{$trans_url}}>#{{$line.t_id}}</a></td>
<td>{{$line.t_date|date_short}}</td>
<td class="money">{{"%f"|math:$line.amort_amount|money}}</td>
<td class="money">{{"%f"|math:$line.montant|money}}</td>
<td>{{if $line.l_label == null}}
{{$line.t_label}}
{{else}}
{{$line.l_label}}
{{/if}}
</td>
<td><a href={{$compte_url}}>{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td>{{$line.a_code}}</td>
<td>{{$line.a_label}}</td>
<td>
{{:linkbutton label="Attacher" href="attach_amort.html?amort_id=%d&immo_id=%d"|args:$line.l_id:$ligne_immo.immo_id shape="plus"}}
</td>
@ -312,7 +313,7 @@
</tbody>
</table>
</section>
{{/if}}
{{/if}}
{{/if}}
{{:form_errors}}
{{:admin_footer}}

View File

@ -3,11 +3,7 @@
{{* Liste des immobilisations amortissable ou à définir *}}
<section class="immobilisation">
{{if $amort == "amort"}}
<h2 class="ruler">Immobilisations en cours</h2>
{{else}}
<h2 class="ruler">Immobilisations amorties</h2>
{{/if}}
<table class="list">
<thead>
@ -29,13 +25,12 @@
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{:assign quote="'"}}
{{:assign condition="("}}
{{#foreach from=$prefix_array item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign condition=$condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
{{:assign condition=$condition|cat:" account.code LIKE "|cat:$quote|cat:$code|cat:"%"|cat:$quote|cat:" OR "}}
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}}
{{#select
trans.id as trans_id,
@ -60,7 +55,6 @@
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign duration=null}}
{{* voir si l'immo est prise en charge *}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}}
{{:assign duration=$duration}}
{{if $noamort}}
@ -90,27 +84,21 @@
t_immo.id = links.id_related
)
INNER JOIN acc_transactions_lines as l_amort on amort_trans_id = l_amort.id_transaction
INNER JOIN acc_accounts AS account ON l_amort.id_account = account.id
WHERE
l_immo.id = :line_id
AND
l_amort.credit <> 0
AND
account.code LIKE '28%';
l_amort.credit <> 0;
:line_id = $immo_id|intval
}}
{{if $amort_amount == null}}
{{:assign exist_amort=false}}
{{:assign amort_amount=0}}
{{else}}
{{:assign amort_amount=$amort_amount}}
{{:assign exist_amort=true}}
{{/if}}
{{/select}}
{{* immo amortie ? *}}
{{if $amort == "amort" && $amort_amount >= $debit ||
$amort == "fini" && $amort_amount < $debit
}}
{{if $amort_amount >= $debit}}
{{:continue}}
{{/if}}
<tr>
@ -123,7 +111,7 @@
<td>{{$account_label}}</td>
<td>{{$project_label}}</td>
<td class="actions">
{{if ! $exist_amort && $duration == null}}
{{if $duration == null}}
{{:linkbutton
label="Ajouter infos"
href="add_infos.html?immo_id=%s&amort=1"|args:$immo_id
@ -141,7 +129,7 @@
{{/if}}
{{:linkbutton
label="Amortissements"
href="amortization.html?immo_id=%s&amort=%s"|args:$immo_id:$amort
href="amortization.html?immo_id=%s"|args:$immo_id
shape="table"
}}
{{/if}}
@ -151,3 +139,17 @@
</tbody>
</table>
</section>
<form method="post" action="">
<fieldset>
<legend>Ajouter une immobilisation</legend>
<p class="submit">
{{:linkbutton
label="Ajouter une immobilisation"
shape="plus"
href="add_asset.html"
target="_dialog"
}}
</p>
</fieldset>
</form>

View File

@ -0,0 +1,141 @@
{{* -*- brindille -*- *}}
{{* Liste des immobilisations totalement amorties *}}
<section class="immobilisation">
<h2 class="ruler">Immobilisations amorties</h2>
<table class="list">
<thead>
<tr>
<th></th>
<th>Date</th>
<th>Libellé</th>
<th class="nombre">Montant</th>
<th class="nombre">Durée</th>
<th>N° compte</th>
<th>Compte</th>
<th>Projet</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{* lister les immobilisations *}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{:assign quote="'"}}
{{:assign condition="("}}
{{#foreach from=$prefix_array item="code"}}
{{:assign condition=$condition|cat:" account.code LIKE "|cat:$quote|cat:$code|cat:"%"|cat:$quote|cat:" OR "}}
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as trans_date,
line.id as immo_id,
account.id as account_id,
account.code as account_code,
account.label as account_label,
line.debit AS debit,
project.label as project_label,
trans.id_year as trans_id_year
FROM acc_transactions AS trans
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
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 !condition
ORDER BY trans.date DESC;
!condition=$condition
}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign duration=null}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}}
{{:assign duration=$duration}}
{{if $noamort}}
{{:assign amortissable="non"}}
{{else}}
{{:assign amortissable="oui"}}
{{/if}}
{{else}}
{{:assign amortissable="nsp"}}
{{/load}}
{{if $amortissable == "non"}}
{{:continue}}
{{/if}}
{{* voir s'il existe des écritures d'amortissement associées *}}
{{#select
sum(l_amort.credit) as amort_amount,
CASE links.id_related = t_immo.id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as amort_trans_id
FROM acc_transactions_lines as l_immo
INNER JOIN acc_transactions as t_immo on t_immo.id = l_immo.id_transaction
INNER JOIN acc_transactions_links as links
ON (
t_immo.id = links.id_transaction
OR
t_immo.id = links.id_related
)
INNER JOIN acc_transactions_lines as l_amort on amort_trans_id = l_amort.id_transaction
WHERE
l_immo.id = :line_id
AND
l_amort.credit <> 0;
:line_id = $immo_id|intval
}}
{{if $amort_amount == null}}
{{:assign exist_amort=false}}
{{else}}
{{:assign amort_amount=$amort_amount}}
{{:assign exist_amort=true}}
{{/if}}
{{/select}}
{{* immo amortie ? *}}
{{if $amort_amount < $debit}}
{{:continue}}
{{/if}}
<tr>
<td class="num"><a href={{$trans_url}}>#{{$trans_id}}</a></td>
<td>{{$trans_date|date_short}}</td>
<td>{{$trans_label}}</td>
<td class="money">{{"%f"|math:$debit|money}}</td>
<td class="money">{{if $duration != null}}{{$duration}}{{/if}}</td>
<td><a href={{$compte_url}}>{{$account_code}}</a></td>
<td>{{$account_label}}</td>
<td>{{$project_label}}</td>
<td class="actions">
{{if $duration == null}}
{{:linkbutton
label="Ajouter infos"
href="add_infos.html?immo_id=%s&amort=1"|args:$immo_id
shape="help"
target="_dialog"
}}
{{else}}
{{if ! $exist_amort}}
{{:linkbutton
label="Modifier infos"
href="modif_infos.html?immo_id=%s&amort=1"|args:$immo_id
shape="help"
target="_dialog"
}}
{{/if}}
{{:linkbutton
label="Amortissements"
href="amortization.html?immo_id=%s&fini=1"|args:$immo_id
shape="table"
}}
{{/if}}
</td>
</tr>
{{/select}}
</tbody>
</table>
</section>

View File

@ -1,6 +1,6 @@
{{* -*- brindille -*- *}}
{{* Liste des immobilisations non amortissables *}}
{{* Liste des immobilisations non amortissable *}}
<section class="immobilisation">
<h2 class="ruler">Immobilisations non amortissables</h2>
@ -52,7 +52,7 @@
<td class="num"><a href={{$trans_url}}>#{{$trans_id}}</a></td>
<td>{{$trans_date|date_short}}</td>
<td>{{$trans_label}}</td>
<td class="money">{{"%f"|math:$debit|money:false}}</td>
<td class="money">{{"%f"|math:$debit|money}}</td>
<td><a href={{$compte_url}}>{{$account_code}}</a></td>
<td>{{$account_label}}</td>
<td>{{$project_label}}</td>

View File

@ -2,10 +2,12 @@
{{:admin_header title="Gestion des amortissements" custom_css="./style.css" current="module_amortissement"}}
{{* barre de navigation *}}
{{if $_GET.amort == null}}
{{if $_GET.amort == null || $_GET.amort == 1}}
{{:assign amort="amort"}}
{{elseif $_GET.amort == 2}}
{{:assign amort="fini"}}
{{else}}
{{:assign amort=$_GET.amort}}
{{:assign amort="no_amort"}}
{{/if}}
{{:include file="_nav.html" current="index" subcurrent="%s"|args:$amort}}
@ -21,8 +23,8 @@
<p class="block error">Échec enregistrement immobilisation</p>
{{/if}}
{{* supprimer les documents sans écriture associée *}}
{{#load type="immo"}}
{{* supprimer les documents sans écriture associée *}}
{{#select
line.id as line_id
FROM acc_transactions_lines as line
@ -33,24 +35,13 @@
{{else}}
{{:delete key=$key}}
{{/select}}
{{* supprimer les documents correspondant à une écriture de la balance d'ouverture *}}
{{#select
line.id as line_id,
trans.status
FROM acc_transactions_lines as line
INNER JOIN acc_transactions AS trans on line.id_transaction = trans.id
WHERE line.id = :line_id AND (trans.status & 16);
:line_id = $line
}}
{{:delete key=$key}}
{{/select}}
{{/load}}
{{if $amort == "no_amort"}}
{{:include file="./immobilisations_non.html"}}
{{else}}
{{if $amort == "amort"}}
{{:include file="./immobilisations.html"}}
{{elseif $amort == "fini"}}
{{:include file="./immobilisations_achevees.html"}}
{{else}}
{{:include file="./immobilisations_non.html"}}
{{/if}}
{{:admin_footer}}

View File

@ -1,5 +1,5 @@
name="Amortissements"
description="Gestion des amortissements pour le logiciel de comptabilité Paheko (v0.16)"
description="Gestion des amortissements pour le logiciel de comptabilité Paheko"
author="Jean-Christophe Engel"
author_url="https://git.roflcopter.fr/lesanges"
home_button=false

View File

@ -147,7 +147,7 @@
name="debit_account"
label="Compte de débit"
required=true
target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"68*":$year.id
target="!acc/charts/accounts/selector.php?&key=code&year=%d"|args:$year.id
default=$debit_account
}}
{{:input
@ -155,7 +155,7 @@
name="credit_account"
label="Compte d'amortissement (280xx ou 281xx)"
required=true
target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$year.id
target="!acc/charts/accounts/selector.php?key=code&year=%d"|args:$year.id
default=$credit_account
}}
</dl>

View File

@ -6,14 +6,3 @@
.nombre {
text-align: right !important;
}
.aide {
list-style: revert;
padding: revert;
line-height : 1.5em;
}
h2[class="aide"], h3[class="aide"] {
margin-top: 0.5em;
margin-bottom: 0.5em;
}