diff --git a/_compare_version.tpl b/_compare_version.tpl new file mode 100644 index 0000000..88d8a40 --- /dev/null +++ b/_compare_version.tpl @@ -0,0 +1,34 @@ +{{* -*- brindille -*- *}} + +{{* + Comparer deux numéros de version n1.n2[.n3] + @param nv1 + @param nv2 + @result comp : -1 si nv1 < nv2, 0 si nv1 = nv2, 1 si nv1 > nv2 +*}} + +{{:assign nv1=$nv1|cat:"."}} +{{:assign nv2=$nv2|cat:"."}} +{{:assign var="tv1" value=$nv1|explode:"."}} +{{:assign var="tv2" value=$nv2|explode:"."}} + +{{:assign comp=0}} +{{:assign i=0}} +{{#foreach from=$tv1 item="e1"}} + {{:assign var="e2" from="tv2.%d"|args:$i}} + {{if $e1 < $e2}} + {{:assign comp=-1}} + {{:break}} + {{elseif $e1 > $e2}} + {{:assign comp=1}} + {{:break}} + {{/if}} + {{:assign i="%d+1"|math:$i}} +{{/foreach}} +{{* + cas où le premier tableau a moins d'éléments que le 2ème + et où les éléments présents dans les deux tableaux sont identiques + *}} +{{if $comp == 0 && $tv1|count < $tv2|count}} + {{:assign comp = -1}} +{{/if}} diff --git a/_get_free_amort.html b/_get_free_amort.html index 8a2649b..b3b142f 100644 --- a/_get_free_amort.html +++ b/_get_free_amort.html @@ -2,7 +2,7 @@ {{* lister les amortissement non rattachés à une immo - @param filter_condition + @param condition *}} {{#select line.id as line_id, @@ -18,9 +18,9 @@ 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 credit > 0 AND (NOT trans.status & 16) AND !filter_condition + WHERE credit > 0 AND (NOT trans.status & 16) AND !condition ORDER BY trans.date, trans.label; - !filter_condition=$filter_condition + !condition=$condition assign="amort_line" }} {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} diff --git a/_immobilisations.html b/_immobilisations.html index ab4d4d6..93648ec 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -76,7 +76,7 @@ {{:assign montant_immo=$doc_amount|or:$debit}} {{:assign immo_date = $doc_date_achat|or:$trans_date}} {{:assign label_immo=$doc_label|or:$trans_label}} - {{if $line_label != null && $line_label != $label_immo}} + {{if $label_immo|strpos:$line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}} {{/if}} diff --git a/_immobilisations_autres.html b/_immobilisations_autres.html index 7a4b04c..383ba12 100644 --- a/_immobilisations_autres.html +++ b/_immobilisations_autres.html @@ -149,6 +149,8 @@ {{#foreach from=$module.config.filters item="filter"}} {{if $trans_label|strpos:$filter !== false}} {{:assign status="ignored"}} + {{else}} + {{:assign status=""}} {{/if}} {{/foreach}} {{/if}} diff --git a/_nav.html b/_nav.html index c81e1f3..a3bf0b8 100644 --- a/_nav.html +++ b/_nav.html @@ -16,6 +16,7 @@
  • En cours
  • À classer
  • Configuration
  • +
  • Aide
  • {{if $subcurrent != null}} diff --git a/_upgrade_to031.tpl b/_upgrade_to031.tpl new file mode 100644 index 0000000..1efe934 --- /dev/null +++ b/_upgrade_to031.tpl @@ -0,0 +1,99 @@ +{{* -*- brindille -*- *}} + +{{* + Mettre à niveau vers v0.31 + - créer un doc de liaison pour chaque amortissement lié à une immobilisation + mais uniquement pour les immo déjà gérées, sinon l'upgrade + vers 0.33 ne fonctionnera pas car on pourrait se retrouver avec + des liaisons immo <-> amort sans doc associé à l'immo donc la + transformation de link vers amort_link ne pourra se faire + + - id ligne d'immobilisation + - id ligne d'amortissement + - id écriture d'amortissement +*}} + +{{* lister les immobilisations *}} +{{:include file="_get_config.html" keep="module.config"}} + +{{:assign account_condition="("}} +{{#foreach from=$module.config.prefixes item="code"}} + {{:assign code=$code|cat:"%"|quote_sql}} + {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} +{{/foreach}} +{{:assign account_condition=$account_condition|cat:"0)"}} + +{{:assign filter_condition=" AND NOT ("}} +{{#foreach from=$module.config.filters item="filter"}} + {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}} + {{:assign filter_condition=$filter_condition|cat:" trans.label LIKE "|cat:$filter|cat:" OR "}} +{{/foreach}} +{{:assign filter_condition=$filter_condition|cat:"0)"}} + +{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"|cat:$filter_condition}} + +{{#select + line.id as immo_line_id + FROM acc_transactions AS trans + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS account ON line.id_account = account.id + INNER JOIN acc_years AS years ON trans.id_year = years.id + WHERE !condition + ORDER BY trans.date DESC; + !condition=$condition +}} + {{* voir si l'immo est prise en charge *}} + {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id|intval}} + {{:assign status=$status}} + {{else}} + {{:assign status="unknown"}} + {{/load}} + + {{* ne pas faire la liaison si pas de doc *}} + {{if $status == "ignored" || $status == "unknown"}} + {{:continue}} + {{/if}} + + {{* lister les écritures d'amortissement liées *}} + {{:assign amort_lines=null}} + {{#select + CASE links.id_related = t_immo.id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as amort_trans_id, + l_amort.id AS amort_line_id + 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 OR 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_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%'; + :line_id = $immo_line_id|intval + assign="amort_lines." + }} + {{/select}} + + {{#foreach from=$amort_lines item="line"}} + {{* chercher un doc associé *}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id + AND $$.amort_line_id = :amort_line_id + AND $$.amort_trans_id = :amort_trans_id" + :immo_line_id = $immo_line_id + :amort_line_id = $line.amort_line_id + :amort_trans_id = $line.amort_trans_id + assign="link" + }} + {{else}} + {{* pas de doc => le créer *}} + {{:save + key=""|uuid + type="link" + immo_line_id=$immo_line_id + amort_line_id=$line.amort_line_id + amort_trans_id=$line.amort_trans_id + }} + {{/load}} + {{/foreach}} +{{/select}} diff --git a/_upgrade_to033.tpl b/_upgrade_to033.tpl new file mode 100644 index 0000000..b1104a7 --- /dev/null +++ b/_upgrade_to033.tpl @@ -0,0 +1,64 @@ +{{* -*- brindille -*- *}} + +{{* + Mettre à niveau vers v0.33, pour gérer les écritures du bilan d'ouverture + où le montant d'une ligne d'immo ou d'une ligne d'amort peut être + réparti entre plusieurs immo et plusieurs amort + + - modifier le doc d'immo + - date => date_mes (date mise en service) + + - modifier le doc de liaison d'amortissement + - id ligne d'immobilisation => id doc immobilisation + - id ligne d'amortissement + - id écriture d'amortissement + - ajouter montant amortissement +*}} + +{{* doc immo *}} +{{#load type="immo" assign="elem"}} + {{if $elem.date != null}} + {{:assign var="elem.date_mes" value=$elem.date}} + {{:assign var="docs." value=$elem}} + {{:delete id=$elem.id}} + {{/if}} +{{/load}} + +{{* créer les nouveaux documents *}} +{{#foreach from=$docs item="doc"}} + {{:save + key=""|uuid + type=$doc.type + line=$doc.line + duration=$doc.duration + label=$doc.label + amount=$doc.amount + date_achat=$doc.date_achat + date_mes=$doc.date_mes + status=$doc.status + }} +{{/foreach}} + +{{* lister les liaisons actuelles ligne amort => ligne immo *}} +{{#load type="link" assign="link"}} + {{#load type="immo" where="$$.line = :immo_line_id" :immo_line_id=$link.immo_line_id assign="immo"}} + {{:assign link_doc=null}} + {{:assign var="link_doc.immo_doc_id" value=$immo.id}} + {{:assign var="link_doc.amort_line_id" value=$link.amort_line_id}} + {{:assign var="link_docs." value=$link_doc}} + {{else}} + {{* liaison orpheline : ignorer *}} + {{/load}} + {{:delete id=$link.id}} +{{/load}} + +{{* créer les nouvelles liaisons *}} +{{#foreach from=$link_docs item="link"}} + {{:save + key=""|uuid + type="amort_link" + immo_doc_id=$link.immo_doc_id + amort_line_id=$link.amort_line_id + amount=null + }} +{{/foreach}} diff --git a/add_asset.html b/add_asset.html index 6c21221..3738fa3 100644 --- a/add_asset.html +++ b/add_asset.html @@ -161,7 +161,7 @@ {{:admin_header title="Ajout immobilisation" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="managed" subcurrent="add_asset"}} + {{:linkbutton href="index.html" label="Retour" shape="left"}} {{/if}} {{:form_errors}} @@ -224,7 +224,7 @@
    {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=0 default=1 suffix="année(s)"}} - {{: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="date" name="date_mes" label="Date de mise en service" default=$now|date_short help="C'est la date de première utilisation ; à modifier si différente de la date d'acquisition"}}
    @@ -245,5 +245,8 @@ function changeYear(evt, f_accounts = ['credit_account', 'debit_account'], f_yea (function () { document.getElementById('f_id_year').onchange = changeYear; + document.getElementById('f_date_achat').addEventListener("change", (e) => { + document.getElementById('f_date_mes').value = document.getElementById('f_date_achat').value; + }); })(); diff --git a/add_infos.html b/add_infos.html index 6e5fe46..9a45878 100644 --- a/add_infos.html +++ b/add_infos.html @@ -200,9 +200,9 @@ Classement
    (obligatoire)
    - {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" help="L'immobilisation sera classée parmi les immobilisations amortissables" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" default=$choix_defaut}} {{if $ligne_immo.date_achat > $first_date}} - {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" help="L'immobilisation sera classée parmi les immobilisations sorties du bilan" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" default=$choix_defaut}} {{/if}} {{:input type="radio-btn" name="classify" value="ignored" label="Immobilisation à ignorer" help="L'écriture n'apparaitra plus dans la liste des immobilisations" default=$choix_defaut}}
    @@ -211,11 +211,11 @@
    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" default=$date_achat_defaut help="à modifier si nécessaire"}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_mes_defaut help="à modifier si différente de la date d'acquisition"}} {{:input type="text" name="libelle" label="Libellé" default=$immo_label help="à modifier si nécessaire"}} + {{: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="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}} + {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_mes_defaut help="à modifier si différente de la date d'acquisition"}}
    @@ -236,7 +236,6 @@ function toggleInputs(event) { const managed = classement_immo.querySelector('input[type=radio][value=managed]'); if (managed.checked) { g.toggle('.masquable', true); - document.getElementById('f_duree').focus(); } else { g.toggle('.masquable', false); } @@ -248,6 +247,9 @@ toggleInputs(); radios.forEach(radio => { radio.addEventListener("change", toggleInputs); }); + document.getElementById('f_date_achat').addEventListener("change", (e) => { + document.getElementById('f_date_mes').value = document.getElementById('f_date_achat').value; + }); })(); diff --git a/aide.html b/aide.html new file mode 100644 index 0000000..0bf1430 --- /dev/null +++ b/aide.html @@ -0,0 +1,12 @@ +{{* -*- brindille -*- *}} + +{{:admin_header title="Aide" custom_css="./style_aide.css" current="module_amortization"}} + +{{* barre de navigation *}} +{{:include file="_nav.html" current="aide"}} + +
    +
    + {{:include file="doc/aide.html"}} +
    +
    diff --git a/amortization.html b/amortization.html index 085edd3..7d73749 100644 --- a/amortization.html +++ b/amortization.html @@ -15,7 +15,7 @@ {{: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.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{if $info_immo.amount != null}} @@ -39,7 +39,11 @@ {{* lister les amortissements non attachés à une immo *}} {{:assign account_filter="28%"|quote_sql}} {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} - {{:include file="./_get_free_amort.html" filter_condition=$filter_condition keep="free_amort_lines"}} + + {{:assign date_amort=$date_debut|quote_sql}} + {{:assign date_condition="trans.date >= "|cat:$date_amort}} + {{:assign condition=$date_condition|cat:" AND "|cat:$filter_condition}} + {{:include file="./_get_free_amort.html" condition=$condition keep="free_amort_lines"}} {{/if}} {{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} @@ -174,8 +178,8 @@ {{$line.date|date_short}} {{$line.label}} {{"%f"|math:$line.amount|money_currency_html:false|raw}} - - {{if $total_amort == 0}} + + {{if ! $created_amort}} {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}} {{/if}} @@ -239,7 +243,7 @@ {{"%f"|math:$solde|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} - + {{if ! $created_amort}} {{: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"}} {{/if}} diff --git a/attach_amort.html b/attach_amort.html index a6d05bb..95767e2 100644 --- a/attach_amort.html +++ b/attach_amort.html @@ -14,7 +14,7 @@ {{/if}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} diff --git a/attach_credit.html b/attach_credit.html index 276dc76..e081434 100644 --- a/attach_credit.html +++ b/attach_credit.html @@ -14,13 +14,22 @@ {{/if}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false }} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/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 solde_immo="%d-%d"|math:$ligne_immo.amount:$total_credits}} +{{:assign valeur_residuelle="%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, created_amort"}} +{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} + {{* chercher l'écriture au crédit du compte d'immobilisation *}} {{#select @@ -62,53 +71,46 @@ {{/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}} - {{/if}} - {{if $montant_credit == $credit_line.amount}} - {{:assign saved_credit=null}} - {{else}} - {{:assign saved_credit=$montant_credit}} - {{/if}} + {{/if}} + + {{* vérifier que le montant saisi est inférieur à la valeur nette de l'écriture d'immobilisation *}} + {{if $montant_credit > $valeur_residuelle}} + {{:assign solde_nb="%f"|math:$valeur_residuelle|money_currency:false}} + {{:error message="Le montant de l'avoir ne peut être supérieur à la valeur nette 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}} + {{/if}} + {{if $montant_credit == $credit_line.amount}} + {{:assign saved_credit=null}} + {{else}} + {{:assign saved_credit=$montant_credit}} {{/if}} {{* Lier l'écriture de crédit à l'écriture d'immobilisation *}} {{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$credit_line.trans_id}} -{{* - TODO ? vérifier le succès avant d'enregistrer le doc ? -*}} - -{{* enregistrer la liaison des lignes d'immo *}} -{{:save - key=""|uuid - type="credit_link" - immo_doc_id=$_GET.immo_doc_id|intval - credit_line_id=$_GET.credit_line_id|intval - amount=$saved_credit -}} - {{* -{{if $montant_credit == $solde_immo}} - {{:save - id=$_GET.immo_doc_id - status="archived" - }} -{{/if}} -*}} + TODO ? vérifier le succès avant d'enregistrer le doc ? + *}} -{{if $_GET.from == "exit"}} - {{:redirect force="exit_step1.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} -{{else}} - {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} -{{/if}} + {{* enregistrer la liaison des lignes d'immo *}} + {{:save + key=""|uuid + type="credit_link" + immo_doc_id=$_GET.immo_doc_id|intval + credit_line_id=$_GET.credit_line_id|intval + amount=$saved_credit + }} + + {{if $_GET.from == "exit"}} + {{:redirect force="exit_step1.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} + {{else}} + {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} + {{/if}} {{/form}} {{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index a561c80..f3c4ae0 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -18,7 +18,7 @@ *}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} diff --git a/compute_exit_data.html b/compute_exit_data.html index c824af5..f45a6fe 100644 --- a/compute_exit_data.html +++ b/compute_exit_data.html @@ -19,7 +19,7 @@ {{/if}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} diff --git a/config.html b/config.html index eec7baf..a8c91c9 100644 --- a/config.html +++ b/config.html @@ -129,6 +129,7 @@ {{/if}}
    +

    Comptes d'immobilisation amortissables

    Les immobilisations amortissables sont cherchées dans les comptes sélectionnés et leurs sous-comptes. @@ -138,7 +139,7 @@ Compte - + @@ -184,7 +185,7 @@ Compte - + diff --git a/doc/aide.html b/doc/aide.html new file mode 100644 index 0000000..005e29e --- /dev/null +++ b/doc/aide.html @@ -0,0 +1,472 @@ +

    +

    Module +immobilisations et amortissements pour Paheko

    +
    +

    Préambule

    +

    Ce module permet de :

    + +

    Il permet aussi de transformer des +immobilisations en cours de constitution en immobilisations +amortissables.

    +

    Les immobilisations créées avant +la mise en service du module sont détectées par le module mais il +faut renseigner leurs paramètres (au minimum, la durée d’amortissement) +pour que le module puisse les gérer.

    +

    Les amortissements créés avant la mise en service du module sont +détectées par le module mais il faut les attacher manuellement aux +immobilisations correspondantes.

    +

    Créer une nouvelle +immobilisation

    +

    Cliquer le bouton Ajouter une immobilisation qui est présent +sur plusieurs onglets ; dans la fenêtre de saisie qui s’affiche il +suffit de saisir les données de l’immobilisation puis de cliquer +Ajouter :

    + +

    Après création, l’immobilisation est classée dans l’onglet +Amortissables.

    +

    Ristourne sur immobilisation

    +

    Lorsqu’on acquiert une immobilisation, il se peut que par la suite on +obtienne une ristourne sous forme d’avoir ; cet avoir est enregistré +dans Paheko par une écriture dont le montant est au crédit du compte +d’immobilisation ; il est important d’attacher cette écriture d’avoir à +l’écriture d’immobilisation. En effet, le montant amortissable est égal +au montant d’acquisition de l’immobilisation moins la somme des +avoirs.

    +

    Tant qu’on n’a pas créé d’amortissement pour une immobilisation, il +est possible d’attacher une écriture d’avoir à l’écriture +d’immobilisation.

    +

    Pour cela, cliquer le bouton Détails en face de +l’immobilisation concernée puis Attacher une écriture d’avoir ; +s’il existe des écritures au crédit du compte de l’immobilisation, on +pourra en sélectionner une pour l’associer à l’écriture +d’immobilisation ; son montant sera ensuite déduit du montant de +l’immobilisaiton pour calculer le montant des amortissements.

    +

    Si l’avoir a été reçu après la création du premier amortissement, il +suffit de supprimer l’écriture d’amortissement et de procéder comme +ci-dessus pour attacher l’avoir ; il faudra ensuite recréer +l’amortissement.

    +

    Enregistrer un nouvel +amortissement

    +

    Une écriture d’amortissement se fait à la date de clôture de +l’exercice. Les amortissements sont calculés selon la méthode linéaire : +montant à amortir divisé par durée d’amortissement en années.

    +

    À partir de l’onglet Amortissables, cliquer le bouton +Détails en face de l’immobilisation choisie.
    +Avant d’enregistrer un nouvel amortissement, il peut être utile de +vérifier avec le bouton Attacher un amortissement s’il existe +des écritures d’amortissement qui n’ont pas encore été attachées à +l’immobilisation (cas des immobilisations et amortissements créés en +dehors du module) ; voir ci-dessous la rubrique Attacher un amortissement à une +immobilisation.

    +

    Cliquer le bouton Enregistrer un amortissement ; dans la +fenêtre de saisie, les informations sont calculées et pré-remplies par +le modules ; en général, il n’est pas nécessaire de les modifier :

    + +

    Après enregistrement, le nouvel amortissement apparaît dans la liste +des amortissements de l’immobilisation.

    +

    Lorsqu’une immobilisation est totalement amortie, elle est classée +dans l’onglet Amorties.

    +

    Incorporer une écriture +d’immobilisation créée hors du module

    +

    Les immobilisations créées avant la mise en service du +module sont regroupées dans l’onglet À classer. On distingue +deux cas :

    + +

    Immobilisations créées dans Paheko

    +

    Cliquer le bouton Paramètres en face de l’immobilisation à +prendre en charge et choisir comment sera considérée +l’immobilisation :

    + +

    Immobilisation à amortir

    +

    Le seul paramètre obligatoire est la durée d’amortissement en +années ; les autres paramètres sont pré-remplis à partir de l’écriture +d’immobilisation ; dans la majorité des cas, il n’est pas nécessaire de +les modifier.

    + +

    Après enregistrement, l’immobilisation est classée dans l’onglet +Amortissables ; on peut vérifier et éventuellement modifier ses +paramètres grâce au bouton Détails

    +

    Si des amortissements ont été enregistrés pour cette immobilisation +avant la mise en service du module, on pourra les attacher à +l’immobilisation : voir ci-dessous la rubrique Attacher un amortissement à une +immobilisation

    +

    Immobilisation sortie du bilan

    +

    Pour une immobilisation créée et sortie du bilan avant la mise en +service du module, un certain nombre d’écritures sont enregistrées dans +Paheko :

    + +

    Le module donne la possibilité de les attacher à l’immobilisation en +plusieurs étapes :

    +
      +
    1. Attacher une ou plusieurs écritures d’avoir à l’immobilisation, le +cas échéant
    2. +
    3. Attacher une ou plusieurs écritures d’amortissement à +l’immobilisation
    4. +
    5. Attacher une écriture de cession à l’immobilisation, le cas +échéant
    6. +
    7. Attacher une écriture de sortie du bilan à l’immobilisation
    8. +
    +

    Une fois cette étape validée, l’immobilisation sera classée dans +l’onglet Sorties du bilan.

    +

    Immobilisations créées dans une +comptabilité antérieure à Paheko

    +

    Les immobilisations et amortissements créés dans une comptabilité +antérieure à Paheko peuvent aussi être pris en charge par le module ; +ces immobilisations et amortissements figurent dans le bilan du +dernier exercice de l’ancienne comptabilité et doivent +obligatoirement se retrouver dans la balance d’ouverture du premier +exercice créé dans Paheko ; cette balance comporte, pour chaque +compte d’immobilisation, le montant total des immobilisations +de ce compte. Il va donc être nécessaire de répartir le montant d’un +compte entre les différentes immobilisations dont il est composé. Il en +est de même pour les amortissements.

    +

    Il faut donc obligatoirement disposer des informations ci-dessous +pour chaque immobilisation à incorporer :

    + +

    Remarque : les immobilisations créées et sorties +du bilan dans une comptabilité antérieure à Paheko ne figurent plus +au bilan (!) et n’apparaissent donc pas dans la balance d’ouverture du +premier exercice créé dans Paheko ; on n’a donc pas à s’en +(pré)occuper.

    +

    Exemple

    +

    L’exemple ci-dessous montre un extrait de la balance d’ouverture du +premier exercice créé dans Paheko et reprend une partie du bilan du +dernier exercice d’une comptabilité antérieure à Paheko.

    +
    + + +
    + +

    Dans l’onglet À classer on trouve les immobilisations de la +balance d’ouverture :

    +
    + + +
    + +

    Pour saisir les paramètres de la première immobilisation du compte +2181, cliquer le bouton Paramètres, puis cocher le choix +« Immobilisation à amortir ».

    +

    Les paramètres sont pré-remplis à partir des données de l’écriture de +la balance d’ouverture et seront donc à modifier en fonction des données +de l’immobilisation concernée.

    +
    +Paramètres a renseigner + +
    + +

    Après validation, cette immobilisation se retrouve classée dans les +immobilisations amortissables :

    +
    + + +
    +

    et dans l’onglet À classer on trouve le montant affecté à la +première immobilisation.

    +
    + + +
    +

    On fait de même pour la deuxième immobilisation du compte 2181 puis +pour les trois immobilisations du compte 2185 et on obtient :

    +
    + + +
    +

    et l’onglet À classer est vide.

    +

    Si des amortissements ont été enregistrés pour une ou plusieurs +immobilisations avant la mise en service du module, on pourra les +attacher à leur immobilisation : voir ci-dessous la rubrique Attacher un amortissement à une +immobilisation.

    +

    Attacher un amortissement à une +immobilisation

    +

    Si des écritures d’amortissement ont été saisies avec Paheko +avant la mise en service du module Amortissements, on +peut les attacher à leur immobilisation :

    + +
    +

    « Il y a des écritures d’amortissement qui ne sont pas attachées à +une immobilisation ! Utilisez le bouton « Attacher un amortissement » +pour les afficher ; vous pourrez choisir d’en attacher certaines à cette +immobilisation. »

    +
    +

    est présente, c’est qu’il existe des écritures d’amortissement +saisies avec Paheko avant la mise en service du module.

    +

    Cas des amortissements +créés avec Paheko

    + +

    Le montant affiché est celui de l’écriture d’amortissement ; il +suffit de valider.

    +

    Cas des amortissements +créés hors Paheko

    +

    Rappel : ces amortissements sont présents dans la balance +d’ouverture du premier exercice créé dans Paheko ; cette balance inclut, +pour chaque compte d’amortissement, le montant total des +amortissements de ce compte à la date de fin du dernier exercice de +la comptabilité antérieure à Paheko ; ce montant devra donc être +réparti entre les différentes immobilisations concernées.

    +

    Exemple : le montant qui figure dans la balance +d’ouverture pour le compte 28185 est de 7058,06€ réparti ainsi :

    + +

    Voici la page des détails du Saxophone avant l’attachement des +amortissements de la balance d’ouverture :

    +
    + + +
    +

    Cliquer le bouton Attacher un amortissement ; la liste des +amortissements du compte 28185 s’affiche :

    +
    + + +
    +

    Sur la page qui s’ouvre quand on clique Attacher, il faut +modifier le montant affiché (7058,06) en indiquant le montant des +amortissements de l’immobilisation (1016,43).

    +
    + + +
    +

    De retour sur la page des amortissements, on constate la présence de +l’écriture d’amortissement qu’on vient d’attacher ; on peut détacher une +écriture si on s’est trompé.

    +
    + + +
    +

    On peut faire de même pour les amortissements des autres +immobilisations du compte 2185 (Batterie et Piano) puis pour celles du +compte 2181 et l’on obtient :

    +
    + + +
    +

    Les immobilisations et amortissements de la balance d’ouverture +initiale ont été incorporés en totalité dans le module.

    +

    Par la suite, pour créer de nouveaux amortissements, il suffit de +procéder comme pour une +immobilisation standard.

    +

    Sortir une immobilisation du +bilan

    +

    Tant qu’une immobilisation est utilisée dans l’association, elle +reste au bilan, même si elle est totalement amortie.

    +

    On doit la sortir du bilan quand elle n’est plus utilisée (vétusté, +hors service) ou quand elle est donnée ou vendue (dans ce cas, on parle +de cession).

    +

    Cliquer le bouton Détails en face de l’immobilisation à +sortir du bilan, puis cliquer Sortir du bilan.

    + +

    Après validation, l’immobilisation est classée dans l’onglet +Sorties du bilan.
    +En cas de besoin, il est possible de parcourir les différentes étapes +pour vérifier les attachements et éventuellement en modifier certains en +cliquant le bouton Modifier.

    +

    Transformer des +« Immobilisations en cours » en « Immobilisation amortissable »

    +

    L’onglet En cours regroupe des immobilisations en cours de +constitution (classe 23 et sous-comptes) ; ces immobilisations ne sont +pas amortissables, mais sont destinées à être groupées pour former une +nouvelle immobilisation qui pourra être amortie.

    +

    Pour ce faire, cocher les lignes à grouper puis cliquer +Transférer.

    +
    + + +
    +

    Sur la page qui s’ouvre, saisir les données de la nouvelle +immobilisation :

    + +

    Après validation, la nouvelle immobilisation sera classée dans +l’onglet Amortissables.

    +

    Si on dé-coche la case Amortir…, l’immobilisation ne sera +pas amortie et sera marquée ignorée. On pourra la retrouver +dans l’onglet À classer en cochant la case Afficher les +écritures ignorées.

    diff --git a/doc/exemple_amortissement-saxo-2.png b/doc/exemple_amortissement-saxo-2.png new file mode 100644 index 0000000..b60d936 Binary files /dev/null and b/doc/exemple_amortissement-saxo-2.png differ diff --git a/doc/exemple_amortissement-saxo.png b/doc/exemple_amortissement-saxo.png new file mode 100644 index 0000000..f611407 Binary files /dev/null and b/doc/exemple_amortissement-saxo.png differ diff --git a/doc/exemple_amortissements_a_repartir.png b/doc/exemple_amortissements_a_repartir.png new file mode 100644 index 0000000..14e8cbe Binary files /dev/null and b/doc/exemple_amortissements_a_repartir.png differ diff --git a/doc/exemple_balance-initiale.png b/doc/exemple_balance-initiale.png new file mode 100644 index 0000000..49ffccd Binary files /dev/null and b/doc/exemple_balance-initiale.png differ diff --git a/doc/exemple_immobilisations_a_classer-1.png b/doc/exemple_immobilisations_a_classer-1.png new file mode 100644 index 0000000..7d733fd Binary files /dev/null and b/doc/exemple_immobilisations_a_classer-1.png differ diff --git a/doc/exemple_immobilisations_a_classer-2.png b/doc/exemple_immobilisations_a_classer-2.png new file mode 100644 index 0000000..6bf9501 Binary files /dev/null and b/doc/exemple_immobilisations_a_classer-2.png differ diff --git a/doc/exemple_immobilisations_amortissables-1.png b/doc/exemple_immobilisations_amortissables-1.png new file mode 100644 index 0000000..1849504 Binary files /dev/null and b/doc/exemple_immobilisations_amortissables-1.png differ diff --git a/doc/exemple_immobilisations_amortissables-2.png b/doc/exemple_immobilisations_amortissables-2.png new file mode 100644 index 0000000..4341016 Binary files /dev/null and b/doc/exemple_immobilisations_amortissables-2.png differ diff --git a/doc/exemple_immobilisations_amortissables-3.png b/doc/exemple_immobilisations_amortissables-3.png new file mode 100644 index 0000000..4b3602f Binary files /dev/null and b/doc/exemple_immobilisations_amortissables-3.png differ diff --git a/doc/exemple_immobilisations_en-cours-1.png b/doc/exemple_immobilisations_en-cours-1.png new file mode 100644 index 0000000..f94b347 Binary files /dev/null and b/doc/exemple_immobilisations_en-cours-1.png differ diff --git a/doc/exemple_parametres_immobilisation-1.png b/doc/exemple_parametres_immobilisation-1.png new file mode 100644 index 0000000..a89169d Binary files /dev/null and b/doc/exemple_parametres_immobilisation-1.png differ diff --git a/doc/exemple_saisie-amortissement-saxo.png b/doc/exemple_saisie-amortissement-saxo.png new file mode 100644 index 0000000..35a763b Binary files /dev/null and b/doc/exemple_saisie-amortissement-saxo.png differ diff --git a/exit_step1.html b/exit_step1.html index 1154fcb..5744fb6 100644 --- a/exit_step1.html +++ b/exit_step1.html @@ -13,7 +13,7 @@ {{/if}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} @@ -123,12 +123,13 @@ {{/select}} {{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}} + {{if $_GET.from == "exit"}} {{:assign current="other"}} {{else}} {{:assign current="archived"}} {{/if}} -{{:include file="_nav.html" current=$current subcurrent="exit"}} +{{*:include file="_nav.html" current=$current subcurrent="exit"*}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_avoir"}} @@ -146,7 +147,7 @@
    Compte d'immobilisation
    {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
    Montant de l'immobilisation
    -
    {{$ligne_immo.amount|money_html|raw}}
    +
    {{$montant_immo|money_currency_html:false|raw}}
    {{if $total_credits > 0}}
    Montant des avoirs
    {{"%f"|math:$total_credits|money_currency_html:false|raw}}
    @@ -162,8 +163,8 @@ +

    Écritures d'avoir attachées à l'immobilisation

    {{if $linked_immos != null}} -

    Écritures d'avoir attachées à l'immobilisation

    @@ -185,7 +186,7 @@ - @@ -210,7 +211,7 @@ - + @@ -229,7 +230,7 @@ - diff --git a/exit_step2.html b/exit_step2.html index 8235a02..6c451fc 100644 --- a/exit_step2.html +++ b/exit_step2.html @@ -21,7 +21,7 @@ {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} @@ -95,7 +95,7 @@ {{else}} {{:assign current="archived"}} {{/if}} -{{:include file="_nav.html" current=$current subcurrent="exit"}} +{{*:include file="_nav.html" current=$current subcurrent="exit"*}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_amort"}} @@ -113,7 +113,7 @@
    Compte d'immobilisation
    {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
    Montant de l'immobilisation
    -
    {{$ligne_immo.amount|money_html|raw}}
    +
    {{$montant_immo|money_currency_html:false|raw}}
    {{if $total_credits > 0}}
    Montant des avoirs
    {{"%f"|math:$total_credits|money_currency_html:false|raw}}
    @@ -129,8 +129,8 @@ +

    Écritures d'amortissement attachées à l'immobilisation

    {{if $linked_amort != null}} -

    Écritures d'amortissement attachées à l'immobilisation

    {{"%f"|math:$line.amount|money_currency_html:false|raw}} {{$line.account_code}} {{$line.account_label}} + {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}}
    Date LibelléMontantMontant N° compte Compte {{$amount|money_html|raw}} {{$account_code}} {{$account_label}} + {{:linkbutton label="Attacher" href="attach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$credit_line_id shape="plus" target="_dialog"}}
    @@ -164,7 +164,7 @@ - @@ -221,7 +221,7 @@ - diff --git a/exit_step3.html b/exit_step3.html index fca3fec..f55e5b5 100644 --- a/exit_step3.html +++ b/exit_step3.html @@ -21,7 +21,7 @@ {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} @@ -100,7 +100,7 @@ {{else}} {{:assign current="archived"}} {{/if}} -{{:include file="_nav.html" current=$current subcurrent="exit"}} +{{*:include file="_nav.html" current=$current subcurrent="exit"*}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_cession"}} @@ -118,7 +118,7 @@
    Compte d'immobilisation
    {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
    Montant de l'immobilisation
    -
    {{$ligne_immo.amount|money_html|raw}}
    +
    {{$montant_immo|money_currency_html:false|raw}}
    {{if $total_credits > 0}}
    Montant des avoirs
    {{"%f"|math:$total_credits|money_currency_html:false|raw}}
    @@ -138,8 +138,8 @@ +

    Écriture de cession attachée à l'immobilisation

    {{if $linked_cessions != null}} -

    Écriture de cession attachée à l'immobilisation

    {{"%f"|math:$line.amount|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&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}}
    {{"%f"|math:$line.amort_amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} + {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.amort_line_id shape="plus" target="_dialog"}}
    @@ -173,7 +173,7 @@ - @@ -186,7 +186,7 @@

    {{else}}

    - Aucune écriture de cession... que faire ? + Aucune écriture de cession

    {{/if}} @@ -226,7 +226,7 @@ - diff --git a/exit_step4.html b/exit_step4.html index 7868913..ed7be7a 100644 --- a/exit_step4.html +++ b/exit_step4.html @@ -26,11 +26,11 @@ {{/form}} {{#form on="finish"}} - {{:redirect to="index.html?type_immo=managed"}} + {{:redirect to="index.html?type_immo=other"}} {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} @@ -84,6 +84,39 @@ assign="exit_line" }} {{/select}} + + {{* lignes de l'écriture de sortie *}} + {{#select + line.label as line_label, + line.credit, + line.debit, + acc.id as account_id, + acc.code as account_code, + acc.label as account_label + FROM acc_transactions AS trans + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :exit_trans_id; + :exit_trans_id = $exit_line.trans_id + assign="trans" + }} + {{:assign var="exit_trans.%s"|args:$account_code value=$trans}} + {{/select}} + + {{:assign acc_codes=$exit_trans|keys}} + {{#foreach from=$linked_amort}} + {{if $account_code|in:$acc_codes}} + {{:assign var="exit_amort" from="exit_trans.%s.debit"|args:$account_code}} + {{:break}} + {{/if}} + {{/foreach}} + + {{if $exit_amort != $total_amort}} + {{:assign exit_amort_display=$exit_amort|money_currency:false|replace:" ":" "}} + {{:assign total_amort_display=$total_amort|money_currency:false|replace:" ":" "}} + {{:assign erreur=1}} + {{:assign message="Le montant des amortissement dans l'écriture de sortie (%s) est différent du total des amortissements associés à l'immobilisation (%s)."|args:$exit_amort_display:$total_amort_display}} + {{/if}} {{/if}} {{* @@ -187,7 +220,7 @@ {{else}} {{:assign current="archived"}} {{/if}} -{{:include file="_nav.html" current=$current subcurrent="exit"}} +{{*:include file="_nav.html" current=$current subcurrent="exit"*}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_exit"}} @@ -205,7 +238,7 @@
    Compte d'immobilisation
    {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
    Montant de l'immobilisation
    -
    {{$ligne_immo.amount|money_html|raw}}
    +
    {{$montant_immo|money_currency_html:false|raw}}
    {{if $total_credits > 0}}
    Montant des avoirs
    {{"%f"|math:$total_credits|money_currency_html:false|raw}}
    @@ -225,8 +258,37 @@ +{{if $erreur}} +

    {{$message}}
    Vérifiez si vous avez correctement attaché les écritures d'amortissement.

    +
    {{"%f"|math:$line.amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} + {{:linkbutton label="Détacher" href="detach_cession.html?immo_doc_id=%s&cession_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}}
    {{"%f"|math:$line.amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} + {{:linkbutton label="Attacher" href="attach_cession.html?immo_doc_id=%s&cession_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="plus"}}
    + + + + + + + + + + + + {{#foreach from=$exit_trans key="account_code" item="line"}} + {{:assign account_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.id_year}} + + + + + + + + {{/foreach}} + +
    Détails de l'écriture de sortie de bilan
    NuméroCompteDébitCréditLibellé
    {{$line.account_code}}{{$line.account_label}}{{$line.debit|money_currency:false}}{{$line.credit|money_currency:false}}{{$line.line_label}}
    +{{/if}} + +

    Écriture de sortie de bilan attachée à l'immobilisation

    {{if $exit_line != null}} -

    Écriture de sortie du bilan attachée à l'immobilisation

    + {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$exit_line.trans_id}} @@ -241,7 +303,7 @@ - + - @@ -261,7 +323,7 @@
    #{{$exit_line.trans_id}}#{{$exit_line.trans_id}} {{$exit_line.date|date_short}} {{if $exit_line.line_label != null}} @@ -253,7 +315,7 @@ {{"%f"|math:$exit_line.amount|money_html:false|raw}} {{$exit_line.account_code}} {{$exit_line.account_label}} + {{:linkbutton label="Détacher" href="detach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$exit_line.line_id shape="minus"}}
    {{elseif $exit_lines}}

    - Vous pouvez attacher une écriture de sortie du bilan à l'immobilisation + Vous pouvez attacher une écriture de sortie de bilan à l'immobilisation

    {{/if}} @@ -293,7 +355,7 @@ {{"%f"|math:$line.amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} - + {{:linkbutton label="Attacher" href="attach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="plus"}} @@ -301,16 +363,29 @@ {{elseif $exit_line == null}} -

    Aucune écriture de sortie du bilan. Vérifiez l'attachement d'écriture d'avoir.

    +

    Aucune écriture de sortie de bilan avec un + montant de {{$solde|money_currency_html:false|raw}} au crédit du + compte {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}} ; +
    + Vérifiez si vous avez correctement attaché les éventuelles écritures d'avoir. +
    + Si vous avez supprimé l'écriture de sortie de bilan, il faut + la recréer avant de pouvoir classer cette immobilisation + « Sortie du bilan » ! +

    + {{:save + key=$info_immo.key + status=null + }} {{/if}}

    {{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} - {{if $exit_line}} + {{if $exit_line && ! $erreur}} {{:button type="submit" name="validate" label="Terminer" shape="check" class="main"}} {{else}} - {{:button type="submit" name="finish" label="Terminer" shape="export" class="main"}} + {{:button type="submit" name="finish" label="Annuler" shape="delete" class="main"}} {{/if}}

    diff --git a/filters.html b/filters.html index 7590c9e..e59478d 100644 --- a/filters.html +++ b/filters.html @@ -31,7 +31,7 @@ Libellé - + diff --git a/ignore.html b/ignore.html index 4c1b760..a721759 100644 --- a/ignore.html +++ b/ignore.html @@ -21,6 +21,7 @@ {{:error message="Il n'y a aucune écriture avec le numéro de ligne %s !"|args:$_GET.immo_line_id}} {{/select}} {{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}}{{/load}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{* Traiter l'envoi du formulaire *}} {{#form on="proceed"}} diff --git a/index.html b/index.html index f2fab2e..e0018df 100644 --- a/index.html +++ b/index.html @@ -7,36 +7,39 @@ {{:assign type_immo=$_GET.type_immo}} {{/if}} - {{if $type_immo == "managed"}} - {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}} - {{elseif $type_immo == "amortized"}} - {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}} - {{elseif $type_immo == "archived"}} - {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}} - {{elseif $type_immo == "other"}} - {{:admin_header title="Immobilisations à classer" custom_css="./style.css" current="module_amortization"}} - {{elseif $type_immo == "unfinished"}} - {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}} - {{/if}} - +{{if $type_immo == "managed"}} + {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}} +{{elseif $type_immo == "amortized"}} + {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}} +{{elseif $type_immo == "archived"}} + {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}} +{{elseif $type_immo == "other"}} + {{:admin_header title="Immobilisations à classer" custom_css="./style.css" current="module_amortization"}} +{{elseif $type_immo == "unfinished"}} + {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}} +{{/if}} {{:include file="_nav.html" current=$type_immo}} +{{* Mise à niveau *}} +{{:assign module_version="0.33"}} +{{:include file="upgrade.html" module_version=$module_version}} + +{{* supprimer les documents sans écriture associée *}} +{{:include file="_remove_orphan_docs.tpl"}} + {{if $_GET.ok}} {{if $_GET.msg|match:"immobilisation"}} {{:assign msg="Immobilisation enregistrée"}} {{elseif $_GET.msg|match:"suppr_infos"}} - {{:assign msg="Informations supprimées"}} + {{:assign msg="Paramètres supprimés"}} {{elseif $_GET.msg|match:"infos"}} - {{:assign msg="Informations enregistrées"}} + {{:assign msg="Paramètres enregistrés"}} {{/if}}

    {{$msg}}

    {{elseif $_GET.err}}

    Échec enregistrement immobilisation

    {{/if}} -{{* supprimer les documents sans écriture associée *}} -{{:include file="_remove_orphan_docs.tpl"}} - {{if $type_immo == "other"}} {{:include file="_immobilisations_autres.html"}} {{elseif $type_immo == "archived"}} @@ -46,5 +49,4 @@ {{elseif $type_immo == "managed" || $type_immo == "amortized"}} {{:include file="_immobilisations.html"}} {{/if}} - {{:admin_footer}} diff --git a/link_immo.html b/link_immo.html index 43be090..73e071b 100644 --- a/link_immo.html +++ b/link_immo.html @@ -10,10 +10,16 @@ {{if $message != null}} {{:error message=$message}} {{/if}} -{{:assign label_immo=$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} + +{{: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.trans_label}} +{{if $label_immo|strpos:$ligne_immo.line_label ===false }} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} +{{if $info_immo.amount != null}} + {{:assign var="ligne_immo.amount" value=$info_immo.amount}} +{{/if}} {{* lister les écritures au crédit du compte de l'immobilisation @@ -23,6 +29,8 @@ {{else}} {{:assign account_code=$ligne_immo.account_code|substr:0:2|cat:"%"}} {{/if}} +{{:assign date_immo=$info_immo.date_achat|or:$ligne_immo.date_achat}} + {{#select line.id as credit_line_id, line.id_transaction as credit_trans_id, @@ -40,6 +48,7 @@ INNER JOIN acc_accounts AS account ON account.id = line.id_account INNER JOIN acc_years AS y ON y.id = trans.id_year WHERE account.code LIKE :account_code AND credit > 0 + AND trans.date >= :date_immo AND credit_line_id NOT IN ( SELECT json_extract(link.document, '$.credit_line_id') AS credit_line_id FROM !table as link WHERE json_extract(link.document, '$.type') == "credit_link" @@ -48,7 +57,8 @@ WHERE json_extract(exit_link.document, '$.type') == "exit_link") ORDER BY trans.date, trans.label; :account_code = $account_code - !table =$module.table + !table = $module.table + :date_immo = $date_immo assign="other_immos." }} {{/select}} @@ -88,7 +98,7 @@
    Montant
    {{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
    Date de l'immobilisation
    -
    {{$ligne_immo.date_achat|date_short}}
    +
    {{$date_debut|date_short}}
    @@ -118,7 +128,7 @@ {{$line.account_code}} {{$line.account_label}} - + {{:linkbutton label="Attacher" href="attach_credit.html?credit_line_id=%d&immo_doc_id=%s"|args:$line.credit_line_id:$_GET.immo_doc_id shape="plus"}} diff --git a/other_amortizations.html b/other_amortizations.html index 61f870f..d1b2909 100644 --- a/other_amortizations.html +++ b/other_amortizations.html @@ -13,7 +13,7 @@ {{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign date_mes=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} @@ -22,21 +22,26 @@ {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}} {{:assign montant_immo="%d-%d"|math:$montant_immo:$total_credits}} +{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} +{{:include + file="./_get_amort_code.html" + code_immo=$ligne_immo.account_code + keep="code_amort" +}} {{if $_GET.filter}} - {{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} - {{:include - file="./_get_amort_code.html" - code_immo=$ligne_immo.account_code - keep="code_amort" - }} - {{:assign filter_condition="account.code = "|cat:$code_amort}} + {{:assign amort_account=$code_amort|quote_sql}} + {{:assign filter_condition="account.code = "|cat:$amort_account}} {{else}} {{:assign account_filter="28%"|quote_sql}} {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} {{/if}} +{{:assign date_amort=$date_mes|quote_sql}} +{{:assign date_condition="trans.date >= "|cat:$date_amort}} +{{:assign condition=$date_condition|cat:" AND "|cat:$filter_condition}} + {{* lister les amortissements non rattachés à une immo *}} -{{:include file="./_get_free_amort.html" filter_condition=$filter_condition keep="free_amort_lines"}} +{{:include file="./_get_free_amort.html" condition=$condition keep="free_amort_lines"}} {{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}} @@ -112,7 +117,7 @@ {{"%f"|math:$line.amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} - + {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="plus"}} diff --git a/style.css b/style.css index 9811b17..c4b7591 100644 --- a/style.css +++ b/style.css @@ -74,6 +74,15 @@ table.list tbody tr.ignored:nth-child(even) { font-style: italic; background: rgba(255, 255, 200, 0.5); } + +table.error { + background-color: #fcc; +} +table.error tr, table.error td, table.error thead td { + background-image : none; + background-color: #fcc; +} + html.dark table.list tbody tr.ignored:nth-child(odd) { font-style: italic; background: rgba(100, 100, 0, 0.4); diff --git a/style_aide.css b/style_aide.css new file mode 100644 index 0000000..dc0879e --- /dev/null +++ b/style_aide.css @@ -0,0 +1,69 @@ +section.page * +{ + padding: 0.1em; + margin-top: 0.1em; +} + +section.page ul { + list-style: inside; + margin-left: 1.5em; +} + +section.page ol { + list-style: decimal; + margin-left: 1.5em; +} + +section.page h1 { + font-size: 2em; +} + +section.page h2 { + font-size: 1.5em; + margin-top : 1.5rem; + margin-bottom : 0.5rem; +} + +section.page h3 { + font-size: 1.2em; + margin-top : 1.5rem; + margin-bottom : 0.5rem; +} + +section.page h4 { + font-size: 1em; + margin-top : 1.5rem; + margin-bottom : 0.5rem; +} + +section.page figure { + margin-top : 0.5rem; + margin-bottom : 1rem; +} + +section.page figcaption { + font-weight : bold; +} + +section.page blockquote { + width: 75%; + margin-left: 2em; + margin-right: 2em; + font-family: Arial, Helvetica, sans-serif; + font-size: 1.1em; +} + +section.page article header { + text-align: center; + margin: 1rem 0; + padding-bottom: 0.5rem; + border-bottom: 2px solid #999; +} + +a:link { + color: #0033aa; +} + +a:link:visited { + color: #6600aa; +} diff --git a/transfer.html b/transfer.html index 6a491b1..9a979b1 100644 --- a/transfer.html +++ b/transfer.html @@ -36,7 +36,6 @@ {{:assign trans_list=$trans_list|implode:","}} {{:assign trans_list="("|cat:$trans_list|cat:")"}} {{:assign condition=$condition|cat:" AND trans.id IN "|cat:$trans_list}} -{{:assign condition=$condition|cat:" AND NOT (trans.status & 16)"}} {{#select trans.id as trans_id, @@ -45,6 +44,7 @@ SUM(line.debit) AS line_debit, account.code AS account_code, account.label AS account_label, + line.label as line_label, line.id_project as project_id FROM acc_transactions AS trans INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id @@ -56,6 +56,7 @@ }} {{:assign var="transactions.%s"|args:$trans_id amount=$line_debit + line_label=$line_label date=$trans_date code=$account_code label=$account_label @@ -255,17 +256,17 @@ {{:input - type="list" - name="credit_accounts[]" - required=true - readonly=true - target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code:$selected_year - default=$current_account + type="list" + name="credit_accounts[]" + required=true + readonly=true + target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code:$selected_year + default=$current_account }} {{:input name="credit_lines[]" type="text" class="money" size="8" default=$amount|money}} {{:input name="debit_lines[]" type="text" class="money" size="8" disabled=true}} - {{:input type="text" name="line_labels[]" size="40"}} + {{:input type="text" name="line_labels[]" size="40" default=$line_label}} {{if $projects != null}} {{:input type="select" name="id_project" options=$projects default_empty="— Aucun —"}} diff --git a/upgrade.html b/upgrade.html new file mode 100644 index 0000000..517eebe --- /dev/null +++ b/upgrade.html @@ -0,0 +1,45 @@ +{{* -*- brindille -*- *}} + +{{* + mise à niveau des documents selon version +*}} + +{{* version 0.31 *}} +{{:assign tag="0.31"}} + +{{:include file="_compare_version.tpl" nv1=$module_version nv2=$tag keep="comp"}} +{{:assign module_comp=$comp}} +{{:include file="_compare_version.tpl" nv1=$module.config.version nv2=$tag keep="comp"}} +{{:assign config_comp=$comp}} + +{{if $module_comp >= 0 && $config_comp < 0}} +{{* $module_version >= '0.31' && $module.config.version < '0.31' *}} + + {{:include file="_upgrade_to031.tpl"}} +

    Mise à jour vers version {{$tag}} terminée

    +{{/if}} + +{{* version 0.33 *}} +{{:assign tag="0.33"}} + +{{:include file="_compare_version.tpl" nv1=$module_version nv2=$tag keep="comp"}} +{{:assign module_comp=$comp}} +{{:include file="_compare_version.tpl" nv1=$module.config.version nv2=$tag keep="comp"}} +{{:assign config_comp=$comp}} + +{{if $module_comp >= 0 && $config_comp < 0}} +{{* $module_version >= '0.33' && $module.config.version < '0.33' *}} + + {{:include file="_upgrade_to033.tpl"}} +

    Mise à jour vers version {{$tag}} terminée

    +{{/if}} + +{{* enregistrer le nouveau numéro de version dans la config du module *}} +{{:include file="_compare_version.tpl" nv1=$module_version nv2=$module.config.version keep="comp"}} +{{if $comp > 0}} + {{:save key="config" version=$module_version}} +

    Nouvelle version enregistrée : {{$module_version}}

    +{{/if}} + +{{:linkbutton label="Revenir à la page d'accueil du module" href="index.html" shape="right"}} + diff --git a/write_exit.html b/write_exit.html index cfd4a3a..fa92190 100644 --- a/write_exit.html +++ b/write_exit.html @@ -17,6 +17,20 @@ {{:error message=$message}} {{/if}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} +{{if $label_immo|strpos:$ligne_immo.line_label === false}} + {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} +{{/if}} + +{{: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}} @@ -45,19 +59,8 @@ {{:assign vnc_code="652"}} {{:assign cession_code="757"}} -{{* 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"}} -{{* - {{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 @@ -78,7 +81,7 @@ }} {{:assign comp_account_code=$account_code|keys|value:0}} - {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.trans_label}} + {{:assign libelle="Amortissement complémentaire "|cat:$label_immo}} {{:assign var="lines." debit="%f/100"|math:$amort_comp @@ -103,7 +106,7 @@ keep="account_code" }} {{:assign except_account_code=$account_code|keys|value:0}} - {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.trans_label}} + {{:assign libelle="Amortissement exceptionnel "|cat:$label_immo}} {{:assign var="lines." debit="%f/100"|math:$amort_except @@ -129,7 +132,7 @@ id_year=$_GET.year type="advanced" date=$_GET.exit_date - label="Amortissement final "|cat:$ligne_immo.trans_label + label="Amortissement final "|cat:$label_immo lines=$lines linked_transactions=$ligne_immo.trans_id }} @@ -156,7 +159,7 @@ keep="account_code" }} {{:assign immo_account_code=$account_code|keys|value:0}} - {{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.trans_label}} + {{:assign libelle="Sortie du bilan de "|cat:$label_immo}} {{:assign var="lines." account=$immo_account_code @@ -216,7 +219,7 @@ {{if $montant_cession > 0}} {{* Cession de l'immobilisation *}} - {{:assign libelle="Produit cession "|cat:$ligne_immo.trans_label}} + {{:assign libelle="Produit cession "|cat:$label_immo}} {{:include file="_get_codes.html" account=$_POST.creance_account @@ -333,7 +336,7 @@ {{/foreach}} {{:assign patterns=$pattern_array|implode:"|"}} -

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

    +

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

    @@ -342,10 +345,10 @@
    Montant
    {{$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