294 lines
9.2 KiB
HTML
294 lines
9.2 KiB
HTML
{{* -*- brindille -*- *}}
|
||
|
||
{{* Liste des immobilisations en cours de constitution *}}
|
||
|
||
<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>
|
||
|
||
{{#form on="transfer"}}
|
||
{{if $_POST.selected == null}}
|
||
<p class="block error">Vous n'avez sélectionné aucune écriture !</p>
|
||
{{else}}
|
||
{{:assign doc_list=$_POST.selected|implode:","}}
|
||
{{:redirect to="transfer.html?doc=%s"|args:$doc_list}}
|
||
{{/if}}
|
||
{{/form}}
|
||
|
||
{{:include file="_get_config.html" keep="module.config"}}
|
||
{{:assign saved_hides=$module.config.hides}}
|
||
{{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}}
|
||
|
||
{{if $_POST|count == 0}}
|
||
{{:assign unhide=$user_hides.unhide_unfinished}}
|
||
{{else}}
|
||
{{if $_POST.unhide == null}}
|
||
{{: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 $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"}}
|
||
|
||
{{: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,
|
||
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
|
||
ORDER BY trans.date DESC;
|
||
!condition=$condition
|
||
assign="immo_line"
|
||
}}
|
||
{{* document associé *}}
|
||
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id assign="info_immo"}}
|
||
{{:assign var="immo_line.doc_id" value=$info_immo.id}}
|
||
{{* *}}
|
||
{{if $status == "unfinished"}}
|
||
{{* voir si l'immo a été ventilée *}}
|
||
{{:assign var="immo_line.allocated_amount" value=0}}
|
||
{{#load type="immo" where="$$.line = :immo_line_id AND ($$.status = 'inprogress' OR $$.status = "transferred")" :immo_line_id=$immo_line_id}}
|
||
{{:assign var="immo_line.allocated_amount" value="%d+%d"|math:$immo_line.allocated_amount:$amount}}
|
||
{{/load}}
|
||
{{elseif $status == 'ignored'}}
|
||
{{:assign nb_ignored="%d + 1"|math:$nb_ignored}}
|
||
{{if $unhide == null}}
|
||
{{:continue}}
|
||
{{/if}}
|
||
{{/if}}
|
||
{{else}}
|
||
{{* cas d'une immo sans doc associé => créer le doc *}}
|
||
{{:save
|
||
key=""|uuid
|
||
validate_schema="asset.schema.json"
|
||
type="immo"
|
||
line=$immo_line_id|intval
|
||
duration=0
|
||
status="unfinished"
|
||
assign_new_id="immo_doc_id"
|
||
}}
|
||
{{:assign var="immo_line.doc_id" value=$immo_doc_id|intval}}
|
||
{{/load}}
|
||
|
||
{{if $info_immo.status == 'transferred'}}
|
||
{{:continue}}
|
||
{{/if}}
|
||
{{if $immo_line.allocated_amount == $debit}}
|
||
{{:continue}}
|
||
{{/if}}
|
||
|
||
{{:assign var="immo_lines." value=$immo_line}}
|
||
{{/select}}
|
||
|
||
{{* lister les immos incorporées de la balance d'ouverture *}}
|
||
{{#load type="immo" where="$$.status='inprogress'" assign="unfinished_immo"}}
|
||
{{* chercher l'écriture dont est tirée l'immo *}}
|
||
{{#select
|
||
trans.id as trans_id,
|
||
line.id as immo_line_id,
|
||
account.id as account_id,
|
||
account.code as account_code,
|
||
account.label as account_label,
|
||
trans.id_year as trans_id_year
|
||
FROM acc_transactions AS trans
|
||
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
|
||
INNER JOIN acc_accounts AS account ON line.id_account = account.id
|
||
INNER JOIN acc_years AS years ON trans.id_year = years.id
|
||
WHERE line.id = :unfinished_immo_line;
|
||
:unfinished_immo_line = $unfinished_immo.line
|
||
assign="immo_line"
|
||
}}
|
||
{{:assign var="immo_line.trans_label" value=$unfinished_immo.label}}
|
||
{{:assign var="immo_line.trans_date" value=$unfinished_immo.date_achat}}
|
||
{{:assign var="immo_line.debit" value=$unfinished_immo.amount}}
|
||
{{:assign var="immo_line.doc_id" value=$id}}
|
||
{{:assign var="immo_lines." value=$immo_line}}
|
||
{{/select}}
|
||
{{/load}}
|
||
|
||
<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">
|
||
{{:button
|
||
type="submit"
|
||
name="transfer"
|
||
label="Transférer"
|
||
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}}
|
||
|
||
{{if $immo_lines|count > 0}}
|
||
<section class="immobilisation">
|
||
<table class="list">
|
||
<thead>
|
||
<tr>
|
||
<th class="check"></th>
|
||
<th class="num">N°</th>
|
||
<th>Date</th>
|
||
<th>Libellé</th>
|
||
<th class="nombre">Montant</th>
|
||
<th class="nombre">Affecté</th>
|
||
<th class="nombre">Reste</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 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 var="row_value" value=$trans_id|cat:"_"|cat:$doc_id}}
|
||
|
||
<tr {{if $ignore}}class="checked"{{/if}}{{if $allocated_amount > 0}}class="strong"{{/if}}>
|
||
<td class="check">{{:input type="checkbox" name="selected[]" value=$doc_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="money">{{"%f"|math:$allocated_amount|money_html:false|raw}}</td>
|
||
<td class="money remainder">{{"%f-%f"|math:$debit:$allocated_amount|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="Paramètres"
|
||
href="add_infos.html?immo_line_id=%s"|args:$immo_line_id
|
||
shape="settings"
|
||
target="_dialog"
|
||
}}
|
||
</td>
|
||
</tr>
|
||
{{/foreach}}
|
||
|
||
</tbody>
|
||
<tfoot>
|
||
{{if $total_immo != 0}}
|
||
{{#foreach from=$sommes_immo|ksort key="code" item="value"}}
|
||
<tr>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td>Total du compte {{$code}}</td>
|
||
<td class="money">{{$value|money_html|raw}}</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td class="actions"></td>
|
||
</tr>
|
||
{{/foreach}}
|
||
<tr>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td class="strong">Total des immobilisations</td>
|
||
<td class="money strong">{{$total_immo|money_html|raw}}</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td class="actions"></td>
|
||
</tr>
|
||
{{/if}}
|
||
</tfoot>
|
||
</table>
|
||
</section>
|
||
{{else}}
|
||
<p class="block alert">Aucune écriture d'immobilisation trouvée dans la comptabilité (compte {{$first_code}} et sous-comptes)</p>
|
||
{{/if}}
|
||
</form>
|
||
|
||
<script type="text/javascript" src="scripts.js"></script>
|
||
<script type="text/javascript" async="async">
|
||
|
||
let lines = document.querySelectorAll('.list tbody tr');
|
||
for (const line of lines) {
|
||
let button = line.querySelector('input[type=checkbox]');
|
||
button.onchange = () => {
|
||
computeTotal('total_amount', 'transfer');
|
||
};
|
||
}
|
||
|
||
function changeVisibility(evt, idcheck = 'f_unhide_1') {
|
||
this.form.dispatchEvent(new Event('submit'));
|
||
this.form.submit();
|
||
}
|
||
|
||
(function () {
|
||
let unhide_button = document.getElementById('f_unhide_1');
|
||
if (unhide_button != null) {
|
||
unhide_button.onclick = changeVisibility;
|
||
}
|
||
})();
|
||
|
||
</script>
|