diff --git a/_nav.html b/_nav.html index 58c4008..bb819d1 100644 --- a/_nav.html +++ b/_nav.html @@ -12,18 +12,22 @@
  • Aide
  • - {{if $current == 'index'}} + {{if $current == 'index' && $subsubcurrent != 'balance_exit'}} + {{/if}} - {{if $subsubcurrent == 'amortization'}} + {{if $subsubcurrent == 'amortization'}} + + {{elseif $subsubcurrent == 'balance_exit'}} - {{/if}} +
  • Sortie du bilan
  • + {{/if}} diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index 7a72861..9f9de48 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -2,246 +2,219 @@ {{* Sortir une immobilisation du bilan - @param : - - immo_id : numéro de ligne de l'immo + @param immo_id : id de la ligne d'immobilisation *}} -{{* récupérer les infos de l'immobilisation *}} +{{* Infos de l'immobilisation *}} {{#select - line.id as line_id, line.debit as montant, - line.id_project as project_id, - trans.id as trans_id, - trans.date as trans_date, - trans.label as trans_label, - acc.id as account_id, - y.id as year_id + trans.date as date_achat, + trans.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 - INNER JOIN acc_years AS y ON trans.id_year = y.id WHERE line.id = :line_id; :line_id = $_GET.immo_id|intval - assign=ligne_immo + assign="ligne_immo" }} {{else}} {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}} {{/select}} +{{:assign date_debut=$ligne_immo.date_achat}} +{{:assign ts_mes=$ligne_immo.date_achat|strtotime}} + {{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} + {{:assign ts_mes=$date|strtotime}} + {{:assign date_debut=$date}} + {{:assign duree_amort=$duration}} {{/load}} -{{* voir s'il existe des écritures d'amortissement associées *}} +{{* chercher des écritures d'amortissement liées à l'immobilisation *}} {{#select - sum(l_amort.credit) as amort_amount, + SUM(l_amort.credit) as amort_amount, CASE - WHEN links.id_related = t_immo.id THEN links.id_transaction + WHEN links.id_related = t_immo.id + THEN links.id_transaction ELSE links.id_related - END as amort_trans_id + END as amort_trans_id, + MAX(trans.date) as last_amort_date, + MIN(trans.date) as first_amort_date, + COUNT(trans.id) as amort_number FROM acc_transactions_lines as l_immo INNER JOIN acc_transactions as t_immo on t_immo.id = l_immo.id_transaction INNER JOIN acc_transactions_links as links - ON ( - t_immo.id = links.id_transaction + ON (t_immo.id = links.id_transaction OR - t_immo.id = links.id_related - ) + t_immo.id = links.id_related) INNER JOIN acc_transactions_lines as l_amort on amort_trans_id = l_amort.id_transaction + INNER join acc_transactions as trans on l_amort.id_transaction = trans.id INNER JOIN acc_accounts AS account ON l_amort.id_account = account.id - WHERE - l_immo.id = :line_id - AND - l_amort.credit <> 0 - AND - account.code LIKE '28%'; + WHERE l_immo.id = :line_id AND account.code LIKE '28%' + LIMIT 1; :line_id = $_GET.immo_id|intval + assign=amort_line }} - {{if $amort_amount == null}} - {{:assign amort_amount=0}} - {{else}} - {{:assign amort_amount=$amort_amount}} - {{/if}} {{/select}} + +{{if $amort_line.amort_number == 0}} + {{:assign amort_amount=0}} +{{else}} + {{:assign amort_amount=$amort_line.amort_amount}} + {{:assign date_debut=$amort_line.last_amort_date|strtotime}} + {{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}} +{{/if}} +{{:assign ts_debut=$date_debut|strtotime}} {{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$amort_amount}} +{{* + lister les exercices qui englobent la date de début du prochain amortissement +*}} +{{:assign default_exit_date=""}} +{{#years closed=false order="start_date" where="start_date <= :debut AND :debut <= end_date" + :debut=$date_debut assign=years.}} + {{if $start_date|strtotime <= $now && $now <= $end_date|strtotime}} + {{:assign default_exit_date=$now|date_short}} + {{/if}} + {{:assign ts_fin=$end_date|strtotime}} + {{:assign debut=$start_date|date_short}} + {{:assign fin=$end_date|date_short}} + {{:assign var="open_years.%d"|args:$id value=$label|cat:" (du "|cat:$debut|cat:" au "|cat:$fin|cat:")"}} + {{:assign var="years_data.%d"|args:$id value=$ts_debut|cat:" "|cat:$ts_fin}} +{{else}} + {{:error message="Aucun exercice ouvert pour enregistrer un amortissement"}} +{{/years}} +{{if $years|count == 1}} + {{:assign default_year=$years.0.id}} +{{else}} + {{:assign default_year=""}} +{{/if}} + {{* Traiter l'envoi du formulaire *}} {{#form on="proceed"}} - {{* - vérifier que la date de sortie est située après la date de mise en - service ou à défaut de la date d'acquisition de l'immobilisation - *}} - {{if $info_immo.date != null}} - {{if $_POST.date_sortie|parse_date < $info_immo.date}} - {{:assign immo_date=$info_immo.date|date_short}} - {{:error message="La date choisie doit être postérieure à la date de mise en service de l'immobilisation (%s)"|args:$immo_date}} - {{/if}} - {{else}} - {{if $_POST.date_sortie|parse_date < $ligne_immo.trans_date}} - {{:assign immo_date=$ligne_immo.trans_date|date_short}} - {{:error message="La date choisie doit être postérieure à la date d'acquisition de l'immobilisation (%s)"|args:$immo_date}} + {{if $_POST.date_sortie == null}} + {{: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 > $amort_line.first_amort_date|strtotime}} + {{:assign immo_date=$ligne_immo.date_achat|date_short}} + {{:assign amort_date=$amort_line.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 que la date est située dans un exercice ouvert *}} - {{:include - file="_check_date.html" - date=$_POST.date_sortie - keep="open_years, selected_year, selected_chart" - }} - {{if $selected_year == null}} - {{:assign msg_years=""}} - {{#foreach from=$open_years}} - {{:assign debut=$start_date|date_short}} - {{:assign fin=$end_date|date_short}} - {{:assign msg_years=$msg_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "|cat:$debut|cat:" à "|cat:$fin}} - {{/foreach}} - {{:error message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$msg_years}} - {{/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'amortissement"}} + {{:error message="Vous devez renseigner la durée de l'immobilisation"}} + {{elseif $_POST.duree < $amort_line.amort_number}} + {{:error message="La durée de l'amortissement ne peut être inférieure au nombre d'écritures d'amortissement (%d)"|args:$amort_line.amort_number}} {{else}} - {{:assign var=info_immo.duration value=$_POST.duree}} + {{:assign duree_amort=$_POST.duree}} {{/if}} {{/if}} {{/if}} - {{* Cession de l'immobilisation - {{if $_POST.cession}} - {{if $_POST.montant_cession == ""}} - {{:error message="Le montant de la cession doit être renseigné"}} + {{* vérifier la validité de la date de sortie *}} + {{if $info_immo.date != null}} + {{if $_POST.date_sortie|parse_date < $info_immo.date}} + {{:assign immo_date=$info_immo.date|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}} - {{if $_POST.montant_cession <= 0}} - {{:error message="Le montant de la cession doit être strictement positif"}} + {{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}} {{/if}} -*}} - {{:redirect to="compute_exit_data.html?immo_id=%s&amort_amount=%s&year=%s&exit_date=%s&duree_amort=%s"|args:$_GET.immo_id:$amort_amount:$selected_year:$_POST.date_sortie:$_POST.duree}} -{{* - {{:redirect to="write_exit.html?immo_id=%s&amort_amount=%s&year=%s&exit_date=%s&cession=%s&duree_amort=%s"|args:$_GET.immo_id:$amort_amount:$selected_year:$_POST.date_sortie:$_POST.montant_cession:$_POST.duree}} -*}} + {{if $amort_line.amort_number != 0 && $_POST.date_sortie|parse_date <= $amort_line.last_amort_date}} + {{:assign last_amort_date=$amort_line.last_amort_date|date_short}} + {{:error message="La date de sortie doit être postérieure à la date de la dernière immobilisation (%s)"|args:$last_amort_date}} + {{/if}} + + {{* vérifier que la date de sortie est située dans un exercice ouvert *}} + {{:assign ts_exit = $_POST.date_sortie|parse_date|strtotime}} + {{:assign ok=false}} + {{#foreach from=$years}} + {{if $id == $_POST.id_year}} + {{:assign selected_year=$id}} + {{if $start_date|strtotime <= $ts_exit && $ts_exit <= $end_date|strtotime}} + {{:assign ok=true}} + {{:break}} + {{/if}} + {{/if}} + {{/foreach}} + {{if ! $ok}} + {{:error message="La date choisie n'est pas dans l'exercice sélectionné !"}} + {{/if}} + + {{:redirect to="compute_exit_data.html?immo_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s"|args:$_GET.immo_id:$amort_amount:$selected_year:$ts_mes:$ts_debut:$ts_exit:$duree_amort}} {{/form}} {{:admin_header title="Sortie de bilan" custom_css="./style.css" current="module_amortissement"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="index"}} + {{:include file="_nav.html" current="index" subsubcurrent="balance_exit"}} {{/if}} {{:form_errors}} -{{*:debug ligne_immo=$ligne_immo amort_amount=$amort_amount*}} - {{* formulaire de sortie du bilan *}} -

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

    +

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

    Données de l'imobilisation
    -
    +
    Montant
    {{$ligne_immo.montant|money_currency:false}}
    -
    -
    {{$ligne_immo.trans_date|date_short}}
    - {{if $info_immo.date != null && $info_immo.date != $ligne_immo.trans_date}} -
    +
    Date d'acquisition
    +
    {{$ligne_immo.date_achat|date_short}}
    + {{if $info_immo.date != null && $info_immo.date != $ligne_immo.date_achat}} +
    Date de mise en service
    {{$info_immo.date|date_short}}
    {{/if}} {{if $info_immo.duration != null}}
    Durée de l'amortissement
    {{$info_immo.duration}} ans
    {{/if}} -
    +
    Montant des amortissements
    {{$amort_amount|money_currency:false}} (à la date de début de l'exercice)
    -
    +
    Valeur nette résiduelle
    {{$valeur_nette|money_currency:false}} (à la date de début de l'exercice)
    - + {{if $valeur_nette > 0}} + {{if $info_immo.date == null || $info_immo.duration == null}} +
    + Informations sur l'immobilisation +
    + {{if $info_immo.date == null}} + {{: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"}} + {{/if}} + {{if $info_immo.duration == null}} + {{: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}} +
    +
    + {{/if}} + {{/if}}
    Informations de sortie
    - {{:input type="date" name="date_sortie" label="Date de sortie du bilan" required=true default=$now|date_short}} - {{if $info_immo.date == null && $valeur_nette > 0}} - {{:input type="date" name="date_mes" label="Date de mise en service" help="à renseigner uniquement si différente de la date d'acquisition"}} - {{/if}} - {{if $info_immo.duration == null && $valeur_nette > 0}} - {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 onchange="computeAmort()" help="La durée est nécessaire pour calculer l'amortissement résiduel"}} - {{/if}} -{{* - {{:input type="checkbox" value=1 name="cession" label="Cession" help="Cocher si la sortie est due à une cession" onclick="toggleHiddenAndFocus('f_cession_1', ['infos_cession'], 'f_montant_cession')"}} - -*}} + {{:input type="select" default=$default_year name="id_year" label="Exercice" required=true default_empty="— Faire un choix —" options=$open_years}} + {{:input type="date" name="date_sortie" label="Date de sortie du bilan" required=true default=$default_exit_date}}

    {{:button type="submit" name="proceed" label="Poursuivre" shape="right" class="main"}}

    -
    - - {{:admin_footer}} diff --git a/compute_exit_data.html b/compute_exit_data.html new file mode 100644 index 0000000..2909ddc --- /dev/null +++ b/compute_exit_data.html @@ -0,0 +1,133 @@ +{{* -*- brindille -*- *}} + +{{* + Calculer les valeurs de la sortie et saisir le montant de la cession (optionnel) + paramètres : + - immo_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) +*}} + +{{#select + line.debit as montant, + trans.date as date_achat, + 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 = $_GET.immo_id|intval + assign="ligne_immo" +}} +{{else}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}} +{{/select}} + +{{: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 amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}} + {{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}} +{{/if}} + +{{* Traiter l'envoi du formulaire *}} +{{#form on="proceed"}} + {{:debug post=$_POST}} + {{if $_POST.cession != null}} + {{if $_POST.montant_cession == null}} + {{:error message="Vous devez saisir le montant de la cession"}} + {{/if}} + {{/if}} + + {{:redirect to="write_exit.html?immo_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s&cession=%s"|args:$_GET.immo_id:$_GET.amort_amount:$_GET.year:$_GET.date_mes:$_GET.date_debut:$_GET.exit_date:$_GET.duree_amort:$_POST.montant_cession}} + +{{/form}} +{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}} + +{{* barre de navigation *}} +{{if ! $dialog}} + {{:include file="_nav.html" current="index" subsubcurrent="balance_exit"}} +{{/if}} + +{{:form_errors}} + +

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

    +
    + +
    + Données de l'imobilisation +
    +
    Montant
    +
    {{$ligne_immo.montant|money_currency:false}}
    +
    Date d'acquisition
    +
    {{$ligne_immo.date_achat|date_short}}
    + {{if $_GET.date_mes != $ligne_immo.date_achat|strtotime}} +
    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
    + {{/if}} +
    Montant des amortissements
    +
    {{$_GET.amort_amount|money_currency:false}} (à la date de début de l'exercice)
    +
    Valeur nette résiduelle
    +
    {{$valeur_nette|money_currency:false}} (à la date de début de l'exercice)
    +
    Date de sortie
    +
    {{$_GET.exit_date|date:"d/m/Y"}}
    + {{if $amort_comp > 0}} +
    Amortissement complémentaire
    +
    {{$amort_comp|money_currency:false}} (jusqu'à la date de sortie)
    +
    Total des amortissements
    +
    {{"%f+%f"|math:$_GET.amort_amount:$amort_comp|money_currency:false}} (à la date de sortie)
    +
    Valeur nette résiduelle
    +
    {{"%f-%f"|math:$valeur_nette:$amort_comp|money_currency:false}} (à la date de sortie)
    + {{/if}} +
    +
    +
    + Informations de sortie +
    + {{:input type="checkbox" value=1 name="cession" label="Cession" help="Cocher si la sortie est due à une cession" onclick="toggleHiddenAndFocus('f_cession_1', ['infos_cession'], 'f_montant_cession')"}} + +
    +
    + +

    + {{:button type="submit" name="proceed" label="Poursuivre" shape="right" class="main"}} +

    + +
    + + + +{{:admin_footer}} diff --git a/write_exit.html b/write_exit.html index 21549ee..95f4045 100644 --- a/write_exit.html +++ b/write_exit.html @@ -6,48 +6,34 @@ - immo_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 : 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 - - cession : montant de la cession (optionnel) - duree_amort : durée de l'amortiseement (optionnel) + - cession : montant de la cession (optionnel) *}} -{{* TEMPORAIRE *}} -{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}} - -{{* barre de navigation *}} -{{if ! $dialog}} - {{:include file="_nav.html" current="amortization"}} -{{/if}} -{{* /TEMPORAIRE *}} - {{#select - id_transaction, - id_account, - debit, - label, + line.debit as montant, + line.id_transaction, + line.id_account, + trans.date as date_achat, + trans.label, id_project - FROM acc_transactions_lines - WHERE id = :immo_id; + FROM acc_transactions_lines AS line + INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id + WHERE line.id = :immo_id; :immo_id = $_GET.immo_id|intval assign="ligne_immo" }} {{/select}} -{{#select - label,date - FROM acc_transactions - WHERE id = :trans_id; - :trans_id = $ligne_immo.id_transaction - assign="trans_immo" -}} -{{/select}} - {{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} {{/load}} {{* date de début de l'exercice *}} {{#select start_date FROM acc_years WHERE id = :year_id; :year_id = $_GET.year}} - {{:assign date_debut=$start_date}} + {{*:assign date_debut=$start_date*}} {{/select}} {{*if $date_debut < "2025-01-01"*}} @@ -60,29 +46,17 @@ {{/if}} *}} -{{if $info_immo.duration == null}} - {{:assign duree_amort=$_GET.duree_amort}} -{{else}} - {{:assign duree_amort=$info_immo.duration}} -{{/if}} - -{{:assign valeur_nette="%f-%f"|math:$ligne_immo.debit:$_GET.amort_amount}} +{{: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}} - {{:include - file="_calcul_dates.html" - date_debut=$date_debut|parse_date - date_fin=$_GET.exit_date|parse_date - keep="nbjours" - }} -{{:debug nbjours=$nbjours}} - {{:assign annuite="%f/%f"|math:$ligne_immo.debit:$duree_amort}} + {{: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 amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}} {{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}} {{if $_GET.cession == null}} - {{:assign amort_except="%f-%f-%f"|math:$ligne_immo.debit:$_GET.amort_amount:$amort_comp}} + {{:assign amort_except="%f-%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount:$amort_comp}} {{/if}} {{/if}} @@ -92,17 +66,28 @@ {{:assign montant_cession="%f*100"|math:$_GET.cession}} {{/if}} -{{*:debug - get=$_GET - montant=$ligne_immo.debit - amort_comp=$amort_comp - amort_except=$amort_except - montant_cession=$montant_cession -*}} +{{* TODO : faut-il forcer les 3 sélecteurs de compte d'amortissement à avoir toujours la même valeur ? *}} + {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} -{{*:debug post=$_POST*}} +{{* + {{if $_POST.amort_comp_account != null} + {{:assign account=$_POST.amort_comp_account}} + {{elseif $_POST.amort_except_account != null} + {{:assign account=$_POST.amort_except_account}} + {{elseif $_POST.amort_sortie_account != null} + {{:assign account=$_POST.amort_sortie_account}} + {{/if}} +*}} + {{:assign account=$_POST.amort_sortie_account}} + + {{:include + file="_get_codes.html" + account=$account + keep="account_code" + }} + {{:assign amort_account=$account_code|keys|key:0}} {{if $valeur_nette > 0}} {{* immo non totalement amortie *}} @@ -114,16 +99,8 @@ keep="account_code" }} {{:assign comp_account=$account_code|keys|key:0}} - {{:include - file="_get_codes.html" - account=$_POST.amort_comp_account - keep="account_code" - }} - {{:assign amort_account=$account_code|keys|key:0}} - {{* ? Faut-il vérifier la validité des comptes ? *}} - - {{:assign libelle="Amortissement complémentaire "|cat:$trans_immo.label}} + {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.label}} {{:assign var="lines." debit="%f/100"|math:$amort_comp @@ -140,7 +117,7 @@ }} {{:assign valeur_nette="%f-%f"|math:$valeur_nette:$amort_comp}} - {{if $_GET.cession == null}} + {{if $_GET.cession == null && $amort_except > 0}} {{* lignes d'écriture de l'amortissement exceptionnel *}} {{:include file="_get_codes.html" @@ -148,7 +125,7 @@ keep="account_code" }} {{:assign except_account=$account_code|keys|key:0}} - {{:assign libelle="Amortissement exceptionnel "|cat:$trans_immo.label}} + {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.label}} {{:assign var="lines." debit="%f/100"|math:$amort_except @@ -165,7 +142,6 @@ }} {{:assign valeur_nette="%f-%f"|math:$valeur_nette:$amort_except}} {{/if}} -{{*:debug lines=$lines*}} {{:api method="POST" @@ -175,27 +151,26 @@ id_year=$_GET.year type="advanced" date=$_GET.exit_date - label="Amortissement final "|cat:$trans_immo.label + label="Amortissement final "|cat:$ligne_immo.label lines=$lines linked_transactions=$ligne_immo.id_transaction }} {{/if}} {{* écriture de sortie du bilan *}} -{{*:debug valeur_nette=$valeur_nette*}} - {{:assign libelle="Sortie du bilan de "|cat:$trans_immo.label}} + {{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.label}} {{:assign lines=null}} {{:assign var="lines." id_account=$ligne_immo.id_account - credit="%f/100"|math:$ligne_immo.debit + credit="%f/100"|math:$ligne_immo.montant id_project=$ligne_immo.id_project label=$libelle }} {{:assign var="lines." account=$amort_account - debit="(%f-%f)/100"|math:$ligne_immo.debit:$valeur_nette + debit="(%f-%f)/100"|math:$ligne_immo.montant:$valeur_nette id_project=$ligne_immo.id_project label=$libelle }} @@ -208,7 +183,7 @@ label=$libelle }} {{/if}} -{{*:debug lines=$lines*}} + {{:api method="POST" path="accounting/transaction" @@ -224,7 +199,7 @@ {{if $montant_cession > 0}} {{* Cession de l'immobilisation *}} - {{:assign libelle="Produit cession "|cat:$trans_immo.label}} + {{:assign libelle="Produit cession "|cat:$ligne_immo.label}} {{:include file="_get_codes.html" account=$_POST.creance_account @@ -254,18 +229,34 @@ }} {{/if}} - {{* mettre à jour l'état de l'immobilisation *}} - {{:save - key=$info_immo.key - status="archived" - }} + {{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_id|intval + duration=$_GET.duree_amort|intval + date=$_GET.date_mes|date:"Y-m-d" + status="archived" + }} + {{/if}} {{:redirect to="index.html?amort=archive"}} - {{/form}} +{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}} + +{{* barre de navigation *}} +{{if ! $dialog}} + {{:include file="_nav.html" current="index" subsubcurrent="balance_exit"}} +{{/if}} {{:form_errors}} -{{*:debug get=$_GET*}} {{* Préparer les infos pour le formulaire *}} @@ -278,7 +269,6 @@ assign=immo_account_info }} {{/select}} -{{*:debug immo_account_info=$immo_account_info*}} {{:include file="./_get_amort_code.html" @@ -299,20 +289,6 @@ value="%s — Produits des cessions d'actif"|args:$cession_code}} {{:assign var="creance_account.462" value="462 — Créances sur cessions d'immobilisations"}} -{{*:debug -comp_account=$comp_account -except_account=$except_account -amort_account=$amort_account -immo_account=$immo_account -vnc_account=$vnc_account -*}} - -{{#select * from acc_years where start_date <= :date AND :date <= end_date; - :date=$_GET.exit_date|parse_date - assign=year -}} -{{/select}} - {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} {{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} @@ -322,47 +298,46 @@ vnc_account=$vnc_account {{/foreach}} {{:assign patterns=$pattern_array|implode:"|"}} -{{*:debug comp_account=$comp_account amort_account=$amort_account except_account=$except_account year=$year*}} - -

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

    +

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

    Données de l'imobilisation
    -
    -
    {{$ligne_immo.debit|money_currency:false}}
    -
    -
    {{$trans_immo.date|date_short}}
    - {{if $info_immo.date != null && $info_immo.date != $trans_immo.date}} -
    -
    {{$info_immo.date|date_short}}
    +
    Montant
    +
    {{$ligne_immo.montant|money_currency:false}}
    +
    Date d'acquisition
    +
    {{$ligne_immo.date_achat|date_short}}
    + {{if $_GET.date_mes != $ligne_immo.date_achat|strtotime}} +
    Date de mise en service
    +
    {{$_GET.date_mes|date:"d/m/Y"}}
    {{/if}} - {{if $duree_amort != null}} + {{if $_GET.duree_amort != null}}
    Durée de l'amortissement
    -
    {{$duree_amort}} ans
    +
    {{$_GET.duree_amort}} ans
    {{/if}} -
    +
    Montant des amortissements
    {{$_GET.amort_amount|money_currency:false}} (à la date de début de l'exercice)
    -
    +
    Valeur nette résiduelle
    {{$valeur_nette|money_currency:false}} (à la date de début de l'exercice)
    -
    -
    {{$_GET.exit_date}}
    +
    Date de sortie
    +
    {{$_GET.exit_date|date:"d/m/Y"}}
    {{if $amort_comp > 0}} -
    -
    {{$amort_comp|money_currency:false}}
    -
    + {{:assign valeur_nette="%f-%f"|math:$valeur_nette:$amort_comp}} +
    Amortissement complémentaire
    +
    {{$amort_comp|money_currency:false}} (jusqu'à la date de sortie)
    +
    Total des amortissements
    {{"%f+%f"|math:$_GET.amort_amount:$amort_comp|money_currency:false}} (à la date de sortie)
    -
    -
    {{"%f-%f"|math:$valeur_nette:$amort_comp|money_currency:false}} (à la date de sortie)
    +
    Valeur nette résiduelle
    +
    {{$valeur_nette|money_currency:false}} (à la date de sortie)
    {{/if}} {{if $montant_cession == 0}} {{if $amort_except > 0}} -
    +
    Amortissement exceptionnel
    {{$amort_except|money_currency:false}}
    {{/if}} {{else}} -
    +
    Montant de la cession
    {{$montant_cession|money_currency:false}}
    {{/if}}
    @@ -371,7 +346,7 @@ vnc_account=$vnc_account
    Écritures de sortie du bilan {{* Amortissement complémentaire *}} - {{if $valeur_nette > 0}} + {{if $amort_comp > 0}} @@ -391,7 +366,7 @@ vnc_account=$vnc_account {{:input type="list" name="comp_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"68*":$year.id + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"68*":$_GET.year default=$comp_account }} @@ -403,7 +378,7 @@ vnc_account=$vnc_account {{:input type="list" name="amort_comp_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$year.id + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$_GET.year default=$amort_account }} @@ -412,50 +387,50 @@ vnc_account=$vnc_account
    + {{/if}} - {{* Amortissement exceptionnel *}} - {{if $montant_cession == 0}} - - - - - - - - - + {{* Amortissement exceptionnel *}} + {{if $montant_cession == 0 && $amort_except > 0}} +
    Amortissement exceptionnelDébitCrédit
    + - + + + - - - - - - - - - - - -
    - Montant de l'immobilisation non encore amortie (valeur nette résiduelle à la date de sortie) - Amortissement exceptionnelDébitCrédit
    - {{:input - type="list" - name="except_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"687*":$year.id - default=$except_account - }} - {{$amort_except|money_currency:false}}
    - {{:input - type="list" - name="amort_except_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$year.id - default=$amort_account - }} - {{$amort_except|money_currency:false}}
    - {{/if}} + + + + + Montant de l'immobilisation non encore amortie (valeur nette résiduelle à la date de sortie) + + + + + {{:input + type="list" + name="except_account" + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"687*":$_GET.year + default=$except_account + }} + + {{$amort_except|money_currency:false}} + + + + + {{:input + type="list" + name="amort_except_account" + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$_GET.year + default=$amort_account + }} + + + {{$amort_except|money_currency:false}} + + + {{/if}} {{* Sortie du bilan *}} @@ -473,30 +448,29 @@ vnc_account=$vnc_account {{:input type="list" name="amort_sortie_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$year.id + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"28*":$_GET.year default=$amort_account }} {{if $montant_cession == 0}} - {{:assign montant=$ligne_immo.debit}} + {{:assign montant=$ligne_immo.montant}} {{else}} {{:assign montant="%f+%f"|math:$_GET.amort_amount:$amort_comp}} {{/if}} {{$montant|money_currency:false}} - {{if $montant_cession > 0}} + {{if $montant_cession > 0 && $valeur_nette > 0}} {{:input type="list" name="vnc_account" - target="!acc/charts/accounts/selector.php?codes=%s*&year=%d"|args:$vnc_code:$year.id + target="!acc/charts/accounts/selector.php?codes=%s*&year=%d"|args:$vnc_code:$_GET.year default=$vnc_account }} - {{:assign montant="%f-%f"|math:$valeur_nette:$amort_comp}} - {{$montant|money_currency:false}} + {{$valeur_nette|money_currency:false}} {{/if}} @@ -505,12 +479,12 @@ vnc_account=$vnc_account {{:input type="list" name="immo_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:$patterns:$year.id + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:$patterns:$_GET.year default=$immo_account }} - {{$ligne_immo.debit|money_currency:false}} + {{$ligne_immo.montant|money_currency:false}} @@ -531,7 +505,7 @@ vnc_account=$vnc_account {{:input type="list" name="creance_account" - target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"462*":$year.id + target="!acc/charts/accounts/selector.php?codes=%s&year=%d"|args:"462*":$_GET.year default=$creance_account }} @@ -543,7 +517,7 @@ vnc_account=$vnc_account {{:input type="list" name="cession_account" - target="!acc/charts/accounts/selector.php?codes=%s*&year=%d"|args:$cession_code:$year.id + target="!acc/charts/accounts/selector.php?codes=%s*&year=%d"|args:$cession_code:$_GET.year default=$cession_account }}