diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index 195841b..227adf4 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -2,11 +2,15 @@ {{* Sortir une immobilisation du bilan - @param immo_line_id : id de la ligne d'immobilisation @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, @@ -17,30 +21,17 @@ 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 = $_GET.immo_line_id|intval + :line_id = $info_immo.line assign="ligne_immo" }} {{else}} {{:error message="Immobilisation non trouvée"}} {{/select}} -{{:assign date_debut=$ligne_immo.date_achat}} -{{:assign ts_mes=$ligne_immo.date_achat|strtotime}} - -{{* TODO : traiter le cas des immos sans doc *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} - {{:assign ts_mes=$date_mes|strtotime}} - {{if $date_mes != null}} - {{:assign date_debut=$date_mes}} - {{/if}} - {{:assign duree_amort=$duration}} - {{if $amount != null}} - {{:assign var="ligne_immo.montant" value=$amount}} - {{/if}} -{{else}} - {{* TODO *}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} +{{: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}} +{{/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 @@ -62,7 +53,10 @@ {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} {{/if}} {{else}} - {{* pas de doc => voir liaison écritures *}} + {{* + TODO : à garder ? + pas de doc => voir liaison écritures + *}} {{#select CASE links.id_related = :immo_trans_id WHEN true THEN links.id_transaction @@ -89,26 +83,17 @@ :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 + trans.date as amort_date 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 total_amort="%d+%d"|math:$total_amort:$amort_line.amort_amount}} + {{: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}} @@ -166,39 +151,12 @@ {{:error message="Vous devez renseigner la date de sortie"}} {{/if}} - {{* vérifier la validité de la date de mise en service *}} - {{if $_POST.date_mes != null}} - {{:assign ts_mes=$_POST.date_mes|parse_date|strtotime}} - {{if $ts_mes < $ligne_immo.date_achat|strtotime || $ts_mes > $first_amort_date|strtotime}} - {{:assign immo_date=$ligne_immo.date_achat|date_short}} - {{:assign amort_date=$first_amort_date|date_short}} - {{:error message="La date de mise en service doit être postérieure à la date d'acquisition de l'immobilisation (%s) et antérieure à la date du premier amortissement (%s)"|args:$immo_date:$amort_date}} - {{/if}} - {{/if}} - - {{* vérifier la validité de la durée d'immobilisation *}} - {{if $valeur_nette > 0}} - {{if $info_immo.duration == null}} - {{if $_POST.duree == null}} - {{:error message="Vous devez renseigner la durée de l'immobilisation"}} - {{elseif $_POST.duree < $amort_number}} - {{:error message="La durée de l'amortissement ne peut être inférieure au nombre d'écritures d'amortissement (%d)"|args:$amort_number}} - {{else}} - {{:assign duree_amort=$_POST.duree}} - {{/if}} - {{/if}} - {{/if}} - {{* vérifier la validité de la date de sortie *}} {{if $info_immo.date_mes != null}} {{if $_POST.date_sortie|parse_date < $info_immo.date_mes}} {{:assign immo_date=$info_immo.date_mes|date_short}} {{:error message="La date de sortie doit être postérieure à la date de mise en service de l'immobilisation (%s)"|args:$immo_date}} {{/if}} - {{elseif $_POST.date_mes != null}} - {{if $_POST.date_sortie|parse_date < $_POST.date_mes|parse_date}} - {{:error message="La date de sortie doit être postérieure à la date de mise en service de l'immobilisation (%s)"|args:$_POST.date_mes}} - {{/if}} {{elseif $_POST.date_sortie|parse_date < $ligne_immo.date_achat}} {{:assign immo_date=$ligne_immo.date_achat|date_short}} {{:error message="La date de sortie doit être postérieure à la date d'acquisition de l'immobilisation (%s)"|args:$immo_date}} @@ -232,17 +190,15 @@ {{else}} {{:assign amort_ok=false}} {{/if}} - {{if ! $amort_ok}} {{:error message="Vous devez d'abord enregistrer les amortissements des exercices précédents"}} {{/if}} {{/if}} - {{:redirect to="compute_exit_data.html?immo_line_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s"|args:$_GET.immo_line_id:$total_amort:$selected_year:$ts_mes:$ts_debut:$ts_exit:$duree_amort}} + {{:redirect to="compute_exit_data.html?immo_doc_id=%s&amort_amount=%s&year=%s&date_debut=%s&exit_date=%s"|args:$_GET.immo_doc_id:$total_amort:$selected_year:$ts_debut:$ts_exit}} {{/form}} {{:admin_header title="Sortie de bilan" custom_css="./style.css" current="module_amortization"}} -{{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="balance_exit"}} {{/if}} @@ -278,16 +234,6 @@ - {{if $info_immo == null && $total_amort == 0 }} -
- Autres informations -
- {{:input type="date" name="date_mes" label="Date de mise en service" help="C'est la date de première utilisation ; à renseigner uniquement si différente de la date d'acquisition"}} - {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 help="La durée est nécessaire pour calculer l'amortissement complémentaire"}} -
-
- {{/if}} -
Informations de sortie
diff --git a/compute_exit_data.html b/compute_exit_data.html index 25231bd..c8c50af 100644 --- a/compute_exit_data.html +++ b/compute_exit_data.html @@ -3,14 +3,18 @@ {{* Calculer les valeurs de la sortie et saisir le montant de la cession (optionnel) paramètres : - - immo_line_id : numéro de ligne de l'écriture d'immobilisation - - amort_amount : montant des amortissements - - year : exercice de la date de sortie de l'immobilisation - - date_mes : datede mise en service de l'immobilisation - - date_debut : date de début de la période d'amortissement complémentaire - - exit_date : date de sortie de l'immobilisation - - duree_amort : durée de l'amortiseement (optionnel) + @param immo_doc_id : id du doc associé à l'immo + @param amort_amount : montant des amortissements + @param year : exercice de la date de sortie de l'immobilisation + @param date_debut : date de début de la période d'amortissement complémentaire + @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}} {{#select line.debit as montant, @@ -22,41 +26,62 @@ 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 = $_GET.immo_line_id|intval + :line_id = $info_immo.line assign="ligne_immo" }} {{else}} - {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_line_id}} + {{:error message="Immobilisation non trouvée"}} {{/select}} {{* 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}} -{{#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 + 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 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:$_GET.duree_amort}} + {{:assign annuite="%f/%f"|math:$ligne_immo.montant:$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}} @@ -69,7 +94,7 @@ {{/if}} {{/if}} - {{:redirect to="write_exit.html?immo_line_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s&cession=%s"|args:$_GET.immo_line_id:$_GET.amort_amount:$_GET.year:$_GET.date_mes:$_GET.date_debut:$_GET.exit_date:$_GET.duree_amort:$_POST.montant_cession}} + {{:redirect to="write_exit.html?immo_doc_id=%s&amort_amount=%s&year=%s&date_debut=%s&exit_date=%s&cession=%s"|args:$_GET.immo_doc_id:$_GET.amort_amount:$_GET.year:$_GET.date_debut:$_GET.exit_date:$_POST.montant_cession}} {{/form}} {{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}} @@ -91,14 +116,12 @@
{{$ligne_immo.montant|money_currency_html:false|raw}}
Date d'acquisition
{{$ligne_immo.date_achat|date_short}}
- {{if $_GET.date_mes != $ligne_immo.date_achat|strtotime}} + {{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}}
Date de mise en service
-
{{$_GET.date_mes|date:"d/m/Y"}}
- {{/if}} - {{if $_GET.duree_amort != null && $_GET.duree_amort != 0}} -
Durée de l'amortissement
-
{{$_GET.duree_amort}} ans
+
{{$info_immo.date_mes|date_short}}
{{/if}} +
Durée de l'amortissement
+
{{$info_immo.duration}} ans
Montant des amortissements
{{$_GET.amort_amount|money_currency_html:false|raw}} (à la date de début de l'exercice)
Valeur nette résiduelle
diff --git a/write_exit.html b/write_exit.html index ac0d459..44cfbda 100644 --- a/write_exit.html +++ b/write_exit.html @@ -3,16 +3,19 @@ {{* Enregistrer les écritures de sortie du bilan paramètres : - - immo_line_id : numéro de ligne de l'écriture d'immobilisation + - immo_doc_id : id du doc associé à l'immobilisation - amort_amount : montant des amortissements - year : exercice de la date de sortie de l'immobilisation - - date_mes : date de mise en service de l'immobilisation - date_debut : date de début de la période d'amortissement complémentaire - exit_date : date de sortie de l'immobilisation - - duree_amort : durée de l'amortiseement (optionnel) - cession : montant de la cession (optionnel) *}} +{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} +{{else}} + {{:error message="Immobilisation non trouvée"}} +{{/load}} + {{#select line.debit as montant, line.id_transaction, @@ -25,43 +28,63 @@ 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 = :immo_line_id; - :immo_line_id = $_GET.immo_line_id|intval + :immo_line_id = $info_immo.line assign="ligne_immo" }} +{{else}} + {{:error message="Immobilisation non trouvée"}} {{/select}} -{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}} -{{/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 *}} {{:assign total_credits=0}} -{{#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 + 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 amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}} {{:assign amort_except=0}} {{* amortissement exceptionnel jqà date fin amortissement *}} {{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:$_GET.duree_amort}} + {{:assign annuite="%f/%f"|math:$ligne_immo.montant:$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}} @@ -164,8 +187,9 @@ lines=$lines linked_transactions=$ligne_immo.id_transaction }} + + {{* liaisons lignes d'amortissement *}} {{#foreach from=$result.lines item="line"}} -{{* TODO : cas où pas de doc ? (info_immo = null) *}} {{if $line.account_code == $amort_account_code}} {{:save key=""|uuid @@ -173,7 +197,6 @@ immo_doc_id=$info_immo.id amort_line_id=$line.id }} - {{:break}} {{/if}} {{/foreach}} {{/if}} @@ -229,6 +252,8 @@ lines=$lines linked_transactions=$ligne_immo.id_transaction }} + + {{* liaison écriture de sortie *}} {{#foreach from=$result.lines item="line"}} {{if $line.account_code == $immo_account_code}} {{:save @@ -273,30 +298,16 @@ }} {{/if}} - {{if $info_immo != null}} - {{* mettre à jour l'état de l'immobilisation *}} - {{:save - key=$info_immo.key - status="archived" - }} - {{else}} - {{:save - key=""|uuid - validate_schema="schema.json" - type="immo" - line=$_GET.immo_line_id|intval - duration=$_GET.duree_amort|intval - date=$_GET.date_mes|date:"Y-m-d" - status="archived" - }} - {{/if}} + {{* mettre à jour l'état de l'immobilisation *}} + {{:save + key=$info_immo.key + status="archived" + }} {{:redirect to="index.html?type_immo=archived"}} {{/form}} {{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}} - -{{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="index" subcurrent="balance_exit"}} {{/if}} @@ -370,14 +381,12 @@
{{$ligne_immo.montant|money_currency_html:false|raw}}
Date d'acquisition
{{$ligne_immo.date_achat|date_short}}
- {{if $_GET.date_mes != $ligne_immo.date_achat|strtotime}} + {{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}}
Date de mise en service
-
{{$_GET.date_mes|date:"d/m/Y"}}
- {{/if}} - {{if $_GET.duree_amort != null}} -
Durée de l'amortissement
-
{{$_GET.duree_amort}} ans
+
{{$info_immo.date_mes|date_short}}
{{/if}} +
Durée de l'amortissement
+
{{$info_immo.duration}} ans
Montant des amortissements
{{$_GET.amort_amount|money_currency_html:false|raw}} (à la date de début de l'exercice)
Valeur nette résiduelle