diff --git a/_archives.html b/_archives.html index da3f19c..be33053 100644 --- a/_archives.html +++ b/_archives.html @@ -93,9 +93,7 @@ {{/select}} {{/load}} - {{* chercher des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo - *}} + {{* 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 diff --git a/_common_detach.html b/_common_detach.html new file mode 100644 index 0000000..b4e80d0 --- /dev/null +++ b/_common_detach.html @@ -0,0 +1,51 @@ +{{* -*- brindille -*- *}} + +{{* + Supprimer l'association entre deux lignes + @param immo_doc_id : id du doc associé à la ligne d'immobilisation + @param line_id : id de la ligne à détacher +*}} +{{* données de l'immobilisation *}} +{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} + +{{* chercher la deuxième écriture *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $line_id|intval +}} + {{:assign trans_id=$id_transaction}} +{{else}} + {{:error message="Écriture non trouvée"}} +{{/select}} + +{{* + chercher les liaisons de l'écriture d'immobilisation + et supprimer la liaison avec la deuxième écriture +*}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as linked_id + FROM acc_transactions_links as links + WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; + :immo_trans_id = $ligne_immo.trans_id + }} + {{if $linked_id != $trans_id}} + {{:assign var="linked_transactions." value=$linked_id}} + {{/if}} +{{/select}} + +{{* Enregistrer les liaisons *}} +{{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id + assign="result" + assign_code="result_code" + transactions=$linked_transactions +}} diff --git a/_get_amort_lines.html b/_get_amort_lines.html new file mode 100644 index 0000000..a985fa2 --- /dev/null +++ b/_get_amort_lines.html @@ -0,0 +1,39 @@ +{{* -*- brindille -*- *}} + +{{* + lister les lignes d'amortissement liées à la ligne d'immobilisation + @param immo_doc_id : id du doc associé à l'immobilisation + @result linked_amort : lignes d'amortissement liées à la ligne d'immobilisation + @result total_amort : montant total des amortissements de l'immobilisation +*}} + +{{:assign total_amort=0}} +{{#load type="amort_link" + where="$$.immo_doc_id = :immo_doc_id" + :immo_doc_id = $immo_doc_id|intval + assign="amort_info" +}} + {{#select + line.id as line_id, + line.credit as amount, + line.label as line_label, + trans.id as trans_id, + trans.label as trans_label, + trans.date as date, + trans.id_year as year, + account.id as account_id, + account.code as account_code, + account.label as account_label + FROM acc_transactions_lines AS line + INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id + INNER join acc_accounts AS account on line.id_account = account.id + WHERE line.id = :amort_line_id + ; + :amort_line_id = $amort_line_id + assign="amort_line" + }} + {{:assign var="amort_line.amount" value=$amort_info.amount|or:$amort_line.amount}} + {{:assign var="linked_amort.%s_%d"|args:$amort_line.date:$amort_info.id value=$amort_line}} + {{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amount}} + {{/select}} +{{/load}} diff --git a/_get_credit_lines.html b/_get_credit_lines.html new file mode 100644 index 0000000..2bef7fb --- /dev/null +++ b/_get_credit_lines.html @@ -0,0 +1,31 @@ +{{* -*- brindille -*- *}} + +{{* + chercher des écritures liées à l'immo paramètre au crédit du même compte + @param immo_doc_id : id du doc associé à l'immobilisation + @param linked_immos : liste des écritures liées + @param total_credits : montant total des écritures +*}} +{{:assign linked_immos=null}} +{{:assign total_credits=0}} +{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$immo_doc_id|intval}} + {{#select + line.credit, + line.id as line_id, + trans.id as trans_id, + trans.label, + trans.date + FROM acc_transactions_lines AS line + INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id + WHERE line.id = :credit_line_id; + :credit_line_id=$credit_line_id + }} + {{:assign credit=$credit}} + {{:assign var="linked_immos." doc=$id trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date}} + {{/select}} + {{if $amount == null}} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} + {{else}} + {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} + {{/if}} +{{/load}} diff --git a/_get_free_amort.html b/_get_free_amort.html new file mode 100644 index 0000000..a3373a4 --- /dev/null +++ b/_get_free_amort.html @@ -0,0 +1,46 @@ +{{* -*- brindille -*- *}} + +{{* + lister les amortissement non rattachés à une immo + @param filter_condition +*}} +{{#select + line.id as line_id, + line.id_transaction as trans_id, + line.credit as amount, + line.label as line_label, + trans.date as trans_date, + trans.label as trans_label, + trans.id_year as year, + account.id as account_id, + account.code as account_code, + account.label as account_label + FROM acc_transactions_lines AS line + INNER JOIN acc_accounts AS account ON account.id = line.id_account + INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction + WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) AND !filter_condition + ORDER BY trans.date, trans.label; + !filter_condition=$filter_condition + assign="amort_line" +}} + {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} + {{:assign amort_amount=0}} + {{:assign keep_amort=true}} + {{#load type="amort_link" + where="$$.amort_line_id = :amort_line_id" + :amort_line_id=$amort_line.line_id|intval + assign="amort_link" + }} + {{if $amort_link.amount == null || $amort_link.amount == 0}} + {{:assign amort_amount=$amort_line.amount}} + {{:assign keep_amort=false}} + {{else}} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} + {{/if}} + {{else}} + {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} + {{/load}} + {{if $keep_amort && $amort_amount < $amort_line.amount}} + {{:assign var="free_amort_lines." value=$amort_line}} + {{/if}} +{{/select}} diff --git a/_get_immo_data.html b/_get_immo_data.html new file mode 100644 index 0000000..513ec0b --- /dev/null +++ b/_get_immo_data.html @@ -0,0 +1,39 @@ +{{* -*- brindille -*- *}} + +{{* + Récupérer les infos d'une immobilisation + @param immo_doc_id : id du document associé à l'immobilisation + @result info_immo : infos du document associé + @result ligne_immo : données de la base + @result message non null si une erreur s'est produite +*}} + +{{#load id=$immo_doc_id|intval assign="info_immo"}} +{{else}} + {{:assign error=true}} + {{:assign message="Immobilisation non trouvée"}} +{{/load}} + +{{if ! $error}} + {{#select + line.id as line_id, + line.debit as amount, + line.label as line_label, + line.id_project as id_project, + trans.id as trans_id, + trans.label as trans_label, + trans.date as date_achat, + account.id as account_id, + account.code as account_code, + account.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 account ON line.id_account = account.id + WHERE line.id = :line_id; + :line_id = $info_immo.line + assign="ligne_immo" + }} + {{else}} + {{:assign message="Immobilisation non trouvée"}} + {{/select}} +{{/if}} diff --git a/_immobilisations.html b/_immobilisations.html index 1546725..e78fbfd 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -77,10 +77,7 @@ {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}} {{/if}} - {{* - chercher des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo - *}} + {{* 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 @@ -102,24 +99,9 @@ {{:continue}} {{/if}} - {{* chercher des lignes des écritures d'amortissement liées à la ligne d'immobilisation *}} - {{:assign amort_lines=null}} - {{:assign amort_amount=0}} - {{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $immo_doc_id - assign="amort_link" - }} - {{if $amount == null}} - {{#select credit FROM acc_transactions_lines WHERE id = :amort_line_id; - :amort_line_id = $amort_line_id - }} - {{:assign amort_amount="%d+%d"|math:$amort_amount:$credit}} - {{/select}} - {{else}} - {{:assign amort_amount="%d+%d"|math:$amort_amount:$amount}} - {{/if}} - {{/load}} + {{* montant des amortissements liés à l'immobilisation *}} + {{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}} + {{:assign amort_amount=$total_amort}} {{* classement par onglet *}} {{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}} diff --git a/_unfinished.html b/_unfinished.html index ab561a9..edbd320 100644 --- a/_unfinished.html +++ b/_unfinished.html @@ -129,7 +129,7 @@ {{* TODO cas où : - il y a (au moins) une écriture d'avoir - - il y a une écriture dui solde l'immo (montant = montant immo - avoir + - il y a une écriture qui solde l'immo (montant = montant immo - avoir *}} {{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}} diff --git a/add_infos.html b/add_infos.html index e06b6bb..382025b 100644 --- a/add_infos.html +++ b/add_infos.html @@ -39,8 +39,11 @@ {{#form on="save"}} + {{if $_POST.classify == null}} + {{:error message="Vous devez faire un choix de classement"}} + {{/if}} - {{if ! $_POST.amortir}} + {{if $_POST.classify == "ignored"}} {{* ne pas amortir *}} {{:assign duration=0}} {{:assign libelle=null}} @@ -48,8 +51,20 @@ {{:assign date_achat=null}} {{:assign date_mes=null}} {{:assign status="ignored"}} + {{elseif $_POST.classify == "archived"}} + {{* immobilisation sortie du bilan *}} + {{:save + key=""|uuid + validate_schema="schema.json" + type="immo" + line=$_GET.immo_line_id|intval + duration=0 + status="archived" + assign_new_id="immo_doc_id" + }} + {{:redirect force="exit_step1.html?immo_doc_id=%s"|args:$immo_doc_id}} {{else}} - + {{* immobilisation amortissable *}} {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} {{:assign da=$ligne_immo.date_achat|date_short}} {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} @@ -152,10 +167,13 @@
#{{$ligne_immo.immo_trans_id}} {{$ligne_immo.trans_label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.trans_label}} — {{$ligne_immo.line_label}}{{/if}}
Montant
{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}
-
Montant déjà affecté
-
{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}
-
Montant restant à affecter
-
{{"%f"|math:$reste|money_currency_html:false|raw}}
Date de l'écriture d'immobilisation
+ {{if $montant_affecte > 0}} +
Montant déjà affecté
+
{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}
+
Montant restant à affecter
+
{{"%f"|math:$reste|money_currency_html:false|raw}}
+ {{/if}} +
Date de l'écriture d'immobilisation
{{$ligne_immo.date_achat|date_short}}
Compte d'immobilisation
{{$ligne_immo.code}} — {{$ligne_immo.account_label}} @@ -164,26 +182,23 @@
- Amortissement -
- {{if $info_immo.status == 'ignored'}} - {{:assign checked=null}} - {{else}} - {{:assign checked="checked"}} - {{/if}} - {{:input id="amortir" type="checkbox" value=1 name="amortir" label="Amortir cette immobilisation sur une ou plusieurs années" checked="%s"|args:$checked help="Dé-cocher pour ne pas amortir"}} -
- {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}} -
+ Classement +
+
(obligatoire)
+ {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" help="Cette immobilisation sera classée parmi les immobilisations amortissables" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" help="Cette immobilisation sera classée parmi les immobilisations sorties du bilan" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="ignored" label="Immobilisation à ignorer" help="Cette écriture n'apparaitra plus dans la liste des immobilisations" default=$choix_defaut}}
-
+ +
- Informations facultatives + Informations
+ {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}} + {{:input type="money" name="montant" label="Montant de l'immobilisation" required=true default=$reste help="à modifier si différent du montant de l'écriture d'immobilisation"}} {{:input type="date" name="date_achat" label="Date d'acquisition" help="à renseigner uniquement si différente de la date de l'écriture d'immobilisation"}} {{:input type="date" name="date_mes" label="Date de mise en service" help="à renseigner uniquement si différente de la date d'acquisition"}} {{:input type="text" name="libelle" label="Libellé" help="à renseigner uniquement si différent du libellé de l'écriture d'immobilisation"}} - {{:input type="money" name="montant" label="Montant de l'immobilisation" required=true default=$reste}}
@@ -198,20 +213,23 @@ diff --git a/amortization.html b/amortization.html index 1af7148..3efc74f 100644 --- a/amortization.html +++ b/amortization.html @@ -7,62 +7,28 @@ *}} {{* données de l'immobilisation *}} -{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} - -{{#select - line.id as immo_line_id, - line.debit as montant, - line.label as line_label, - trans.id as immo_trans_id, - trans.label as label, - trans.date as date_achat, - account.code as account_code, - account.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 account ON line.id_account = account.id - WHERE line.id = :line_id; - :line_id = $info_immo.line - assign="ligne_immo" - }} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign label_immo=$info_immo.label|or:$ligne_immo.label}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{if $info_immo.amount != null}} - {{:assign var="ligne_immo.montant" value=$info_immo.amount}} + {{:assign var="ligne_immo.amount" value=$info_immo.amount}} {{/if}} {{if $info_immo.status == 'ignored'}} {{:error message="Cette immobilisation ne doit pas être amortie"}} {{/if}} -{{* - chercher des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo -*}} -{{:assign total_credits=0}} -{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} - {{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="%d-%d"|math:$ligne_immo.montant:$total_credits}} +{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} +{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}} +{{:assign solde="%d-%d"|math:$ligne_immo.amount:$total_credits}} {{if $info_immo.status == "amortized"}} {{:assign amort_amount=$solde}} @@ -71,71 +37,13 @@ {{:assign valeur_residuelle=$solde}} {{/if}} -{{* lister les lignes des écritures d'amortissement liées à l'immobilisation *}} -{{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $_GET.immo_doc_id|intval -}} - {{#select - line.id as amort_line_id, - line.credit, - line.label as amort_line_label, - trans.id as amort_trans_id, - trans.label as amort_trans_label, - trans.date as amort_date, - trans.id_year as amort_year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - INNER join acc_accounts AS account on line.id_account = account.id - WHERE line.id = :amort_line_id - ; - :amort_line_id = $amort_line_id - assign="amort_line" - }} - {{:assign var="amort_line.amort_amount" value=$amount|or:$credit}} - {{:assign var="linked_amort.%s_%d"|args:$amort_date:$id value=$amort_line}} - {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_line.amort_amount}} - {{/select}} -{{/load}} +{{* lister les amortissements liés à l'immobilisation *}} +{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} +{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} {{if $valeur_residuelle > 0}} - {{* Chercher des amortissements non rattachés à une immo *}} - {{#select - line.id as amort_line_id, - line.id_transaction AS amort_trans_id, - line.credit as amort_amount - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON account.id = line.id_account - INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction - INNER JOIN acc_years AS y ON y.id = trans.id_year - WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) - ORDER BY trans.date, trans.label; - assign="amort" - }} - {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} - {{:assign amort_amount=0}} - {{:assign keep_amort=true}} - {{#load type="amort_link" - where="$$.amort_line_id = :amort_line_id" - :amort_line_id = $amort_line_id - assign="amort_link" - }} - {{if $amort_link.amount == null || $amort_link.amount == 0}} - {{:assign amort_amount=$amort.amort_amount}} - {{:assign keep_amort=false}} - {{else}} - {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} - {{/if}} - {{else}} - {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} - {{/load}} - {{if $keep_amort && $amort_amount < $amort.amort_amount}} - {{:assign var="free_amort_lines." value=$amort}} - {{/if}} - {{/select}} + {{* lister les amortissements non rattachés à une immo *}} + {{:include file="./_get_free_amort.html" filter_condition="1" keep="free_amort_lines"}} {{/if}} {{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} @@ -199,7 +107,7 @@
Immobilisation
-
#{{$ligne_immo.immo_trans_id}} {{$label_immo}}
+
#{{$ligne_immo.trans_id}} {{$label_immo}}
Compte d'immobilisation
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
Début d'amortissement
@@ -209,7 +117,7 @@
{{$info_immo.duration}} ans
{{/if}}
Montant de l'immobilisation
-
{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}
+
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
{{if $total_credits > 0}}
Montant des avoirs
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
@@ -237,9 +145,9 @@ N° Date + Libellé Montant Valeur nette - Libellé N° compte Compte @@ -248,24 +156,24 @@ {{#foreach from=$linked_amort|ksort item="line"}} {{* données de l'écriture *}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} - {{:assign solde="%f-%d"|math:$solde:$line.amort_amount}} + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} + {{:assign solde="%f-%d"|math:$solde:$line.amount}} - #{{$line.amort_trans_id}} - {{$line.amort_date|date_short}} - {{"%f"|math:$line.amort_amount|money_html:false|raw}} - {{"%f"|math:$solde|money_html:false|raw}} + #{{$line.trans_id}} + {{$line.date|date_short}} - {{$line.amort_trans_label}} - {{if $line.amort_line_label != null && $line.amort_line_label != $line.amort_trans_label}} - — {{$line.amort_line_label}} + {{$line.trans_label}} + {{if $line.line_label != null && $line.line_label != $line.trans_label}} + — {{$line.line_label}} {{/if}} + {{"%f"|math:$line.amount|money_html:false|raw}} + {{"%f"|math:$solde|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} - {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.amort_line_id shape="minus"}} + {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}} {{/foreach}} diff --git a/attach_amort.html b/attach_amort.html index 4676ce3..755ff70 100644 --- a/attach_amort.html +++ b/attach_amort.html @@ -8,31 +8,16 @@ *}} {{* données de l'immobilisation *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} - -{{#select - line.id_transaction as immo_trans_id, - line.debit as montant, - trans.label as trans_label, - 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 = $info_immo.line - assign="ligne_immo" -}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} -{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.montant}} +{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} {{* chercher l'écriture d'amortissement *}} {{#select @@ -61,7 +46,7 @@ {{* montant de l'écriture d'amortissement déjà affecté *}} {{:assign montant_affecte=0}} -{{#load type="amort_link" assign="linked_amort." +{{#load type="amort_link" where="$$.amort_line_id = :amort_line_id" :amort_line_id = $_GET.amort_line_id|intval }} @@ -92,49 +77,14 @@ {{/if}} {{/if}} - {{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}} - {{* montant de l'immo *}} - {{:assign total_credits=0}} - {{#load - type="credit_link" - where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $_GET.immo_doc_id|intval - }} - {{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}} + {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} + {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}} {{:assign montant_immo="%d-%d"|math:$montant_immo:$total_credits}} {{* montant des amortissements *}} - {{:assign total_amort=0}} - {{#load - type="amort_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id=$_GET.immo_doc_id|intval - }} - {{if $amount == null || $amount == 0}} - {{#select - line.credit - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - INNER join acc_accounts AS account on line.id_account = account.id - WHERE line.id = :amort_line_id - ; - :amort_line_id = $amort_line_id - }} - {{:assign total_amort="%d+%d"|math:$total_amort:$credit}} - {{/select}} - {{else}} - {{:assign total_amort="%d+%d"|math:$total_amort:$amount}} - {{/if}} - {{/load}} + {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}} + {{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}} {{:assign vnc="%d-%d"|math:$montant_immo:$total_amort}} {{:assign total_amort="%d+%d"|math:$total_amort:$montant_amort}} {{if $total_amort > $montant_immo}} @@ -151,7 +101,7 @@ END as linked_id FROM acc_transactions_links as links WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; - :immo_trans_id = $ligne_immo.immo_trans_id + :immo_trans_id = $ligne_immo.trans_id }} {{:assign var="linked_transactions." value=$linked_id}} {{/select}} @@ -160,7 +110,7 @@ {{:assign var="linked_transactions." value=$amort_line.trans_id}} {{:api method="POST" - path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id + path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id assign="result" assign_code="result_code" transactions=$linked_transactions @@ -193,7 +143,11 @@ }} {{/if}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id:$status}} +{{if $_GET.from == "exit"}} + {{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} +{{else}} + {{:redirect to="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id:$status}} +{{/if}} {{/form}} {{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}} diff --git a/attach_immo.html b/attach_credit.html similarity index 67% rename from attach_immo.html rename to attach_credit.html index a824041..7cd7b16 100644 --- a/attach_immo.html +++ b/attach_credit.html @@ -1,41 +1,30 @@ {{* -*- brindille -*- *}} -{{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* Enregistrer la liaison entre une ligne d'immobilisation et une ligne d'écriture au crédit du compte de l'immobilisation - @param credit_line_id : ligne d'écriture au crédit du compte de l'immobilisation @param immo_doc_id : numéro du doc d'immo + @param credit_line_id : ligne d'écriture au crédit du compte de l'immobilisation *}} -{{* chercher l'écriture d'immobilisation *}} -{{#load id=$_GET.immo_doc_id|intval assign="doc_immo"}} -{{else}} - {{:error message="Immobilisation non gérée ; vous devez d'abord renseigner ses informations"}} -{{/load}} -{{#select - line.id as immo_line_id, - line.id_transaction as immo_trans_id, - line.label as line_label, - trans.label as trans_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 = $doc_immo.line - assign="ligne_immo" -}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} +{{* données de l'immobilisation *}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} -{{:assign label_immo=$doc_immo.label|or:$ligne_immo.trans_label}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} +{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} +{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}} +{{:assign solde_immo="%d-%d"|math:$ligne_immo.amount:$total_credits}} + {{* chercher l'écriture au crédit du compte d'immobilisation *}} {{#select - line.id_transaction as credit_trans_id, + line.id_transaction as trans_id, line.credit as amount, trans.label as trans_label, line.label as line_label @@ -46,13 +35,13 @@ assign="credit_line" }} {{else}} - {{:error message="Impossible de trouver l'écriture au crédit du compte de l'immobilisation de la ligne « %s »"|args:$ligne_immo.trans_label}} + {{:error message="Écriture au crédit non trouvée"}} {{/select}} -{{:assign credit_trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$credit_line.credit_trans_id}} +{{:assign credit_trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$credit_line.trans_id}} {{* montant de l'écriture de crédit déjà affecté *}} {{:assign montant_affecte=0}} -{{#load type="credit_link" assign="linked_immo." +{{#load type="credit_link" where="$$.credit_line_id = :credit_line_id" :credit_line_id = $_GET.credit_line_id|intval }} @@ -62,15 +51,23 @@ {{* 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_credit=null}} + {{:assign montant_credit=$credit_line.amount}} {{else}} {{:assign saved_credit=$reste}} + {{:assign montant_credit=$reste}} {{/if}} {{else}} {{:assign montant_credit=$_POST.montant|money_int}} + {{* vérifier que le montant saisi est inférieur au solde de l'écriture d'immobilisation *}} + {{if $montant_credit > $solde_immo}} + {{:assign solde_nb="%f"|math:$solde_immo|money_currency:false}} + {{:error message="Le montant de l'avoir ne peut être supérieur au montant de l'immobilisation (%s)"|args:$solde_nb}} + {{/if}} + {{* vérifier que le montant saisi est inférieur au reste de l'écriture de crédit *}} {{if $montant_credit > $reste}} {{:assign reste_nb="%f"|math:$reste|money_currency:false}} {{:error message="Le montant de l'avoir ne peut être supérieur au reste (%s)"|args:$reste_nb}} @@ -90,18 +87,18 @@ END as linked_id FROM acc_transactions_links as links WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; - :immo_trans_id = $ligne_immo.immo_trans_id + :immo_trans_id = $ligne_immo.trans_id }} {{:assign var="linked_transactions." value=$linked_id}} {{/select}} {{* ajouter la nouvelle liaison *}} -{{:assign var="linked_transactions." value=$credit_line.credit_trans_id}} +{{:assign var="linked_transactions." value=$credit_line.trans_id}} {{* Enregistrer les liaisons *}} {{:api method="POST" - path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id + path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id assign="result" assign_code="result_code" transactions=$linked_transactions @@ -120,9 +117,22 @@ amount=$saved_credit }} -{{:redirect force="details_immo.html?immo_doc_id=%s&ok=1&msg=attach_immo"|args:$_GET.immo_doc_id}} +{{if $montant_credit == $solde_immo}} + {{:save + id=$_GET.immo_doc_id + status="archived" + }} +{{/if}} + +{{if $_GET.from == "exit"}} + {{:redirect force="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} +{{else}} + {{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} +{{/if}} +{{*:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=attach_credit"|args:$_GET.immo_doc_id*}} {{/form}} +{{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} {{:include file="_nav.html" @@ -139,7 +149,7 @@
Immobilisation
{{$label_immo}}
Écriture au crédit du compte d'immobilisation
-
#{{$credit_line.credit_trans_id}} {{$credit_line.trans_label}}{{if $credit_line.line_label != null && $credit_line.line_label != $credit_line.trans_label}} — {{$credit_line.line_label}}{{/if}}
+
#{{$credit_line.trans_id}} {{$credit_line.trans_label}}{{if $credit_line.line_label != null && $credit_line.line_label != $credit_line.trans_label}} — {{$credit_line.line_label}}{{/if}}
Montant de l'écriture
{{$credit_line.amount|money_currency_html:false|raw}}
Montant déjà affecté
diff --git a/attach_exit.html b/attach_exit.html new file mode 100644 index 0000000..11bc17c --- /dev/null +++ b/attach_exit.html @@ -0,0 +1,61 @@ +{{* -*- brindille -*- *}} + +{{* + Enregistrer la liaison entre une écriture d'immobilisation et + une écriture de sortie d'immobilisation + @param immo_doc_id : id du document associé à l'immobilisation + @param exit_line_id : ligne de l'écriture de sortie d'immobilisation +*}} + +{{* données de l'immobilisation *}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} + +{{* chercher l'écriture de sortie d'immobilisation *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.exit_line_id|intval +}} + {{:assign rebut_id=$id_transaction}} +{{else}} + {{:error message="Impossible de trouver l'écriture de sortie d'immobilisation"}} +{{/select}} + +{{* chercher les liaisons de l'écriture d'immobilisation *}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as linked_id + FROM acc_transactions_links as links + WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; + :immo_trans_id = $ligne_immo.trans_id +}} + {{:assign var="linked_transactions." value=$linked_id}} +{{/select}} + +{{* ajouter la nouvelle liaison *}} +{{:assign var="linked_transactions." value=$rebut_id}} + +{{* Enregistrer les liaisons *}} +{{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id + assign="result" + assign_code="result_code" + transactions=$linked_transactions +}} + +{{* enregistrer la liaison de l'écriture de sortie *}} +{{:save + key=""|uuid + type="exit_link" + immo_doc_id=$info_immo.id + exit_line_id=$_GET.exit_line_id|intval +}} + +{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}} diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index 227adf4..2b4cf6b 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -5,114 +5,49 @@ @param immo_doc_id : id du doc associé à l'immo *}} -{{* Infos de l'immobilisation *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} - -{{#select - line.debit as montant, - trans.id AS trans_id, - trans.date as date_achat, - trans.label, - account.code as account_code - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS account ON line.id_account = account.id - WHERE line.id = :line_id; - :line_id = $info_immo.line - assign="ligne_immo" -}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} - -{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.montant" value=$info_immo.amount}} +{{* données de l'immobilisation *}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} {{/if}} -{{* chercher des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo -*}} -{{:assign total_credits=0}} -{{#load - type="credit_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $info_immo.id - assign="credit_link" -}} - {{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}} -{{else}} - {{* - TODO : à garder ? - pas de doc => voir liaison écritures - *}} - {{#select - CASE links.id_related = :immo_trans_id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as other_id, - line.credit - FROM acc_transactions AS trans - INNER JOIN acc_transactions_links as links - ON (trans.id = links.id_transaction OR trans.id = links.id_related) - INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; - :immo_trans_id=$ligne_immo.trans_id - :account=$ligne_immo.account_code - }} - {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} - {{/select}} -{{/load}} -{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} + {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} +{{/if}} -{{:assign total_amort=0}} -{{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $_GET.immo_doc_id|intval -}} - {{#select - line.credit, - trans.date as amort_date - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE line.id = :amort_line_id - ; - :amort_line_id = $amort_line_id - assign="amort_line" - }} - {{:assign amort_amount=$amount|or:$credit}} - {{:assign total_amort="%d+%d"|math:$total_amort:$amort_amount}} - {{:assign var="linked_amort.%s_%d"|args:$amort_date:$id value=$amort_line}} - {{/select}} -{{/load}} +{{:assign date_achat=$info_immo.date_achat|or:$ligne_immo.date_achat}} +{{if $info_immo.date_mes != null && $info_immo.date_mes != $date_achat}} + {{:assign date_mes=$info_immo.date_mes}} +{{/if}} +{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} + +{{if $info_immo.amount != null}} + {{:assign var="ligne_immo.amount" value=$info_immo.amount}} +{{/if}} + +{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} +{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}} +{{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}} + +{{* lister les amortissements liés à l'immobilisation *}} +{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} {{:assign amort_number=$linked_amort|count}} {{#foreach from=$linked_amort|ksort item="line"}} {{if $first_amort_date == null}} - {{:assign first_amort_date=$line.amort_date}} + {{:assign first_amort_date=$line.date}} {{/if}} {{if $last_amort_date == null}} - {{:assign last_amort_date=$line.amort_date}} - {{elseif $line.amort_date > $last_amort_date}} - {{:assign last_amort_date=$line.amort_date}} + {{:assign last_amort_date=$line.date}} + {{elseif $line.date > $last_amort_date}} + {{:assign last_amort_date=$line.date}} {{/if}} {{/foreach}} {{if $total_amort == 0}} {{if $info_immo.status == "amortized"}} - {{:assign total_amort=$ligne_immo.montant}} + {{:assign total_amort=$ligne_immo.amount}} {{/if}} {{else}} {{:assign date_debut=$last_amort_date}} @@ -120,7 +55,7 @@ {{:assign ts_debut=$date_debut|strtotime}} {{:assign ts_debut="%d+(60*60*24)"|math:$ts_debut}} {{:assign date_debut=$ts_debut|date:"Y-m-d"}} -{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$total_amort}} +{{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$total_amort}} {{* lister les exercices ouverts dont la date de fin est postérieure à la date du dernier amortissment @@ -205,19 +140,19 @@ {{:form_errors}} {{* formulaire de sortie du bilan *}} -

Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan

+

Sortir l'immobilisation « {{$label_immo}} » du bilan

Données de l'imobilisation
Montant
-
{{$ligne_immo.montant|money_currency_html:false|raw}}
+
{{$ligne_immo.amount|money_currency_html:false|raw}}
Date d'acquisition
-
{{$info_immo.date_achat|or:$ligne_immo.date_achat|date_short}}
- {{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}} +
{{$date_achat|date_short}} + {{if $date_mes != null}}
Date de mise en service
-
{{$info_immo.date_mes|date_short}}
+
{{$date_mes|date_short}}
{{/if}} {{if $info_immo.duration != null}}
Durée de l'amortissement
diff --git a/compute_exit_data.html b/compute_exit_data.html index c8c50af..7caf90b 100644 --- a/compute_exit_data.html +++ b/compute_exit_data.html @@ -10,78 +10,35 @@ @param exit_date : date de sortie de l'immobilisation *}} {{* TODO *}} -{{* Infos de l'immobilisation *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} +{{* données de l'immobilisation *}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} -{{#select - line.debit as montant, - trans.id AS trans_id, - trans.date as date_achat, - trans.label, - account.code as account_code - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS account ON line.id_account = account.id - WHERE line.id = :line_id; - :line_id = $info_immo.line - assign="ligne_immo" -}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} +{{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 des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo -*}} -{{:assign total_credits=0}} -{{#load - type="credit_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $info_immo.id - assign="credit_link" -}} - {{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}} -{{else}} - {{* - TODO : à garder ? - pas de doc => voir liaison écritures - *}} - {{#select - CASE links.id_related = :immo_trans_id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as other_id, - line.credit - FROM acc_transactions AS trans - INNER JOIN acc_transactions_links as links - ON (trans.id = links.id_transaction OR trans.id = links.id_related) - INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; - :immo_trans_id=$ligne_immo.trans_id - :account=$ligne_immo.account_code - }} - {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} - {{/select}} -{{/load}} -{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} -{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount}} +{{:assign date_achat=$info_immo.date_achat|or:$ligne_immo.date_achat}} +{{if $info_immo.date_mes != null && $info_immo.date_mes != $date_achat}} + {{:assign date_mes=$info_immo.date_mes}} +{{/if}} + +{{if $info_immo.amount != null}} + {{:assign var="ligne_immo.amount" value=$info_immo.amount}} +{{/if}} + +{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} +{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}} +{{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}} +{{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount}} {{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}} {{if $valeur_nette > 0}} {{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}} - {{:assign annuite="%f/%f"|math:$ligne_immo.montant:$info_immo.duration}} + {{:assign annuite="%f/%f"|math:$ligne_immo.amount:$info_immo.duration}} {{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}} {{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}} {{/if}} @@ -106,19 +63,19 @@ {{:form_errors}} -

Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan

+

Sortir l'immobilisation « {{$label_immo}} » du bilan

Données de l'imobilisation
Montant
-
{{$ligne_immo.montant|money_currency_html:false|raw}}
+
{{$ligne_immo.amount|money_currency_html:false|raw}}
Date d'acquisition
-
{{$ligne_immo.date_achat|date_short}}
- {{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}} +
{{$date_achat|date_short}}
+ {{if $date_mes != null}}
Date de mise en service
-
{{$info_immo.date_mes|date_short}}
+
{{$date_mes|date_short}}
{{/if}}
Durée de l'amortissement
{{$info_immo.duration}} ans
diff --git a/delete_infos.html b/delete_infos.html index 5e5d2a0..6ec1875 100644 --- a/delete_infos.html +++ b/delete_infos.html @@ -5,30 +5,12 @@ @param immo_doc_id *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} -{{#select - trans.id as immo_trans_id, - trans.label as trans_label, - trans.date as date_achat, - line.debit as montant, - line.label as line_label, - acc.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 = $info_immo.line - assign="ligne_immo" - }} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} {{:assign immo_label=$immo_label|cat::" — "|cat:$ligne_immo.line_label}} @@ -49,7 +31,6 @@ {{:assign var="linked_trans." value=$id}} {{/select}} - {{:debug linked_trans=$linked_trans}} {{if $linked_trans != null}} {{* chercher et supprimer les écritures liées *}} {{#select @@ -62,7 +43,7 @@ ON (links.id_transaction = trans.id OR links.id_related = trans.id) WHERE trans.id = :immo_trans_id ; - :immo_trans_id=$ligne_immo.immo_trans_id + :immo_trans_id=$ligne_immo.trans_id }} {{if ! $linked_trans|has:$linked_id}} {{:assign var="linked_transactions." value=$linked_id}} @@ -72,7 +53,7 @@ {{* enregistrer les liaisons restantes *}} {{:api method="POST" - path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id + path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id assign="result" assign_code="result_code" transactions=$linked_transactions @@ -92,8 +73,8 @@ {{:admin_header title="Supprimer" current="module_amortization"}} {{:form_errors}} {{:delete_form - legend="Immobilisation « #%s %s »"|args:$ligne_immo.immo_trans_id:$immo_label - warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_immo.immo_trans_id:$immo_label + legend="Immobilisation « #%s %s »"|args:$ligne_immo.trans_id:$immo_label + warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_immo.trans_id:$immo_label info="L'écriture d'immobilisation ne sera pas supprimée ; les nouveaux paramètres pourront être saisis depuis l'onglet « À classer »" }} diff --git a/detach_amort.html b/detach_amort.html index e2b7b85..14be3bc 100644 --- a/detach_amort.html +++ b/detach_amort.html @@ -7,62 +7,7 @@ @param amort_line_id : id de la ligne d'amortissement *}} -{{* données de l'immobilisation *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} - -{{* écriture d'immobilisation *}} -{{#select - id_transaction - FROM acc_transactions_lines - WHERE id = :line_id; - :line_id = $info_immo.line -}} - {{:assign immo_trans_id=$id_transaction}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} - -{{* écriture d'amortissement *}} -{{#select - id_transaction - FROM acc_transactions_lines - WHERE id = :line_id; - :line_id = $_GET.amort_line_id|intval -}} - {{:assign amort_id=$id_transaction}} -{{else}} - {{:error message="Amortissement non trouvé"}} -{{/select}} - -{{* - chercher les liaisons de l'écriture d'immobilisation - et supprimer la liaison avec l'écriture d'amortissement -*}} -{{#select - CASE links.id_related = :immo_trans_id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; - :immo_trans_id = $immo_trans_id - }} - {{if $linked_id != $amort_id}} - {{:assign var="linked_transactions." value=$linked_id}} - {{/if}} -{{/select}} - -{{* Enregistrer les liaisons *}} -{{:api - method="POST" - path="accounting/transaction/%s/transactions"|args:$immo_trans_id - assign="result" - assign_code="result_code" - transactions=$linked_transactions -}} +{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.amort_line_id}} {{* supprimer le doc de liaison entre les lignes *}} {{#load type="amort_link" @@ -74,9 +19,14 @@ {{/load}} {{* marquer immo non soldée *}} +{{* TODO : À VÉRIFIER *}} {{:save key=$info_immo.key status="managed" }} -{{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=detach"|args:$_GET.immo_doc_id:}} +{{if $_GET.from == "exit"}} + {{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} +{{else}} + {{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id:}} +{{/if}} diff --git a/detach_credit.html b/detach_credit.html new file mode 100644 index 0000000..fb13fcc --- /dev/null +++ b/detach_credit.html @@ -0,0 +1,32 @@ +{{* -*- brindille -*- *}} + +{{* + Supprimer l'association entre une écriture d'immobilisation et + une écriture au crédit du compte d'immobilisation + @param immo_doc_id : id du doc associé à l'immo + @param credit_line_id : id de la ligne de crédit +*}} + +{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.credit_line_id}} + +{{* supprimer le doc de liaison entre les lignes *}} +{{#load type="credit_link" + where="$$.immo_doc_id = :immo_doc_id AND $$.credit_line_id = :credit_line_id" + :immo_doc_id=$_GET.immo_doc_id|intval + :credit_line_id = $_GET.credit_line_id|intval +}} + {{:delete id=$id}} +{{/load}} + +{{* TODO : À VÉRIFIER *}} +{{:save + id=$_GET.immo_doc_id|intval + status="managed" +}} + +{{if $_GET.from == "exit"}} + {{:redirect to="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} +{{else}} + {{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=detach_avoir&"|args:$_GET.immo_doc_id}} +{{/if}} +{{*:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=detach&"|args:$_GET.immo_doc_id*}} diff --git a/detach_exit.html b/detach_exit.html new file mode 100644 index 0000000..486fc7c --- /dev/null +++ b/detach_exit.html @@ -0,0 +1,21 @@ +{{* -*- brindille -*- *}} + +{{* + Supprimer l'association entre une écriture d'immobilisation et + une écriture de sortie de bilan + @param immo_doc_id : id du doc associé à l'immo + @param exit_line_id : id de la ligne de sortie de bilan +*}} + +{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.exit_line_id}} + +{{* supprimer le doc de liaison entre les lignes *}} +{{#load type="exit_link" + where="$$.immo_doc_id = :immo_doc_id AND $$.exit_line_id = :exit_line_id" + :immo_doc_id=$_GET.immo_doc_id|intval + :exit_line_id = $_GET.exit_line_id|intval +}} + {{:delete id=$id}} +{{/load}} + +{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=detach_exit"|args:$_GET.immo_doc_id}} diff --git a/detach_immo.html b/detach_immo.html deleted file mode 100644 index 7a67513..0000000 --- a/detach_immo.html +++ /dev/null @@ -1,75 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Supprimer l'association entre une écriture d'immobilisation et - une écriture au crédit du compte d'immobilisation - @param immo_doc_id : id du doc associé à l'immo - @param credit_line_id : id de la ligne de crédit -*}} - -{{* données de l'immobilisation *}} -{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} - -{{#select - id_transaction - FROM acc_transactions_lines - WHERE id = :line_id; - :line_id = $info_immo.line -}} - {{:assign immo_trans_id=$id_transaction}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} - -{{* chercher l'écriture au crédit *}} -{{#select - id_transaction - FROM acc_transactions_lines - WHERE id = :line_id; - :line_id = $_GET.credit_line_id|intval -}} - {{:assign credit_id=$id_transaction}} -{{else}} - {{:error message="Écriture au crédit non trouvée"}} -{{/select}} - -{{* - chercher les liaisons de l'écriture d'immobilisation - et supprimer la liaison avec l'écriture au crédit -*}} -{{#select - CASE links.id_related = :immo_trans_id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; - :immo_trans_id = $immo_trans_id - }} - {{if $linked_id != $credit_id}} - {{:assign var="linked_transactions." value=$linked_id}} - {{/if}} -{{/select}} - -{{* Enregistrer les liaisons *}} -{{:api - method="POST" - path="accounting/transaction/%s/transactions"|args:$immo_trans_id - assign="result" - assign_code="result_code" - transactions=$linked_transactions -}} - -{{* supprimer le doc de liaison entre les lignes *}} -{{#load type="credit_link" - where="$$.immo_doc_id = :immo_doc_id AND $$.credit_line_id = :credit_line_id" - :immo_doc_id=$_GET.immo_doc_id|intval - :credit_line_id = $_GET.credit_line_id|intval -}} - {{:delete id=$id}} -{{/load}} - -{{:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=detach&"|args:$_GET.immo_doc_id}} diff --git a/details_immo.html b/details_immo.html index 4d060dc..0896717 100644 --- a/details_immo.html +++ b/details_immo.html @@ -9,84 +9,25 @@ *}} {{* données de l'immobilisation *}} -{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} +{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{if $message != null}} + {{:error message=$message}} +{{/if}} -{{#select - trans.id as immo_trans_id, - trans.label as label, - trans.date as date_achat, - line.id as immo_line_id, - line.debit as montant, - line.label as line_label, - account.code as account_code, - account.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 account ON line.id_account = account.id - WHERE line.id = :line_id; - :line_id = $info_immo.line - assign="ligne_immo" - }} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} - -{{:assign var="info_immo.amount" value=$info_immo.amount|or:$ligne_immo.montant}} +{{:assign var="info_immo.amount" value=$info_immo.amount|or:$ligne_immo.amount}} {{:assign var="info_immo.date_achat" value=$info_immo.date_achat|or:$ligne_immo.date_achat}} {{:assign var="info_immo.date_mes" value=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign var="info_immo.label" value=$info_immo.label|or:$ligne_immo.label}} +{{:assign var="info_immo.label" value=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $info_immo.label}} {{:assign var="info_immo.label" value=$info_immo.label|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} -{{* - chercher des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo -*}} -{{:assign linked_immos=null}} -{{:assign total_credits=0}} -{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} - {{#select - line.credit, - line.id as line_id, - trans.id as trans_id, - trans.label, - trans.date - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE line.id = :credit_line_id; - :credit_line_id=$credit_line_id - }} - {{:assign credit=$credit}} - {{:assign var="linked_immos." trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date}} - {{/select}} - {{if $amount == null}} - {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} - {{else}} - {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} - {{/if}} -{{/load}} +{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} +{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}} {{:assign solde="%d-%d"|math:$info_immo.amount:$total_credits}} -{{:assign total_amort=0}} -{{* lister les docs d'amortissement liées à la ligne d'immobilisation *}} -{{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id=$_GET.immo_doc_id|intval -}} - {{if $amount != null}} - {{:assign total_amort="%d+%d"|math:$total_amort:$amount}} - {{else}} - {{#select credit FROM acc_transactions_lines WHERE id = :amort_line_id; - :amort_line_id=$amort_line_id - }} - {{:assign total_amort="%d+%d"|math:$total_amort:$credit}} - {{/select}} - {{/if}} -{{/load}} +{{* lister les amortissements liés à l'immobilisation *}} +{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}} {{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} @@ -102,7 +43,7 @@ {{:include file="_nav.html" current="index" subcurrent="details" subsubcurrent=$subsubcurrent}} {{/if}} *}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}