Compare commits

...

12 commits

Author SHA1 Message Date
Jean-Christophe Engel
75cb25fbb9 Correction erreur traitement sortie du bilan des immo importées de la balance initiale 2026-09-11 15:33:34 +02:00
Jean-Christophe Engel
4f1b0ffead Correction erreur redirection après attachement écriture de sortie 2026-09-11 15:26:35 +02:00
Jean-Christophe Engel
3173b06cf1 Correction erreur date début amortissement importé depuis balance initiale 2026-09-11 15:25:38 +02:00
Jean-Christophe Engel
d149a85018 Suppression code inutile 2026-09-07 13:49:27 +02:00
Jean-Christophe Engel
c93b33f923 Changement numéro version 2026-09-02 14:17:47 +02:00
Jean-Christophe Engel
575d3708d8 Masquer case à cocher affichage écritures ignorées si non pertinente 2026-09-02 14:00:28 +02:00
Jean-Christophe Engel
155e06d7fc Masquer affichage informations si non pertinentes 2026-09-02 12:08:49 +02:00
Jean-Christophe Engel
f9df1210bc Masquer titre tableau si aucune immobilisation 2026-09-02 11:25:31 +02:00
Jean-Christophe Engel
0511f22c44 Amélioration affichage liste avoirs 2026-09-02 11:03:11 +02:00
Jean-Christophe Engel
3bcd6bcdc8 Ne pas afficher montant par défaut si plus d'un exercice possible 2026-09-02 10:04:10 +02:00
Jean-Christophe Engel
ba3081cf00 Masquer titre tableau si aucune immobilisation 2026-09-02 10:03:03 +02:00
Jean-Christophe Engel
0a9e0e577a Amélioration libellés et textes explicatifs 2026-09-02 10:00:58 +02:00
14 changed files with 651 additions and 621 deletions

View file

