liaison lignes + possibilité saisir montant
This commit is contained in:
parent
87a1f31bb3
commit
faccd71ef8
1 changed files with 147 additions and 52 deletions
|
|
@ -1,33 +1,93 @@
|
||||||
{{* -*- brindille -*- *}}
|
{{* -*- brindille -*- *}}
|
||||||
|
|
||||||
{{*
|
{{*
|
||||||
Enregistrer la liaison entre une écriture d'amortissement et
|
Enregistrer la liaison entre une ligne d'écriture d'amortissement
|
||||||
l'écriture d'immobilisation correspondante
|
et une ligne d'écriture d'immobilisation
|
||||||
|
@param immo_line_id : numéro de ligne de l'écriture d'immobilisation
|
||||||
|
@param amort_line_id : numéro de ligne de l'écriture d'amortissement
|
||||||
|
@param immo_doc_id : numéro du doc d'immo
|
||||||
*}}
|
*}}
|
||||||
|
|
||||||
{{* chercher l'écriture d'immobilisation *}}
|
{{* chercher l'écriture d'immobilisation *}}
|
||||||
{{#select
|
{{#select
|
||||||
id_transaction
|
line.id_transaction as immo_trans_id,
|
||||||
FROM acc_transactions_lines
|
trans.label as trans_label,
|
||||||
WHERE id = :line_id;
|
line.label as line_label
|
||||||
|
FROM acc_transactions_lines as line
|
||||||
|
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
|
||||||
|
WHERE line.id = :line_id;
|
||||||
:line_id = $_GET.immo_line_id|intval
|
:line_id = $_GET.immo_line_id|intval
|
||||||
|
assign="ligne_immo"
|
||||||
}}
|
}}
|
||||||
{{:assign immo_trans_id=$id_transaction}}
|
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_line_id}}
|
{{:error message="Immobilisation non trouvée"}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
|
|
||||||
|
{{* chercher le doc associé à l'immo *}}
|
||||||
|
{{#load id=$_GET.immo_doc_id|intval}}
|
||||||
|
{{:assign label_immo=$label|or:$ligne_immo.trans_label}}
|
||||||
|
{{else}}
|
||||||
|
{{:error message="Immobilisation non trouvée"}}
|
||||||
|
{{/load}}
|
||||||
|
|
||||||
|
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
|
||||||
|
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{* chercher l'écriture d'amortissement *}}
|
{{* chercher l'écriture d'amortissement *}}
|
||||||
{{#select
|
{{#select
|
||||||
id_transaction
|
line.credit as amount,
|
||||||
FROM acc_transactions_lines
|
line.label as line_label,
|
||||||
WHERE id = :line_id;
|
trans.date as amort_date,
|
||||||
|
trans.label as trans_label,
|
||||||
|
trans.id as trans_id,
|
||||||
|
acc.code as account_code,
|
||||||
|
acc.label as account_label
|
||||||
|
FROM acc_transactions_lines as line
|
||||||
|
INNER JOIN acc_transactions as trans on line.id_transaction = trans.id
|
||||||
|
INNER JOIN acc_accounts as acc on line.id_account = acc.id
|
||||||
|
WHERE line.id = :line_id;
|
||||||
:line_id = $_GET.amort_line_id|intval
|
:line_id = $_GET.amort_line_id|intval
|
||||||
|
assign="amort_line"
|
||||||
}}
|
}}
|
||||||
{{:assign amort_trans_id=$id_transaction}}
|
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_line_id}}
|
{{:error message="Amortissement non trouvé"}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
|
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$amort_line.trans_id}}
|
||||||
|
|
||||||
|
{{* montant de l'écriture d'amortissement déjà affecté *}}
|
||||||
|
{{:assign montant_affecte=0}}
|
||||||
|
{{#load type="amort_link" assign="linked_amort."
|
||||||
|
where="$$.amort_line_id = :amort_line_id"
|
||||||
|
:amort_line_id = $_GET.amort_line_id|intval
|
||||||
|
}}
|
||||||
|
{{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}}
|
||||||
|
{{/load}}
|
||||||
|
{{:assign reste="%d-%d"|math:$amort_line.amount:$montant_affecte}}
|
||||||
|
|
||||||
|
{{* Traiter l'envoi du formulaire *}}
|
||||||
|
{{#form on="save"}}
|
||||||
|
|
||||||
|
{{* vérifier que le montant saisi est inférieur au reste *}}
|
||||||
|
{{if $_POST.montant == null}}
|
||||||
|
{{if $montant_affecte == 0}}
|
||||||
|
{{:assign saved_amount=null}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign saved_amount=$reste}}
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign montant_amort=$_POST.montant|floatval}}
|
||||||
|
{{:assign montant_amort="%f*100"|math:$montant_amort}}
|
||||||
|
{{if $montant_amort > $reste}}
|
||||||
|
{{:assign reste_nb="%f"|math:$reste|money_currency:false}}
|
||||||
|
{{:error message="Le montant de l'amortissement ne peut être supérieur au reste (%s)"|args:$reste_nb}}
|
||||||
|
{{/if}}
|
||||||
|
{{if $montant_amort == $amort_line.amount}}
|
||||||
|
{{:assign saved_amount=null}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign saved_amount=$montant_amort|intval}}
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{* chercher les liaisons de l'écriture d'immobilisation *}}
|
{{* chercher les liaisons de l'écriture d'immobilisation *}}
|
||||||
{{#select
|
{{#select
|
||||||
|
|
@ -37,38 +97,73 @@
|
||||||
END as linked_id
|
END as linked_id
|
||||||
FROM acc_transactions_links as links
|
FROM acc_transactions_links as links
|
||||||
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
|
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
|
||||||
:immo_trans_id = $immo_trans_id
|
:immo_trans_id = $ligne_immo.immo_trans_id
|
||||||
}}
|
}}
|
||||||
{{:assign var="linked_transactions." value=$linked_id}}
|
{{:assign var="linked_transactions." value=$linked_id}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
|
|
||||||
{{* ajouter la nouvelle liaison *}}
|
{{* ajouter la nouvelle liaison *}}
|
||||||
{{:assign var="linked_transactions." value=$amort_trans_id}}
|
{{:assign var="linked_transactions." value=$amort_line.trans_id}}
|
||||||
{{:api
|
{{:api
|
||||||
method="POST"
|
method="POST"
|
||||||
path="accounting/transaction/%s/transactions"|args:$immo_trans_id
|
path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id
|
||||||
assign="result"
|
assign="result"
|
||||||
assign_code="result_code"
|
assign_code="result_code"
|
||||||
transactions=$linked_transactions
|
transactions=$linked_transactions
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}}
|
{{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}}
|
||||||
{{#load type="link"
|
{{* TODO voir si nécessaire ? *}}
|
||||||
where="$$.immo_line_id = :immo_line_id AND
|
{{#load type="amort_link"
|
||||||
$$.amort_trans_id = :amort_trans_id AND
|
where="$$.immo_doc_id = :immo_doc_id AND $$.amort_line_id = :amort_line_id"
|
||||||
$$.amort_line_id = :amort_line_id"
|
:immo_doc_id=$_GET.immo_doc_id|intval
|
||||||
:immo_line_id=$_GET.immo_line_id|intval
|
|
||||||
:amort_trans_id = $amort_trans_id
|
|
||||||
:amort_line_id = $_GET.amort_line_id|intval
|
:amort_line_id = $_GET.amort_line_id|intval
|
||||||
limit=1
|
limit=1
|
||||||
}}
|
}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:save
|
{{:save
|
||||||
key=""|uuid
|
key=""|uuid
|
||||||
type="link"
|
type="amort_link"
|
||||||
immo_line_id=$_GET.immo_line_id|intval
|
immo_doc_id=$_GET.immo_doc_id|intval
|
||||||
amort_line_id=$_GET.amort_line_id|intval
|
amort_line_id=$_GET.amort_line_id|intval
|
||||||
amort_trans_id=$amort_trans_id
|
amount=$saved_amount
|
||||||
}}
|
}}
|
||||||
{{/load}}
|
{{/load}}
|
||||||
{{:redirect force="amortization.html?immo_line_id=%s&ok=1&msg=attach&trans_id=%s"|args:$_GET.immo_line_id:$amort_trans_id}}
|
|
||||||
|
{{:redirect force="amortization.html?immo_line_id=%s&immo_doc_id=%s&ok=1&msg=attach_amort"|args:$_GET.immo_line_id:$_GET.immo_doc_id}}
|
||||||
|
{{/form}}
|
||||||
|
|
||||||
|
{{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}}
|
||||||
|
|
||||||
|
{{* barre de navigation *}}
|
||||||
|
{{if ! $dialog}}
|
||||||
|
{{:include file="_nav.html" current="config" subcurrent="init" subsubcurrent="parameter"}}
|
||||||
|
{{/if}}
|
||||||
|
{{:form_errors}}
|
||||||
|
|
||||||
|
<div class="informations">
|
||||||
|
<dl class="describe">
|
||||||
|
<dt>Immobilisation</dt>
|
||||||
|
<dd>{{$label_immo}}</dd>
|
||||||
|
<dt>Amortissement</dt>
|
||||||
|
<dd><span class="num"><a href="{{$trans_url}}">#{{$amort_line.trans_id}}</a></span> {{$label_immo}}</dd>
|
||||||
|
<dt>Montant de l'écriture d'amortissement</dt>
|
||||||
|
<dd>{{$amort_line.amount|money_currency_html:false|raw}}</dd>
|
||||||
|
<dt>Montant déjà affecté</dt>
|
||||||
|
<dd class="money strong">{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}</dd>
|
||||||
|
<dt>Montant restant à affecter</dt>
|
||||||
|
<dd class="money strong">{{"%f"|math:$reste|money_currency_html:false|raw}}</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form method="post" action="" data-focus="1">
|
||||||
|
<fieldset>
|
||||||
|
<dl>
|
||||||
|
{{:input type="money" name="montant" label="Montant" default=$reste help="Montant de l'amortissement"}}
|
||||||
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
<p class="submit">
|
||||||
|
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue