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,221 +1,226 @@
{{* -*- 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"}}
{{* lister les immobilisations *}} {{if $module.table != null}}
{{:assign account_condition="("}}
{{#foreach from=$module.config.prefixes item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}}
{{:assign account_condition=$account_condition|cat:"0)"}}
{{:assign filter_condition=" AND NOT ("}} {{* lister les immobilisations *}}
{{#foreach from=$module.config.filters item="filter"}} {{:assign account_condition="("}}
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}} {{#foreach from=$module.config.prefixes item="code"}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}} {{:assign code=$code|cat:"%"|quote_sql}}
{{/foreach}} {{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
{{:assign filter_condition=$filter_condition|cat:"0)"}} {{/foreach}}
{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"|cat:$filter_condition}} {{:assign account_condition=$account_condition|cat:"0)"}}
{{:assign status_condition="($$.status = 'archived')"}}
<section class="immobilisation"> {{:assign filter_condition=" ("}}
<table class="list"> {{#foreach from=$module.config.filters item="filter"}}
<thead> {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
<tr> {{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
<th></th> {{/foreach}}
<th>Mise en service</th> {{:assign filter_condition=$filter_condition|cat:"0)"}}
<th>Date sortie</th> {{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND NOT "|cat:$filter_condition|cat:" AND "|cat:$status_condition}}
<th>Libellé</th>
<th class="nombre">Montant</th>
<th>N° compte</th>
<th>Compte</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{:assign nb_immo=0}} {{:assign total_cessions = 0}}
{{:assign total_immo = 0}}
{{:assign total_cessions = 0}}
{{#select {{#select
trans.id as trans_id, trans.id as trans_id,
trans.label as trans_label, trans.label as trans_label,
trans.date as trans_date, trans.date as trans_date,
trans.id_year as trans_id_year, trans.id_year as trans_id_year,
line.id as immo_line_id, line.id as immo_line_id,
line.label as line_label, line.label as line_label,
line.debit AS debit, line.debit AS debit,
account.id as account_id, account.id as account_id,
account.code as account_code, account.code as account_code,
account.label as account_label account.label as account_label,
FROM acc_transactions AS trans info.id as immo_doc_id,
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id $$.label as doc_label,
INNER JOIN acc_accounts AS account ON line.id_account = account.id $$.amount as doc_amount,
INNER JOIN acc_years AS years ON trans.id_year = years.id $$.date_achat as doc_date_achat,
WHERE !condition $$.date_mes as doc_date_mes,
ORDER BY trans.date DESC; $$.status as status
!condition=$condition 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"
}}
{{* voir si l'immo est prise en charge *}} {{:assign var="immo_line.date_mes" value=$doc_date_mes|or:$doc_date_achat|or:$trans_date}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id assign="info_immo"}} {{:assign var="immo_line.montant_immo" value=$doc_amount|or:$debit}}
{{: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 *}} {{* chercher le doc de sortie du bilan *}}
{{:assign exit_date=null}} {{:assign var="immo_line.exit_date" value=null}}
{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id}} {{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$immo_doc_id}}
{{:assign exit_line_id=$exit_line_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 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 var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}}
{{* voir s'il y a une écriture de cession associée à cette immo *}}
{{#select {{#select
trans.id, trans.date
line.debit FROM acc_transactions_lines AS line
FROM acc_transactions_links AS link INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_transactions AS trans ON (CASE WHERE line.id = :exit_line_id;
WHEN link.id_transaction = :trans_id THEN link.id_related :exit_line_id=$exit_line_id
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="immo_line.exit_date" value=$date}}
{{:assign var="montant_cessions.%d"|args:$account_code value="%d+%d"|math:$montant:$debit}}
{{:assign total_cessions="%d+%d"|math:$total_cessions:$debit}}
{{/select}} {{/select}}
{{/load}}
<tr> {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
<td class="num"><a href="{{$trans_url}}">#{{$trans_id}}</a></td> {{:assign credit_immo=null}}
<td>{{$date_mes|date_short}}</td> {{:assign total_credits=0}}
<td>{{$exit_date|date_short}}</td> {{#load
<td>{{$trans_label}}{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}}</td> type="credit_link"
<td class="money">{{"%f"|math:$montant_immo|money_html:false|raw}}</td> where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
<td><a href="{{$compte_url}}">{{$account_code}}</a></td> }}
<td>{{$account_label}}</td> {{if $amount == null}}
<td class="actions"> {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
{{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s&from=exit"|args:$info_immo.id shape="edit"}} :credit_line_id=$credit_line_id
</td> }}
</tr> {{: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}} {{/select}}
</tbody> {{:assign var="immo_lines." value=$immo_line}}
<tfoot> {{/select}}
{{if $total_immo != 0}}
<tr> {{if $immo_lines|count > 0}}
<td colspan="9"> <section class="immobilisation">
</tr> <table class="list">
{{#foreach from=$sommes_immo|ksort key="code" item="value"}} <thead>
<tr> <tr>
<td></td> <th></th>
<td></td> <th>Mise en service</th>
<td></td> <th>Date sortie</th>
<td>Total du compte {{$code}}</td> <th>Libellé</th>
<td class="money">{{$value|money_html:false|raw}}</td> <th class="nombre">Montant</th>
<td></td> <th>N° compte</th>
<td></td> <th>Compte</th>
<td class="actions"></td> <th class="actions"></th>
</tr> </tr>
{{/foreach}} </thead>
<tr> <tbody>
<td></td>
<td></td> {{:assign total_immo = 0}}
<td></td> {{#foreach from=$immo_lines}}
<td class="strong">Total des immobilisations</td> {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
<td class="money strong">{{$total_immo|money_html:false|raw}}</td> {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
<td></td> {{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}}
<td></td> {{:assign label_immo=$doc_label|or:$trans_label}}
<td class="actions"></td> {{if $label_immo|strpos:$line_label === false}}
</tr> {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}}
{{/if}} {{/if}}
{{if $total_cessions != 0}} <tr>
<tr> <td class="num"><a href="{{$trans_url}}">#{{$trans_id}}</a></td>
<td colspan="9"> <td>{{$date_mes|date_short}}</td>
</tr> <td>{{$exit_date|date_short}}</td>
{{#foreach from=$montant_cessions|ksort key="code" item="value"}} <td>{{$label_immo}}</td>
<tr> <td class="money">{{"%f"|math:$montant_immo|money_html:false|raw}}</td>
<td></td> <td><a href="{{$compte_url}}">{{$account_code}}</a></td>
<td></td> <td>{{$account_label}}</td>
<td></td> <td class="actions">
<td>Cessions du compte {{$code}}</td> {{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s&from=exit"|args:$immo_doc_id shape="edit"}}
<td class="money">{{$value|money_html:false|raw}}</td> </td>
<td></td> </tr>
<td></td> {{/foreach}}
<td class="actions"></td> </tbody>
</tr> <tfoot>
{{/foreach}} {{if $total_immo != 0}}
<tr> <tr>
<td></td> <td colspan="9">
<td></td> </tr>
<td></td> {{#foreach from=$sommes_immo|ksort key="code" item="value"}}
<td class="strong">Total des cessions</td> <tr>
<td class="money strong">{{$total_cessions|money_html:false|raw}}</td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td class="actions"></td> <td>Total du compte {{$code}}</td>
</tr> <td class="money">{{$value|money_html:false|raw}}</td>
{{/if}} <td></td>
</tfoot> <td></td>
</table> <td class="actions"></td>
{{if $nb_immo == 0}} </tr>
<p class="block alert">Aucune immobilisation</p> {{/foreach}}
<tr>
<td></td>
<td></td>
<td></td>
<td class="strong">Total des immobilisations</td>
<td class="money strong">{{$total_immo|money_html:false|raw}}</td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/if}}
{{if $total_cessions != 0}}
<tr>
<td colspan="9">
</tr>
{{#foreach from=$montant_cessions|ksort key="code" item="value"}}
<tr>
<td></td>
<td></td>
<td></td>
<td>Cessions du compte {{$code}}</td>
<td class="money">{{$value|money_html:false|raw}}</td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/foreach}}
<tr>
<td></td>
<td></td>
<td></td>
<td class="strong">Total des cessions</td>
<td class="money strong">{{$total_cessions|money_html:false|raw}}</td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/if}}
</tfoot>
</table>
</section>
{{/if}} {{/if}}
</section> {{/if}}
{{if $immo_lines|count == 0 || $module.table == null}}
<p class="block alert">Aucune immobilisation</p>
{{/if}}

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,166 +4,177 @@
{{: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"> {{* lister les immobilisations *}}
<thead> {{:assign account_condition="("}}
<tr> {{#foreach from=$module.config.prefixes item="code"}}
<th class="num"></th> {{:assign code=$code|cat:"%"|quote_sql}}
<th>Date</th> {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
<th>Libellé</th> {{/foreach}}
<th class="nombre">Montant</th> {{:assign account_condition=$account_condition|cat:"0)"}}
<th class="nombre">Durée</th> {{:assign status_condition="($$.status = 'managed' OR $$.status = 'amortized')"}}
<th class="nombre">Amortissements</th> {{:assign condition=$account_condition|cat:" AND line.debit > 0 AND "|cat:$status_condition}}
<th class="nombre">Valeur nette</th>
<th>N° compte</th>
<th class="actions"></th>
</tr>
</thead>
<tbody>
{{* lister les immobilisations *}} {{#select
{{:assign account_condition="("}} trans.id as immo_trans_id,
{{#foreach from=$module.config.prefixes item="code"}} trans.label as trans_label,
{{:assign code=$code|cat:"%"|quote_sql}} trans.date as trans_date,
{{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} line.id as immo_line_id,
{{/foreach}} line.debit AS debit,
{{:assign account_condition=$account_condition|cat:"0)"}} line.label AS line_label,
{{:assign status_condition="($$.status = 'managed' OR $$.status = 'amortized')"}} account.id as account_id,
{{:assign condition=$account_condition|cat:" AND line.debit > 0 AND "|cat:$status_condition}} account.code as account_code,
trans.id_year as trans_id_year,
{{:assign nb_immo=0}} info.id as immo_doc_id,
{{:assign total_immo = 0}} $$.duration as duration,
{{#select $$.label as doc_label,
trans.id as immo_trans_id, $$.amount as doc_amount,
trans.label as trans_label, $$.date_achat as doc_date_achat,
trans.date as trans_date, $$.date as doc_date_mes,
line.id as immo_line_id, $$.status as status
line.debit AS debit, FROM acc_transactions AS trans
line.label AS line_label, INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
account.id as account_id, INNER JOIN acc_accounts AS account ON line.id_account = account.id
account.code as account_code, INNER JOIN acc_years AS years ON trans.id_year = years.id
trans.id_year as trans_id_year, INNER JOIN !table AS info ON $$.line = line.id
info.id as immo_doc_id, WHERE !condition
$$.duration as duration, ORDER BY COALESCE(doc_date_achat, trans_date) DESC;
$$.label as doc_label, !table=$module.table
$$.amount as doc_amount, !condition=$condition
$$.date_achat as doc_date_achat, assign="immo_line"
$$.date as doc_date_mes, }}
$$.status as status {{:assign montant_immo=$doc_amount|or:$debit}}
FROM acc_transactions AS trans {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id {{#load
INNER JOIN acc_accounts AS account ON line.id_account = account.id type="credit_link"
INNER JOIN acc_years AS years ON trans.id_year = years.id where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
INNER JOIN !table AS info ON $$.line = line.id }}
WHERE !condition {{if $amount == null}}
ORDER BY COALESCE(doc_date_achat, trans_date) DESC; {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
!table=$module.table :credit_line_id=$credit_line_id
!condition=$condition
}}
{{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 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 *}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
}} }}
{{if $amount == null}} {{:assign montant_immo="%d-%d"|math:$montant_immo:$credit}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id; {{/select}}
:credit_line_id=$credit_line_id {{else}}
}} {{:assign montant_immo="%d-%d"|math:$montant_immo:$amount}}
{{:assign montant_immo="%d-%d"|math:$montant_immo:$credit}} {{/if}}
{{/select}} {{/load}}
{{else}}
{{:assign montant_immo="%d-%d"|math:$montant_immo:$amount}}
{{/if}}
{{/load}}
{{if $montant_immo == 0}} {{if $montant_immo == 0}}
{{* Immobilisation soldée *}} {{* Immobilisation soldée *}}
{{:continue}} {{:continue}}
{{/if}} {{else}}
{{:assign var="immo_line.montant_immo" value=$montant_immo}}
{{/if}}
{{* montant des amortissements liés à l'immobilisation *}} {{* montant des amortissements liés à l'immobilisation *}}
{{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}} {{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}}
{{:assign amort_amount=$total_amort}} {{:assign amort_amount=$total_amort}}
{{* 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 nb_immo="%d+1"|math:$nb_immo}} {{:assign var="immo_lines." value=$immo_line}}
{{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}} {{/select}}
{{: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}} {{if $immo_lines|count > 0}}
<tr> <table class="list">
<td class="num"><a href="{{$trans_url}}">#{{$immo_trans_id}}</a></td> <thead>
<td>{{$immo_date|date_short}}</td>
<td>{{$label_immo}}</td>
<td class="money">{{$montant_immo|money_html:false|raw}}</td>
<td class="money">{{if $duration != null}}{{$duration}}{{/if}}</td>
<td class="money">{{$amort_amount|money_html:false|raw}}</td>
<td class="money">{{"%d-%d"|math:$montant_immo:$amort_amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$account_code}}</a></td>
<td class="actions">
{{:linkbutton
label="Détails"
href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="eye"
}}
</td>
</tr>
{{/select}}
</tbody>
<tfoot>
{{if $total_immo != 0}}
<tr> <tr>
<td colspan="9"> <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> </tr>
{{#foreach from=$sommes_immo|ksort key="code" item="value"}} </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 total_immo="%d+%d"|math:$total_immo:$montant_immo}}
{{: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}}
<tr>
<td class="num"><a href="{{$trans_url}}">#{{$immo_trans_id}}</a></td>
<td>{{$immo_date|date_short}}</td>
<td>{{$label_immo}}</td>
<td class="money">{{$montant_immo|money_html:false|raw}}</td>
<td class="money">{{if $duration != null}}{{$duration}}{{/if}}</td>
<td class="money">{{$amort_amount|money_html:false|raw}}</td>
<td class="money">{{"%d-%d"|math:$montant_immo:$amort_amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$account_code}}</a></td>
<td class="actions">
{{:linkbutton
label="Détails"
href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="eye"
}}
</td>
</tr>
{{/foreach}}
</tbody>
<tfoot>
{{if $total_immo != 0}}
<tr>
<td colspan="9">
</tr>
{{#foreach from=$sommes_immo|ksort key="code" item="value"}}
<tr>
<td></td>
<td></td>
<td>Total du compte {{$code}}</td>
<td class="money">{{$value|money_html:false|raw}}</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/foreach}}
<tr> <tr>
<td></td> <td></td>
<td></td> <td></td>
<td>Total du compte {{$code}}</td> <td class="strong">Total des immobilisations</td>
<td class="money">{{$value|money_html:false|raw}}</td> <td class="money strong">{{$total_immo|money_html|raw}}</td>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td class="actions"></td> <td class="actions"></td>
</tr> </tr>
{{/foreach}} {{/if}}
<tr> </tfoot>
<td></td> </table>
<td></td> {{/if}}
<td class="strong">Total des immobilisations</td>
<td class="money strong">{{$total_immo|money_html|raw}}</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/if}}
</tfoot>
</table>
{{/if}} {{/if}}
{{if $nb_immo == 0 || $module.table == null}} {{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,
@ -92,94 +78,86 @@
!table=$module.table !table=$module.table
!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}}
<form method="post" action=""> {{if $nb_ignored > 0}}
<fieldset> <form method="post" action="">
{{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }} <fieldset>
</fieldset> {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }}
</form> </fieldset>
</form>
{{/if}}
{{if $immo_lines|count > 0}} {{if $immo_lines|count > 0}}
<table class="list"> <table class="list">
<thead> <thead>
<tr> <tr>
<th class="num"></th> <th class="num"></th>
<th class="nombre">Ligne</th> <th class="nombre">Ligne</th>
<th>Date</th> <th>Date</th>
<th>Libellé</th> <th>Libellé</th>
<th class="nombre">Montant</th> <th class="nombre">Montant</th>
<th class="nombre">Affecté</th> <th class="nombre">Affecté</th>
<th class="nombre">Reste</th> <th class="nombre">Reste</th>
<th>N° compte</th> <th>N° compte</th>
<th>Compte</th> <th>Compte</th>
<th class="actions"></th> <th class="actions"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{#foreach from=$immo_lines item="line"}} {{#foreach from=$immo_lines item="line"}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.immo_trans_id}}
{{if $unhide == null}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.trans_id_year}}
{{if $status == "ignored"}} {{:assign reste="%d-%d"|math:$line.debit:$line.amount}}
{{:continue}} <tr {{if $status == "ignored"}}class="ignored"{{/if}}>
{{/if}} <td class="num"><a href="{{$trans_url}}">#{{$line.immo_trans_id}}</a></td>
{{else}} <td class="nombre">{{$line.immo_line_id}}</td>
{{* vérifier si le libellé aurait pu être filtré *}} <td>{{$trans_date|date_short}}</td>
{{#foreach from=$module.config.filters item="filter"}} <td>{{$line.trans_label}}{{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}}</td>
{{if $trans_label|strpos:$filter !== false}} <td class="money">{{"%f"|math:$line.debit|money_html:false|raw}}</td>
{{:assign status="ignored"}} <td class="money">{{"%f"|math:$line.amount|money_html:false|raw}}</td>
{{else}} <td class="money">{{"%f"|math:$reste|money_html:false|raw}}</td>
{{:assign status=""}} <td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
{{/if}} <td>{{$line.account_label}}</td>
{{/foreach}} <td class="actions">
{{/if}} {{:linkbutton
label="Paramètres"
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.immo_trans_id}} href="add_infos.html?immo_line_id=%s"|args:$immo_line_id
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.trans_id_year}} shape="settings"
{{:assign reste="%d-%d"|math:$line.debit:$line.amount}} target="_dialog"
<tr {{if $status == "ignored"}}class="ignored"{{/if}}> }}
<td class="num"><a href="{{$trans_url}}">#{{$line.immo_trans_id}}</a></td> </td>
<td class="nombre">{{$line.immo_line_id}}</td> </tr>
<td>{{$trans_date|date_short}}</td> {{/foreach}}
<td>{{$line.trans_label}}{{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}}</td> </tbody>
<td class="money">{{"%f"|math:$line.debit|money_html:false|raw}}</td> </table>
<td class="money">{{"%f"|math:$line.amount|money_html:false|raw}}</td>
<td class="money">{{"%f"|math:$reste|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td class="actions">
{{:linkbutton
label="Paramètres"
href="add_infos.html?immo_line_id=%s"|args:$immo_line_id
shape="settings"
target="_dialog"
}}
</td>
</tr>
{{/foreach}}
</tbody>
</table>
{{else}} {{else}}
<p class="block alert">Aucune immobilisation</p> <p class="block alert">Aucune immobilisation</p>
{{/if}} {{/if}}

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,33 +2,121 @@
{{* 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
constitution ; vous pouvez les sélectionner pour créer une
immobilisation amortissable (exemple : achat de matériaux pour
la construction d'un bâtiment destiné à être amorti)
</p>
<p class="help"> {{:include file="_get_config.html" keep="module.config"}}
Cette page liste les immobilisations en cours de constitution, donc non amortissables {{:assign saved_hides=$module.config.hides}}
</p> {{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}}
{{:include file="_get_config.html" keep="module.config"}} {{if $_POST|count == 0}}
{{:assign saved_hides=$module.config.hides}} {{:assign unhide=$user_hides.unhide_unfinished}}
{{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}} {{else}}
{{if $_POST.unhide == null}}
{{if $_POST|count == 0}} {{:assign unhide=0}}
{{:assign unhide=$user_hides.unhide_unfinished}}
{{else}} {{else}}
{{if $_POST.unhide == null}} {{:assign unhide=1}}
{{:assign unhide=0}}
{{else}}
{{:assign unhide=1}}
{{/if}}
{{:assign var="user_hides.unhide_unfinished" value=$unhide"}}
{{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}}
{{:save key="config" hides=$saved_hides}}
{{/if}} {{/if}}
{{if $unhide}} {{:assign var="user_hides.unhide_unfinished" value=$unhide"}}
{{:assign checked="checked"}} {{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}}
{{:save key="config" hides=$saved_hides}}
{{/if}}
{{if $unhide}}
{{:assign checked="checked"}}
{{/if}}
{{* lister les immobilisations en cours de constitution *}}
{{:assign first_code=null}}
{{:assign accounts_condition="("}}
{{#foreach from=$module.config.unfinished item="elem"}}
{{if $elem.code != null}}
{{:assign code=$elem.code}}
{{else}}
{{:assign code=$elem}}
{{/if}}
{{if $first_code == null}}
{{:assign first_code=$code}}
{{/if}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign accounts_condition=$accounts_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}}
{{:assign accounts_condition=$accounts_condition|cat:"0)"}}
{{:assign condition=$accounts_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}}
{{: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)"}}
{{:assign condition=$condition|cat:" AND "|cat:$filter_condition}}
{{:assign nb_ignored=0}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as trans_date,
line.id as immo_line_id,
account.id as account_id,
account.code as account_code,
account.label as account_label,
sum(line.debit) AS debit,
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
WHERE !condition
GROUP BY trans.id
ORDER BY trans.date DESC;
!condition=$condition
assign="immo_line"
}}
{{* voir si l'écriture a été marquée ignorée *}}
{{: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}}
{{:assign var="immo_line.ignore" value=true}}
{{/load}}
{{if $immo_line.ignore}}
{{:assign nb_ignored="%d + 1"|math:$nb_ignored}}
{{/if}}
{{if $immo_line.ignore && $unhide == null}}
{{:continue}}
{{/if}} {{/if}}
<form method="post" action=""> {{*
TODO cas où :
- il y a (au moins) une écriture d'avoir
*}}
{{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}}
{{#select
count(*) AS count
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
WHERE line.credit = :amount AND code = :account_code
;
:amount = $debit
:account_code = $account_code
}}
{{:assign count=$count}}
{{/select}}
{{* S'il y a plus d'une écriture de même montant on ne peut pas décider *}}
{{if $count == 1}}
{{:continue}}
{{/if}}
{{:assign var="immo_lines." value=$immo_line}}
{{/select}}
<form method="post" action="">
{{if $immo_lines|count > 0}}
<fieldset class="shortFormLeft"> <fieldset class="shortFormLeft">
<legend>Transférer une ou plusieurs lignes vers une immobilisation amortissable</legend> <legend>Transférer une ou plusieurs lignes vers une immobilisation amortissable</legend>
<p class="help"> <p class="help">
@ -54,159 +142,90 @@
</p> </p>
</div> </div>
</fieldset> </fieldset>
{{/if}}
{{if $nb_ignored !== 0}}
<fieldset> <fieldset>
{{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher toutes les écritures" }} {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }}
</fieldset> </fieldset>
</form> {{/if}}
</form>
<table class="list"> {{if $immo_lines|count > 0}}
<thead> <section class="immobilisation">
<tr> <table class="list">
<th class="check"></th> <thead>
<th class="num"></th> <tr>
<th>Date</th> <th class="check"></th>
<th>Libellé</th> <th class="num"></th>
<th class="nombre">Montant</th> <th>Date</th>
<th>N° compte</th> <th>Libellé</th>
<th>Compte</th> <th class="nombre">Montant</th>
<th class="actions"></th> <th>N° compte</th>
</tr> <th>Compte</th>
</thead> <th class="actions"></th>
<tbody> </tr>
</thead>
<tbody>
{{* lister les immobilisations en cours de constitution *}} {{:assign total_immo = 0}}
{{#foreach from=$immo_lines}}
{{: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 total_immo="%d+%d"|math:$total_immo:$debit}}
{{: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 accounts_condition="("}} <tr {{if $ignore}}class="checked"{{/if}}>
{{#foreach from=$module.config.unfinished item="elem"}} <td class="check">{{:input type="checkbox" name="selected[]" value=$trans_id}}</td>
{{if $elem.code != null}} <td class="num"><a href="{{$trans_url}}">#{{$trans_id}}</a></td>
{{:assign code=$elem.code}} <td>{{$trans_date|date_short}}</td>
{{else}} <td>{{$trans_label}}</td>
{{:assign code=$elem}} <td class="money">{{"%f"|math:$debit|money_html:false|raw}}</td>
{{/if}} <td class="account_code"><a href="{{$compte_url}}">{{$account_code}}</a></td>
{{:assign code=$code|cat:"%"|quote_sql}} <td>{{$account_label}}</td>
{{:assign accounts_condition=$accounts_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} <td class="actions">
{{/foreach}} {{:linkbutton
{{:assign accounts_condition=$accounts_condition|cat:"0)"}} label="Modifier"
{{:assign condition=$accounts_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}} href="ignore.html?immo_line_id=%s"|args:$immo_line_id
shape="edit"
target="_dialog"
}}
</td>
</tr>
{{/foreach}}
{{:assign filter_condition=" NOT ("}} </tbody>
{{#foreach from=$module.config.filters item="filter"}} <tfoot>
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}} {{if $total_immo != 0}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}} {{#foreach from=$sommes_immo|ksort key="code" item="value"}}
{{/foreach}} <tr>
{{:assign filter_condition=$filter_condition|cat:"0)"}} <td></td>
{{:assign condition=$condition|cat:" AND "|cat:$filter_condition}} <td></td>
{{:assign nb_immo=0}} <td></td>
{{:assign total_immo = 0}} <td>Total du compte {{$code}}</td>
{{#select <td class="money">{{$value|money_html|raw}}</td>
trans.id as trans_id, <td></td>
trans.label as trans_label, <td></td>
trans.date as trans_date, <td class="actions"></td>
line.id as immo_line_id, </tr>
account.id as account_id, {{/foreach}}
account.code as account_code,
account.label as account_label,
sum(line.debit) AS debit,
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
WHERE !condition
GROUP BY trans.id
ORDER BY trans.date DESC;
!condition=$condition
}}
{{* voir si l'écriture a été marquée ignorée *}}
{{:assign ignore=false}}
{{#load type="immo" assign="info_immo" where="$$.line = :line_id AND $$.status = 'ignored'" :line_id=$immo_line_id|intval}}
{{:assign ignore=true}}
{{/load}}
{{if $ignore && $unhide == null}}
{{:continue}}
{{/if}}
{{*
TODO cas où :
- il y a (au moins) une écriture d'avoir
*}}
{{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}}
{{#select
count(*) AS count
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
WHERE line.credit = :amount AND code = :account_code
;
:amount = $debit
:account_code = $account_code
}}
{{:assign count=$count}}
{{/select}}
{{* S'il y a plus d'une écriture de même montant on ne peut pas décider *}}
{{if $count == 1}}
{{:continue}}
{{/if}}
{{: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 nb_immo="%d+1"|math:$nb_immo}}
{{:assign total_immo="%d+%d"|math:$total_immo:$debit}}
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$debit}}
<tr {{if $ignore}}class="checked"{{/if}}>
<td class="check">{{:input type="checkbox" name="selected[]" value=$trans_id}}</td>
<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_html:false|raw}}</td>
<td class="account_code"><a href="{{$compte_url}}">{{$account_code}}</a></td>
<td>{{$account_label}}</td>
<td class="actions">
{{:linkbutton
label="Modifier"
href="ignore.html?immo_line_id=%s"|args:$immo_line_id
shape="edit"
target="_dialog"
}}
</td>
</tr>
{{/select}}
</tbody>
<tfoot>
{{if $total_immo != 0}}
{{#foreach from=$sommes_immo|ksort key="code" item="value"}}
<tr> <tr>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td>Total du compte {{$code}}</td> <td class="strong">Total des immobilisations</td>
<td class="money">{{$value|money_html|raw}}</td> <td class="money strong">{{$total_immo|money_html|raw}}</td>
<td></td> <td></td>
<td></td> <td></td>
<td class="actions"></td> <td class="actions"></td>
</tr> </tr>
{{/foreach}} {{/if}}
<tr> </tfoot>
<td></td> </table>
<td></td> </section>
<td></td> {{else}}
<td class="strong">Total des immobilisations</td> <p class="block alert">Aucune écriture d'immobilisation trouvée dans la comptabilité (compte {{$first_code}} et sous-comptes)</p>
<td class="money strong">{{$total_immo|money_html|raw}}</td> {{/if}}
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/if}}
</tfoot>
</table>
{{if $nb_immo == 0}}
<p class="block alert">Aucune immobilisation</p>
{{/if}}
</section>
<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>
{{/if}}
{{if ! $created_amort}}
<nav class="actions"> <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"}}
{{: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}}
</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,8 +60,10 @@
{{: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 *}}
{{:assign date_debut=$date_debut|strtotime}} {{if $date_debut != $first_date}}
{{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}} {{:assign date_debut=$date_debut|strtotime}}
{{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}}
{{/if}}
{{/if}} {{/if}}
{{* {{*
@ -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}}
{{:assign var=date_amort value=$years.0.end_date}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{* montant de l'amortissement *}}
{{: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}}
{{/if}} {{/if}}
{{:assign var=date_amort value=$years.0.end_date}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{* montant de l'amortissement *}}
{{: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 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}}