@ -1,12 +1,16 @@
{{* -*- brindille -*- *}} {{* -*- brindille -*- *}}
{{* Liste des immobilisations sorties du bilan *}} {{* Liste des immobilisations sorties du bilan *}}
<p class="help"> <p class="block help">
Cette page liste les immobilisations sorties du bilan Cet onglet liste les immobilisations sorties du bilan car elles ne
sont plus utilisées dans l'association (vétusté, fin de vie,
vente...).
</p> </p>
{{:include file="_get_config.html" keep="module.config"}} {{:include file="_get_config.html" keep="module.config"}}
{{if $module.table != null}}
{{* lister les immobilisations *}} {{* lister les immobilisations *}}
{{:assign account_condition="("}} {{:assign account_condition="("}}
{{#foreach from=$module.config.prefixes item="code"}} {{#foreach from=$module.config.prefixes item="code"}}
@ -14,15 +18,110 @@
{{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}} {{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}} {{/foreach}}
{{:assign account_condition=$account_condition|cat:"0)"}} {{:assign account_condition=$account_condition|cat:"0)"}}
{{:assign status_condition="($$.status = 'archived')"}}
{{:assign filter_condition=" AND NOT ("}} {{:assign filter_condition=" ("}}
{{#foreach from=$module.config.filters item="filter"}} {{#foreach from=$module.config.filters item="filter"}}
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}} {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}} {{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
{{/foreach}} {{/foreach}}
{{:assign filter_condition=$filter_condition|cat:"0)"}} {{:assign filter_condition=$filter_condition|cat:"0)"}}
{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"|cat:$filter_condition}} {{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND NOT "|cat:$filter_condition|cat:" AND "|cat:$status_condition}}
{{:assign total_cessions = 0}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as trans_date,
trans.id_year as trans_id_year,
line.id as immo_line_id,
line.label as line_label,
line.debit AS debit,
account.id as account_id,
account.code as account_code,
account.label as account_label,
info.id as immo_doc_id,
$$.label as doc_label,
$$.amount as doc_amount,
$$.date_achat as doc_date_achat,
$$.date_mes as doc_date_mes,
$$.status as status
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
INNER JOIN !table AS info ON $$.line = line.id
WHERE !condition
ORDER BY trans.date DESC;
!table=$module.table
!condition=$condition
assign="immo_line"
}}
{{:assign var="immo_line.date_mes" value=$doc_date_mes|or:$doc_date_achat|or:$trans_date}}
{{:assign var="immo_line.montant_immo" value=$doc_amount|or:$debit}}
{{* chercher le doc de sortie du bilan *}}
{{:assign var="immo_line.exit_date" value=null}}
{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$immo_doc_id}}
{{:assign exit_line_id=$exit_line_id}}
{{#select
trans.date
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :exit_line_id;
:exit_line_id=$exit_line_id
}}
{{:assign var="immo_line.exit_date" value=$date}}
{{/select}}
{{/load}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{:assign credit_immo=null}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign solde_immo="%d-%d"|math:$immo_line.montant_immo:$total_credits}}
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$immo_line.montant_immo}}
{{* voir s'il y a une écriture de cession associée à cette immo *}}
{{#select
trans.id as cession_id,
trans.label,
line.id as line_id,
line.credit
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN !table AS cession_link ON json_extract(cession_link.document, '$.cession_line_id') = line.id
INNER JOIN !table AS immo_doc ON json_extract(cession_link.document, '$.immo_doc_id') = immo_doc.id
WHERE json_extract(immo_doc.document, '$.line') = :immo_line_id
;
!table=$module.table
:immo_line_id = $immo_line.immo_line_id
assign="cession_line"
}}
{{:assign var="montant" from="montant_cessions.%d"|args:$account_code}}
{{:assign var="montant_cessions.%d"|args:$account_code value="%d+%d"|math:$montant:$credit}}
{{:assign total_cessions="%d+%d"|math:$total_cessions:$credit}}
{{/select}}
{{:assign var="immo_lines." value=$immo_line}}
{{/select}}
{{if $immo_lines|count > 0}}
<section class="immobilisation"> <section class="immobilisation">
<table class="list"> <table class="list">
<thead> <thead>
@ -39,124 +138,28 @@
</thead> </thead>
<tbody> <tbody>
{{:assign nb_immo=0}}
{{:assign total_immo = 0}} {{:assign total_immo = 0}}
{{:assign total_cessions = 0}} {{#foreach from=$immo_lines}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as trans_date,
trans.id_year as trans_id_year,
line.id as immo_line_id,
line.label as line_label,
line.debit AS debit,
account.id as account_id,
account.code as account_code,
account.label as account_label
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
WHERE !condition
ORDER BY trans.date DESC;
!condition=$condition
}}
{{* voir si l'immo est prise en charge *}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id assign="info_immo"}}
{{:assign status=$status}}
{{else}}
{{:assign status=null}}
{{/load}}
{{if $status != "archived"}}
{{:continue}}
{{/if}}
{{:assign date_mes=$info_immo.date_mes|or:$trans_date}}
{{:assign montant_immo=$debit}}
{{* chercher le doc de sortie du bilan *}}
{{:assign exit_date=null}}
{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id}}
{{:assign exit_line_id=$exit_line_id}}
{{#select
trans.date
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :exit_line_id;
:exit_line_id=$exit_line_id
}}
{{:assign exit_date=$date}}
{{/select}}
{{/load}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{:assign credit_immo=null}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $info_immo.id
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign solde_immo="%d-%d"|math:$montant_immo:$total_credits}}
{{if $solde_immo == 0}}
{{:assign status="archived"}}
{{/if}}
{{if $status != "archived"}}
{{:continue}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}} {{: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 compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign nb_immo="%d+1"|math:$nb_immo}}
{{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}} {{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}}
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}} {{:assign label_immo=$doc_label|or:$trans_label}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}} {{if $label_immo|strpos:$line_label === false}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}}
{{* voir s'il y a une écriture de cession associée à cette immo *}} {{/if}}
{{#select
trans.id,
line.debit
FROM acc_transactions_links AS link
INNER JOIN acc_transactions AS trans ON (CASE
WHEN link.id_transaction = :trans_id THEN link.id_related
WHEN link.id_related = :trans_id THEN link.id_transaction
END) = trans.id
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS acc ON line.id_account = acc.id
WHERE (link.id_transaction = :trans_id OR link.id_related = :trans_id) AND acc.code = 462
;
:trans_id = $trans_id
}}
{{:assign var="montant" from="montant_cessions.%d"|args:$account_code}}
{{:assign var="montant_cessions.%d"|args:$account_code value="%d+%d"|math:$montant:$debit}}
{{:assign total_cessions="%d+%d"|math:$total_cessions:$debit}}
{{/select}}
<tr> <tr>
<td class="num"><a href="{{$trans_url}}">#{{$trans_id}}</a></td> <td class="num"><a href="{{$trans_url}}">#{{$trans_id}}</a></td>
<td>{{$date_mes|date_short}}</td> <td>{{$date_mes|date_short}}</td>
<td>{{$exit_date|date_short}}</td> <td>{{$exit_date|date_short}}</td>
<td>{{$trans_label}}{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}}</td> <td>{{$label_immo}}</td>
<td class="money">{{"%f"|math:$montant_immo|money_html:false|raw}}</td> <td class="money">{{"%f"|math:$montant_immo|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$account_code}}</a></td> <td><a href="{{$compte_url}}">{{$account_code}}</a></td>
<td>{{$account_label}}</td> <td>{{$account_label}}</td>
<td class="actions"> <td class="actions">
{{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s&from=exit"|args:$info_immo.id shape="edit"}} {{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s&from=exit"|args:$immo_doc_id shape="edit"}}
</td> </td>
</tr> </tr>
{{/select}} {{/foreach}}
</tbody> </tbody>
<tfoot> <tfoot>
{{if $total_immo != 0}} {{if $total_immo != 0}}
@ -215,7 +218,9 @@
{{/if}} {{/if}}
</tfoot> </tfoot>
</table> </table>
{{if $nb_immo == 0}} </section>
{{/if}}
{{/if}}
{{if $immo_lines|count == 0 || $module.table == null}}
<p class="block alert">Aucune immobilisation</p> <p class="block alert">Aucune immobilisation</p>
{{/if}} {{/if}}
</section>

View file

@ -9,4 +9,4 @@
{{:assign ts_debut=$date_debut|strtotime}} {{:assign ts_debut=$date_debut|strtotime}}
{{:assign ts_fin=$date_fin|strtotime}} {{:assign ts_fin=$date_fin|strtotime}}
{{:assign nbjours="1+abs(%d-%d)/(60*60*24)"|math:$ts_fin:$ts_debut}} {{:assign nbjours="round(1+abs(%d-%d)/(60*60*24), 0)"|math:$ts_fin:$ts_debut}}

View file

@ -17,7 +17,7 @@
id_transaction id_transaction
FROM acc_transactions_lines FROM acc_transactions_lines
WHERE id = :line_id; WHERE id = :line_id;
:line_id = $line_id|intval :line_id = $line_id
}} }}
{{:assign trans_id=$id_transaction}} {{:assign trans_id=$id_transaction}}
{{else}} {{else}}

View file

@ -4,31 +4,18 @@
{{:include file="_get_config.html" keep="module.config"}} {{:include file="_get_config.html" keep="module.config"}}
<p class="help"> <p class="block help">
{{if $type_immo == "managed"}} {{if $type_immo == "managed"}}
Cette page liste les immobilisations en cours d'amortissement Cet onglet liste les immobilisations en cours d'amortissement.
{{elseif $type_immo == "amortized"}} {{elseif $type_immo == "amortized"}}
Cette page liste les immobilisations dont l'amortissement est terminé Cet onglet liste les
immobilisations dont l'amortissement est terminé mais qui sont
encore utilisées dans l'association, donc encore présentes au
bilan.
{{/if}} {{/if}}
</p> </p>
{{if $module.table != null}} {{if $module.table != null}}
<table class="list">
<thead>
<tr>
<th class="num"></th>
<th>Date</th>
<th>Libellé</th>
<th class="nombre">Montant</th>
<th class="nombre">Durée</th>
<th class="nombre">Amortissements</th>
<th class="nombre">Valeur nette</th>
<th>N° compte</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{* lister les immobilisations *}} {{* lister les immobilisations *}}
{{:assign account_condition="("}} {{:assign account_condition="("}}
{{#foreach from=$module.config.prefixes item="code"}} {{#foreach from=$module.config.prefixes item="code"}}
@ -39,8 +26,6 @@
{{:assign status_condition="($$.status = 'managed' OR $$.status = 'amortized')"}} {{:assign status_condition="($$.status = 'managed' OR $$.status = 'amortized')"}}
{{:assign condition=$account_condition|cat:" AND line.debit > 0 AND "|cat:$status_condition}} {{:assign condition=$account_condition|cat:" AND line.debit > 0 AND "|cat:$status_condition}}
{{:assign nb_immo=0}}
{{:assign total_immo = 0}}
{{#select {{#select
trans.id as immo_trans_id, trans.id as immo_trans_id,
trans.label as trans_label, trans.label as trans_label,
@ -67,19 +52,9 @@
ORDER BY COALESCE(doc_date_achat, trans_date) DESC; ORDER BY COALESCE(doc_date_achat, trans_date) DESC;
!table=$module.table !table=$module.table
!condition=$condition !condition=$condition
assign="immo_line"
}} }}
{{if $status != "managed" && $status != "amortized"}}
{{:continue}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$immo_trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign montant_immo=$doc_amount|or:$debit}} {{:assign montant_immo=$doc_amount|or:$debit}}
{{:assign immo_date = $doc_date_achat|or:$trans_date}}
{{:assign label_immo=$doc_label|or:$trans_label}}
{{if $label_immo|strpos:$line_label === false}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}}
{{/if}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{#load {{#load
type="credit_link" type="credit_link"
@ -99,6 +74,8 @@
{{if $montant_immo == 0}} {{if $montant_immo == 0}}
{{* Immobilisation soldée *}} {{* Immobilisation soldée *}}
{{:continue}} {{:continue}}
{{else}}
{{:assign var="immo_line.montant_immo" value=$montant_immo}}
{{/if}} {{/if}}
{{* montant des amortissements liés à l'immobilisation *}} {{* montant des amortissements liés à l'immobilisation *}}
@ -108,11 +85,42 @@
{{* classement par onglet *}} {{* classement par onglet *}}
{{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}} {{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}}
{{if $type_immo == "amortized" && $amort_amount < $montant_immo}}{{:continue}}{{/if}} {{if $type_immo == "amortized" && $amort_amount < $montant_immo}}{{:continue}}{{/if}}
{{:assign var="immo_line.amort_amount" value=$amort_amount}}
{{:assign var="immo_lines." value=$immo_line}}
{{/select}}
{{if $immo_lines|count > 0}}
<table class="list">
<thead>
<tr>
<th class="num"></th>
<th>Date</th>
<th>Libellé</th>
<th class="nombre">Montant</th>
<th class="nombre">Durée</th>
<th class="nombre">Amortissements</th>
<th class="nombre">Valeur nette</th>
<th>N° compte</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{:assign total_immo = 0}}
{{#foreach from=$immo_lines}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$immo_trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign immo_date = $doc_date_achat|or:$trans_date}}
{{:assign label_immo=$doc_label|or:$trans_label}}
{{if $label_immo|strpos:$line_label === false}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}}
{{/if}}
{{:assign nb_immo="%d+1"|math:$nb_immo}}
{{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}} {{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}}
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}} {{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}} {{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}}
<tr> <tr>
<td class="num"><a href="{{$trans_url}}">#{{$immo_trans_id}}</a></td> <td class="num"><a href="{{$trans_url}}">#{{$immo_trans_id}}</a></td>
<td>{{$immo_date|date_short}}</td> <td>{{$immo_date|date_short}}</td>
@ -129,7 +137,9 @@
}} }}
</td> </td>
</tr> </tr>
{{/select}}
{{/foreach}}
</tbody> </tbody>
<tfoot> <tfoot>
{{if $total_immo != 0}} {{if $total_immo != 0}}
@ -164,6 +174,7 @@
</tfoot> </tfoot>
</table> </table>
{{/if}} {{/if}}
{{if $nb_immo == 0 || $module.table == null}} {{/if}}
{{if $immo_lines|count == 0 || $module.table == null}}
<p class="block alert">Aucune immobilisation</p> <p class="block alert">Aucune immobilisation</p>
{{/if}} {{/if}}

View file

@ -3,10 +3,11 @@
{{* Liste des immobilisations non gérées ou non entièrement affectées *}} {{* Liste des immobilisations non gérées ou non entièrement affectées *}}
{{:include file="_get_config.html" keep="module.config"}} {{:include file="_get_config.html" keep="module.config"}}
<p class="help"> <p class="block help">
Cette page liste les immobilisations pas encore prises en charge Cet onglet liste les immobilisations créées en dehors du module et
par le module ou les écritures de la balance d'ouverture initiale pas encore prises en charge par le module ou les écritures de la
dont le montant n'est pas encore totalement affecté balance d'ouverture initiale dont le montant n'est pas encore
totalement affecté
</p> </p>
{{:assign saved_hides=$module.config.hides}} {{:assign saved_hides=$module.config.hides}}
@ -49,24 +50,9 @@
{{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}} {{/foreach}}
{{:assign account_condition=$account_condition|cat:"0)"}} {{:assign account_condition=$account_condition|cat:"0)"}}
{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND "|cat:$doc_condition}}
{{if $unhide == null}}
{{:assign filter_condition="NOT ("}}
{{#foreach from=$module.config.filters item="filter"}}
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
{{/foreach}}
{{:assign filter_condition=$filter_condition|cat:"0)"}}
{{else}}
{{:assign filter_condition="1"}}
{{/if}}
{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND "|cat:$filter_condition|cat:" AND "|cat:$doc_condition}}
{{:assign nb_managed=0}}
{{:assign nb_ignored=0}} {{:assign nb_ignored=0}}
{{:assign nb_null=0}}
{{:assign nb_other=0}}
{{#select {{#select
trans.id as immo_trans_id, trans.id as immo_trans_id,
trans.label as trans_label, trans.label as trans_label,
@ -93,33 +79,41 @@
!condition=$condition !condition=$condition
assign="immo_line" assign="immo_line"
}} }}
{{*
parmi les immos gérées, ne conserver que celles dont le montant dans le doc est non nul
et inférieur au montant de l'écriture d'immo
*}}
{{if $immo_line.status == 'managed'}} {{if $immo_line.status == 'managed'}}
{{if $immo_line.amount == null || $immo_line.amount == 0 || $immo_line.amount == $immo_line.debit}} {{if $immo_line.amount == null || $immo_line.amount == 0 || $immo_line.amount == $immo_line.debit}}
{{:continue}} {{:continue}}
{{/if}} {{/if}}
{{/if}} {{/if}}
{{if $immo_line.status == null}}
{{:assign nb_null="%d+1"|math:$nb_null}} {{if $immo_line.status == 'ignored'}}
{{elseif $immo_line.status == 'managed'}}
{{:assign nb_managed="%d+1"|math:$nb_managed}}
{{elseif $immo_line.status == 'ignored'}}
{{:assign nb_ignored="%d+1"|math:$nb_ignored}} {{:assign nb_ignored="%d+1"|math:$nb_ignored}}
{{else}}
{{:assign nb_other="%d+1"|math:$nb_other}}
{{/if}} {{/if}}
{{if $unhide == null && $immo_line.status == "ignored"}}
{{:continue}}
{{/if}}
{{* vérifier si le libellé aurait pu être filtré *}}
{{#foreach from=$module.config.filters item="filter"}}
{{if $trans_label|strpos:$filter !== false}}
{{:assign var="immo_line.status" value="ignored"}}
{{:assign nb_ignored="%d+1"|math:$nb_ignored}}
{{/if}}
{{/foreach}}
{{if $unhide == null && $immo_line.status == "ignored"}}
{{:continue}}
{{/if}}
{{:assign var="immo_lines." value=$immo_line}} {{:assign var="immo_lines." value=$immo_line}}
{{/select}} {{/select}}
{{if $nb_ignored > 0}}
<form method="post" action=""> <form method="post" action="">
<fieldset> <fieldset>
{{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }} {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }}
</fieldset> </fieldset>
</form> </form>
{{/if}}
{{if $immo_lines|count > 0}} {{if $immo_lines|count > 0}}
<table class="list"> <table class="list">
@ -139,22 +133,6 @@
</thead> </thead>
<tbody> <tbody>
{{#foreach from=$immo_lines item="line"}} {{#foreach from=$immo_lines item="line"}}
{{if $unhide == null}}
{{if $status == "ignored"}}
{{:continue}}
{{/if}}
{{else}}
{{* vérifier si le libellé aurait pu être filtré *}}
{{#foreach from=$module.config.filters item="filter"}}
{{if $trans_label|strpos:$filter !== false}}
{{:assign status="ignored"}}
{{else}}
{{:assign status=""}}
{{/if}}
{{/foreach}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.immo_trans_id}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.immo_trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.trans_id_year}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.trans_id_year}}
{{:assign reste="%d-%d"|math:$line.debit:$line.amount}} {{:assign reste="%d-%d"|math:$line.debit:$line.amount}}

View file

@ -13,7 +13,7 @@
<li {{if $current == "managed"}}class="current"{{/if}}><a href="index.html?type_immo=managed">Amortissables</a></li> <li {{if $current == "managed"}}class="current"{{/if}}><a href="index.html?type_immo=managed">Amortissables</a></li>
<li {{if $current == "amortized"}}class="current"{{/if}}><a href="index.html?type_immo=amortized">Amorties</a></li> <li {{if $current == "amortized"}}class="current"{{/if}}><a href="index.html?type_immo=amortized">Amorties</a></li>
<li {{if $current == "archived"}}class="current"{{/if}}><a href="index.html?type_immo=archived">Sorties du bilan</a></li> <li {{if $current == "archived"}}class="current"{{/if}}><a href="index.html?type_immo=archived">Sorties du bilan</a></li>
<li {{if $current == "unfinished"}}class="current"{{/if}}><a href="index.html?type_immo=unfinished">En cours</a></li> <li {{if $current == "unfinished"}}class="current"{{/if}}><a href="index.html?type_immo=unfinished">En cours de constitution</a></li>
<li {{if $current == "other"}}class="current"{{/if}}><a href="index.html?type_immo=other">À classer</a></li> <li {{if $current == "other"}}class="current"{{/if}}><a href="index.html?type_immo=other">À classer</a></li>
<li {{if $current == "config"}} class="current"{{/if}}><a href="config.html">Configuration</a></li> <li {{if $current == "config"}} class="current"{{/if}}><a href="config.html">Configuration</a></li>
<li {{if $current == "aide"}} class="current"{{/if}}><a href="aide.html">Aide</a></li> <li {{if $current == "aide"}} class="current"{{/if}}><a href="aide.html">Aide</a></li>

View file

@ -2,10 +2,11 @@
{{* Liste des immobilisations en cours de constitution *}} {{* Liste des immobilisations en cours de constitution *}}
<section class="immobilisation"> <p class="block help">
Cet onglet liste les immobilisations en cours de
<p class="help"> constitution ; vous pouvez les sélectionner pour créer une
Cette page liste les immobilisations en cours de constitution, donc non amortissables immobilisation amortissable (exemple : achat de matériaux pour
la construction d'un bâtiment destiné à être amorti)
</p> </p>
{{:include file="_get_config.html" keep="module.config"}} {{:include file="_get_config.html" keep="module.config"}}
@ -28,54 +29,8 @@
{{:assign checked="checked"}} {{:assign checked="checked"}}
{{/if}} {{/if}}
<form method="post" action="">
<fieldset class="shortFormLeft">
<legend>Transférer une ou plusieurs lignes vers une immobilisation amortissable</legend>
<p class="help">
Cocher les lignes concernées
</p>
<div class="shortFormRight informations" id="total_amount">
<legend>Montants sélectionnés</legend>
<table class="montant">
<tbody>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div>
<p class="submit">
{{:linkbutton
label="Transférer"
href="transfer.html?trans="
shape="right"
id="transfer"
}}
</p>
</div>
</fieldset>
<fieldset>
{{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher toutes les écritures" }}
</fieldset>
</form>
<table class="list">
<thead>
<tr>
<th class="check"></th>
<th class="num"></th>
<th>Date</th>
<th>Libellé</th>
<th class="nombre">Montant</th>
<th>N° compte</th>
<th>Compte</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{* lister les immobilisations en cours de constitution *}} {{* lister les immobilisations en cours de constitution *}}
{{:assign first_code=null}}
{{:assign accounts_condition="("}} {{:assign accounts_condition="("}}
{{#foreach from=$module.config.unfinished item="elem"}} {{#foreach from=$module.config.unfinished item="elem"}}
{{if $elem.code != null}} {{if $elem.code != null}}
@ -83,6 +38,9 @@
{{else}} {{else}}
{{:assign code=$elem}} {{:assign code=$elem}}
{{/if}} {{/if}}
{{if $first_code == null}}
{{:assign first_code=$code}}
{{/if}}
{{:assign code=$code|cat:"%"|quote_sql}} {{:assign code=$code|cat:"%"|quote_sql}}
{{:assign accounts_condition=$accounts_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} {{:assign accounts_condition=$accounts_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}} {{/foreach}}
@ -96,8 +54,8 @@
{{/foreach}} {{/foreach}}
{{:assign filter_condition=$filter_condition|cat:"0)"}} {{:assign filter_condition=$filter_condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND "|cat:$filter_condition}} {{:assign condition=$condition|cat:" AND "|cat:$filter_condition}}
{{:assign nb_immo=0}}
{{:assign total_immo = 0}} {{:assign nb_ignored=0}}
{{#select {{#select
trans.id as trans_id, trans.id as trans_id,
trans.label as trans_label, trans.label as trans_label,
@ -116,13 +74,17 @@
GROUP BY trans.id GROUP BY trans.id
ORDER BY trans.date DESC; ORDER BY trans.date DESC;
!condition=$condition !condition=$condition
assign="immo_line"
}} }}
{{* voir si l'écriture a été marquée ignorée *}} {{* voir si l'écriture a été marquée ignorée *}}
{{:assign ignore=false}} {{:assign var="immo_line.ignore" value=false}}
{{#load type="immo" assign="info_immo" where="$$.line = :line_id AND $$.status = 'ignored'" :line_id=$immo_line_id|intval}} {{#load type="immo" assign="info_immo" where="$$.line = :line_id AND $$.status = 'ignored'" :line_id=$immo_line_id|intval}}
{{:assign ignore=true}} {{:assign var="immo_line.ignore" value=true}}
{{/load}} {{/load}}
{{if $ignore && $unhide == null}} {{if $immo_line.ignore}}
{{:assign nb_ignored="%d + 1"|math:$nb_ignored}}
{{/if}}
{{if $immo_line.ignore && $unhide == null}}
{{:continue}} {{:continue}}
{{/if}} {{/if}}
@ -150,9 +112,65 @@
{{:continue}} {{:continue}}
{{/if}} {{/if}}
{{:assign var="immo_lines." value=$immo_line}}
{{/select}}
<form method="post" action="">
{{if $immo_lines|count > 0}}
<fieldset class="shortFormLeft">
<legend>Transférer une ou plusieurs lignes vers une immobilisation amortissable</legend>
<p class="help">
Cocher les lignes concernées
</p>
<div class="shortFormRight informations" id="total_amount">
<legend>Montants sélectionnés</legend>
<table class="montant">
<tbody>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div>
<p class="submit">
{{:linkbutton
label="Transférer"
href="transfer.html?trans="
shape="right"
id="transfer"
}}
</p>
</div>
</fieldset>
{{/if}}
{{if $nb_ignored !== 0}}
<fieldset>
{{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }}
</fieldset>
{{/if}}
</form>
{{if $immo_lines|count > 0}}
<section class="immobilisation">
<table class="list">
<thead>
<tr>
<th class="check"></th>
<th class="num"></th>
<th>Date</th>
<th>Libellé</th>
<th class="nombre">Montant</th>
<th>N° compte</th>
<th>Compte</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{:assign total_immo = 0}}
{{#foreach from=$immo_lines}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}} {{: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 compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign nb_immo="%d+1"|math:$nb_immo}}
{{:assign total_immo="%d+%d"|math:$total_immo:$debit}} {{:assign total_immo="%d+%d"|math:$total_immo:$debit}}
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}} {{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$debit}} {{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$debit}}
@ -174,7 +192,8 @@
}} }}
</td> </td>
</tr> </tr>
{{/select}} {{/foreach}}
</tbody> </tbody>
<tfoot> <tfoot>
{{if $total_immo != 0}} {{if $total_immo != 0}}
@ -203,10 +222,10 @@
{{/if}} {{/if}}
</tfoot> </tfoot>
</table> </table>
{{if $nb_immo == 0}}
<p class="block alert">Aucune immobilisation</p>
{{/if}}
</section> </section>
{{else}}
<p class="block alert">Aucune écriture d'immobilisation trouvée dans la comptabilité (compte {{$first_code}} et sous-comptes)</p>
{{/if}}
<script type="text/javascript" src="scripts.js"></script> <script type="text/javascript" src="scripts.js"></script>
<script type="text/javascript" async="async"> <script type="text/javascript" async="async">

View file

@ -139,25 +139,28 @@
<dt>Montant à amortir</dt> <dt>Montant à amortir</dt>
<dd class="money strong">{{"%f"|math:$solde|money_currency_html:false|raw}}</dd> <dd class="money strong">{{"%f"|math:$solde|money_currency_html:false|raw}}</dd>
{{/if}} {{/if}}
{{if $valeur_residuelle > 0}}
<dt>Montant des amortissements</dt> <dt>Montant des amortissements</dt>
<dd>{{$total_amort|money_currency_html:false|raw}}</dd> <dd>{{$total_amort|money_currency_html:false|raw}}</dd>
<dt>Valeur nette résiduelle</dt> <dt>Valeur nette résiduelle</dt>
<dd>{{$valeur_residuelle|money_currency_html:false|raw}}</dd> <dd>{{$valeur_residuelle|money_currency_html:false|raw}}</dd>
{{/if}}
{{if $info_immo.duration != null && $valeur_residuelle > 0}} {{if $info_immo.duration != null && $valeur_residuelle > 0}}
{{:assign annuite="%f/%d"|math:$solde:$info_immo.duration}}
<dt>Annuité estimée</dt> <dt>Annuité estimée</dt>
<dd>{{"min(%d, %f/%d)"|math:$valeur_residuelle:$solde:$info_immo.duration|money_currency_html:false|raw}}</dd> <dd>{{"min(%d, %d)"|math:$valeur_residuelle:$annuite|money_currency_html:false|raw}}
{{if $annuite <= $valeur_residuelle}}
<span class="help"> pour un exercice de 365 jours</span>
{{/if}}
</dd>
{{/if}} {{/if}}
</dl> </dl>
</div> </div>
{{if $valeur_residuelle > 0 || $linked_immos != null}} {{if ! $created_amort || $linked_immos != null}}
<h3 class="ruler">Avoirs</h3> <h3 class="ruler">Avoirs</h3>
<nav class="actions">
{{if $total_amort == 0 || ! $created_amort}}
{{:linkbutton label="Attacher une écriture d'avoir" href="link_immo.html?immo_doc_id=%s&filter=true"|args:$_GET.immo_doc_id shape="link" target="_dialog"}}
{{/if}} {{/if}}
{{if ! $created_amort}}
<nav class="actions">
{{:linkbutton label="Attacher une écriture d'avoir" href="link_immo.html?immo_doc_id=%s&filter=true"|args:$_GET.immo_doc_id shape="link" target="_dialog"}}
</nav> </nav>
{{/if}} {{/if}}
@ -263,7 +266,14 @@
{{/if}} {{/if}}
{{if $linked_amort == null}} {{if $linked_amort == null}}
<p class="block alert">Aucun amortissement enregistré pour cette immobilisation ; utilisez le bouton « Enregistrer un amortissement » pour enregistrer un nouvel amortissement</p> <p class="block alert">Aucun amortissement enregistré pour cette
immobilisation ; en fin d'exercice vous pouvez enregistrer un
nouvel amortissement à l'aide du bouton « Enregistrer un
amortissement »</p>
{{elseif $_GET.type_immo == "managed"}}
<p class="block alert">En fin d'exercice vous pouvez enregistrer
un nouvel amortissement à l'aide du bouton « Enregistrer un
amortissement »</p>
{{/if}} {{/if}}
{{:form_errors}} {{:form_errors}}

View file

@ -36,4 +36,4 @@
exit_line_id=$_GET.exit_line_id|intval exit_line_id=$_GET.exit_line_id|intval
}} }}
{{:redirect to="exit_step4.html?immo_doc_id=%s&from=exit&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}} {{:redirect force="exit_step4.html?immo_doc_id=%s&from=exit&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}}

View file

@ -21,7 +21,7 @@
{{:include file="_nav.html" current=$type_immo}} {{:include file="_nav.html" current=$type_immo}}
{{* Mise à niveau *}} {{* Mise à niveau *}}
{{:assign module_version="0.40.2"}} {{:assign module_version="0.40.4"}}
{{:include file="upgrade.html" module_version=$module_version}} {{:include file="upgrade.html" module_version=$module_version}}
{{* supprimer les documents sans écriture associée *}} {{* supprimer les documents sans écriture associée *}}

View file

@ -120,8 +120,6 @@
{{/if}} {{/if}}
{{:form_errors}} {{:form_errors}}
{{:assign choix_defaut=$_GET.type_immo}}
{{* {{*
modifier la date de mise en service, les écritures associées ou la durée d'amortissement modifier la date de mise en service, les écritures associées ou la durée d'amortissement
*}} *}}

View file

@ -1,5 +1,5 @@
name="Amortissements" name="Amortissements"
description="Immobilisations et amortissements\nversion 0.40.2" description="Immobilisations et amortissements\nversion 0.40.4"
author="Jean-Christophe Engel" author="Jean-Christophe Engel"
author_url="https://gitea.zaclys.com/lesanges" author_url="https://gitea.zaclys.com/lesanges"
home_button=false home_button=false

View file

@ -41,6 +41,11 @@
{{:assign amort_label=$line_label|or:$trans_label}} {{:assign amort_label=$line_label|or:$trans_label}}
{{/foreach}} {{/foreach}}
{{* date de début du 1er exercice dans paheko *}}
{{#years order="start_date" limit=1}}
{{:assign first_date=$start_date}}
{{/years}}
{{if $total_amort == 0}} {{if $total_amort == 0}}
{{* 1er amortissement *}} {{* 1er amortissement *}}
{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} {{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}}
@ -55,9 +60,11 @@
{{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.trans_label}} {{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.trans_label}}
{{else}} {{else}}
{{* amortissements suivants *}} {{* amortissements suivants *}}
{{if $date_debut != $first_date}}
{{:assign date_debut=$date_debut|strtotime}} {{:assign date_debut=$date_debut|strtotime}}
{{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}} {{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}}
{{/if}} {{/if}}
{{/if}}
{{* {{*
lister les exercices qui englobent la date de mise en service de l'immo lister les exercices qui englobent la date de mise en service de l'immo
@ -219,13 +226,13 @@
{{if $years|count == 1}} {{if $years|count == 1}}
{{:assign var=selected_year value=$years.0.id}} {{:assign var=selected_year value=$years.0.id}}
{{/if}}
{{:assign var=date_amort value=$years.0.end_date}} {{:assign var=date_amort value=$years.0.end_date}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}} {{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{* montant de l'amortissement *}} {{* montant de l'amortissement *}}
{{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.amount:$info_immo.duration:$nbjours|intval}} {{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.amount:$info_immo.duration:$nbjours|intval}}
{{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.amount:$total_amort}} {{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.amount:$total_amort}}
{{/if}}
{{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}} {{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}}
{{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_account_label}} {{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_account_label}}
@ -242,7 +249,10 @@
{{:input type="select" default=$selected_year name="id_year" label="Exercice" required=true default_empty="— Faire un choix —" options=$open_years}} {{:input type="select" default=$selected_year name="id_year" label="Exercice" required=true default_empty="— Faire un choix —" options=$open_years}}
{{:input type="date" name="date_amort" label="Date" required=true default=$date_amort|date_short}} {{:input type="date" name="date_amort" label="Date" required=true default=$date_amort|date_short}}
{{:input type="text" name="designation" label="Libellé" required=true default=$amort_label size="50"}} {{:input type="text" name="designation" label="Libellé" required=true default=$amort_label size="50"}}
{{:input type="money" name="montant" label="Montant" required=true default=$montant_amort}} {{if $total_amort == 0 || $nbjours < 365 || $nbjours > 366}}
{{:assign msg="Montant calculé au prorata du nombre de jours d'amortissement dans l'exercice"}}
{{/if}}
{{:input type="money" name="montant" label="Montant" required=true default=$montant_amort help=$msg}}
{{:input {{:input
type="list" type="list"
name="debit_account" name="debit_account"

View file

@ -38,5 +38,4 @@
{{:include file="_compare_version.tpl" nv1=$module_version nv2=$module.config.version keep="comp"}} {{:include file="_compare_version.tpl" nv1=$module_version nv2=$module.config.version keep="comp"}}
{{if $comp > 0}} {{if $comp > 0}}
{{:save key="config" version=$module_version}} {{:save key="config" version=$module_version}}
<p class="block alert">Nouvelle version enregistrée : {{$module_version}}</p>
{{/if}} {{/if}}