diff --git a/_unfinished.html b/_unfinished.html index c361db3..4c12d4d 100644 --- a/_unfinished.html +++ b/_unfinished.html @@ -9,15 +9,6 @@ la construction d'un bâtiment destiné à être amorti)

-{{#form on="transfer"}} - {{if $_POST.selected == null}} -

Vous n'avez sélectionné aucune écriture !

- {{else}} - {{:assign doc_list=$_POST.selected|implode:","}} - {{:redirect to="transfer.html?doc=%s"|args:$doc_list}} - {{/if}} -{{/form}} - {{:include file="_get_config.html" keep="module.config"}} {{:assign saved_hides=$module.config.hides}} {{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}} @@ -30,7 +21,7 @@ {{else}} {{:assign unhide=1}} {{/if}} - {{:assign var="user_hides.unhide_unfinished" value=$unhide}} + {{:assign var="user_hides.unhide_unfinished" value=$unhide"}} {{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}} {{:save key="config" hides=$saved_hides}} {{/if}} @@ -73,83 +64,57 @@ account.id as account_id, account.code as account_code, account.label as account_label, - line.debit AS debit, + sum(line.debit) AS debit, trans.id_year as trans_id_year 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 + GROUP BY trans.id ORDER BY trans.date DESC; !condition=$condition assign="immo_line" }} - {{* document associé *}} - {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id assign="info_immo"}} - {{:assign var="immo_line.doc_id" value=$info_immo.id}} - {{* *}} - {{if $status == "unfinished"}} - {{* voir si l'immo a été ventilée *}} - {{:assign var="immo_line.allocated_amount" value=0}} - {{#load type="immo" where="$$.line = :immo_line_id AND ($$.status = 'inprogress' OR $$.status = "transferred")" :immo_line_id=$immo_line_id}} - {{:assign var="immo_line.allocated_amount" value="%d+%d"|math:$immo_line.allocated_amount:$amount}} - {{/load}} - {{elseif $status == 'ignored'}} - {{:assign nb_ignored="%d + 1"|math:$nb_ignored}} - {{if $unhide == null}} - {{:continue}} - {{/if}} - {{/if}} - {{else}} - {{* cas d'une immo sans doc associé => créer le doc *}} - {{:save - key=""|uuid - validate_schema="asset.schema.json" - type="immo" - line=$immo_line_id|intval - duration=0 - status="unfinished" - assign_new_id="immo_doc_id" - }} - {{:assign var="immo_line.doc_id" value=$immo_doc_id|intval}} + {{* voir si l'écriture a été marquée ignorée *}} + {{:assign var="immo_line.ignore" value=false}} + {{#load type="immo" assign="info_immo" where="$$.line = :line_id AND $$.status = 'ignored'" :line_id=$immo_line_id|intval}} + {{:assign var="immo_line.ignore" value=true}} {{/load}} - - {{if $info_immo.status == 'transferred'}} + {{if $immo_line.ignore}} + {{:assign nb_ignored="%d + 1"|math:$nb_ignored}} + {{/if}} + {{if $immo_line.ignore && $unhide == null}} {{:continue}} {{/if}} - {{if $immo_line.allocated_amount == $debit}} + + {{* + TODO cas où : + - il y a (au moins) une écriture d'avoir + *}} + + {{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}} + {{#select + count(*) AS count + 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 + WHERE line.credit = :amount AND code = :account_code + ; + :amount = $debit + :account_code = $account_code + }} + {{:assign count=$count}} + {{/select}} + + {{* S'il y a plus d'une écriture de même montant on ne peut pas décider *}} + {{if $count == 1}} {{:continue}} {{/if}} {{:assign var="immo_lines." value=$immo_line}} {{/select}} -{{* lister les immos incorporées de la balance d'ouverture *}} -{{#load type="immo" where="$$.status='inprogress'" assign="unfinished_immo"}} - {{* chercher l'écriture dont est tirée l'immo *}} - {{#select - trans.id as trans_id, - line.id as immo_line_id, - account.id as account_id, - account.code as account_code, - account.label as account_label, - trans.id_year as trans_id_year - 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 line.id = :unfinished_immo_line; - :unfinished_immo_line = $unfinished_immo.line - assign="immo_line" - }} - {{:assign var="immo_line.trans_label" value=$unfinished_immo.label}} - {{:assign var="immo_line.trans_date" value=$unfinished_immo.date_achat}} - {{:assign var="immo_line.debit" value=$unfinished_immo.amount}} - {{:assign var="immo_line.doc_id" value=$id}} - {{:assign var="immo_lines." value=$immo_line}} - {{/select}} -{{/load}} -
{{if $immo_lines|count > 0}}
@@ -168,10 +133,9 @@

- {{:button - type="submit" - name="transfer" + {{:linkbutton label="Transférer" + href="transfer.html?trans=" shape="right" id="transfer" }} @@ -184,6 +148,7 @@ {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }}

{{/if}} +
{{if $immo_lines|count > 0}}
@@ -195,8 +160,6 @@ Date Libellé Montant - Affecté - Reste N° compte Compte @@ -211,24 +174,21 @@ {{:assign total_immo="%d+%d"|math:$total_immo:$debit}} {{:assign var="montant" from="sommes_immo.%s"|args:$account_code}} {{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$debit}} - {{:assign var="row_value" value=$trans_id|cat:"_"|cat:$doc_id}} - 0}}class="strong"{{/if}}> - {{:input type="checkbox" name="selected[]" value=$doc_id}} + + {{:input type="checkbox" name="selected[]" value=$trans_id}} #{{$trans_id}} {{$trans_date|date_short}} {{$trans_label}} {{"%f"|math:$debit|money_html:false|raw}} - {{"%f"|math:$allocated_amount|money_html:false|raw}} - {{"%f-%f"|math:$debit:$allocated_amount|money_html:false|raw}} {{$account_code}} {{$account_label}} {{:linkbutton - label="Paramètres" - href="add_infos.html?immo_line_id=%s"|args:$immo_line_id - shape="settings" - target="_dialog" + label="Modifier" + href="ignore.html?immo_line_id=%s"|args:$immo_line_id + shape="edit" + target="_dialog" }} @@ -266,7 +226,6 @@ {{else}}

Aucune écriture d'immobilisation trouvée dans la comptabilité (compte {{$first_code}} et sous-comptes)

{{/if}} - diff --git a/add_infos.html b/add_infos.html index a740198..9a45878 100644 --- a/add_infos.html +++ b/add_infos.html @@ -1,6 +1,5 @@ {{* -*- brindille -*- *}} -{{:admin_header title="Classer l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* Classer une immobilisation non prise en charge @param immo_line_id @@ -54,12 +53,12 @@ {{:assign status="ignored"}} {{elseif $_POST.classify == "archived"}} {{* voir s'il y a déjà un doc associé à cette immo *}} - {{if $info_immo != null}} - {{:assign uuid=$info_immo.key}} - {{:assign immo_doc_id=$info_immo.id}} + {{#load type="immo" where="$$.line = :immo_line_id" :immo_line_id=$_GET.immo_line_id|intval}} + {{:assign uuid=$key}} + {{:assign immo_doc_id=$id}} {{else}} {{:assign uuid=""|uuid}} - {{/if}} + {{/load}} {{* immobilisation sortie du bilan *}} {{:save @@ -72,7 +71,7 @@ assign_new_id="immo_doc_id" }} {{:redirect force="exit_step1.html?immo_doc_id=%s&from=exit"|args:$immo_doc_id}} - {{elseif $_POST.classify == "managed"}} + {{else}} {{* immobilisation amortissable *}} {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} {{:assign da=$ligne_immo.date_achat|date_short}} @@ -125,46 +124,12 @@ {{:assign montant_nb="%f"|math:$montant|money_currency:false}} {{:error message="Le montant (%s) ne peut être supérieur au reste (%s)"|args:$montant_nb:$reste_nb}} {{/if}} + {{:assign status="managed"}} - {{elseif $_POST.classify == "unfinished"}} - {{* immobilisation en cours de constitution *}} - {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} - {{:assign da=$ligne_immo.date_achat|date_short}} - {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} - {{/if}} - - {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} - {{:assign date_achat=null}} - {{else}} - {{:assign date_achat=$_POST.date_achat|parse_date}} - {{/if}} - - {{if $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}} - {{:assign libelle=$_POST.libelle}} - {{/if}} - - {{if $_POST.montant == null || $_POST.montant|money_int == 0 }} - {{if $montant_affecte > 0}} - {{:assign montant=$reste}} - {{else}} - {{:assign montant=null}} - {{/if}} - {{else}} - {{:assign montant=$_POST.montant|money_int}} - {{if $montant == $ligne_immo.montant}} - {{:assign montant=null}} - {{/if}} - {{/if}} - {{if $montant > $reste}} - {{:assign reste_nb="%f"|math:$reste|money_currency:false}} - {{:assign montant_nb="%f"|math:$montant|money_currency:false}} - {{:error message="Le montant (%s) ne peut être supérieur au reste (%s)"|args:$montant_nb:$reste_nb}} - {{/if}} - {{:assign status="inprogress"}} {{/if}} {{* enregistrer les infos de l'immobilisation *}} - {{if $info_immo == null || $_POST.classify == "unfinished" || $montant_affecte > 0}} + {{if $info_immo == null || $montant_affecte > 0}} {{:assign key=""|uuid}} {{else}} {{:assign key=$info_immo.key}} @@ -174,7 +139,7 @@ validate_schema="asset.schema.json" type="immo" line=$_GET.immo_line_id|intval - duration=0 + duration=$duration label=$libelle amount=$montant date_achat=$date_achat @@ -184,14 +149,13 @@ {{if $_POST.classify == "managed"}} {{:assign type_immo="managed"}} - {{elseif $_POST.classify == "unfinished"}} - {{:assign type_immo="unfinished"}} {{else}} {{:assign type_immo="other"}} {{/if}} {{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}} {{/form}} +{{:admin_header title="Classer l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="other" subcurrent="parameter"}} @@ -230,19 +194,14 @@
{{$ligne_immo.code}} — {{$ligne_immo.account_label}} -{{:assign unfinished_prefix=$ligne_immo.code|strpos:"23"}}
Classement
(obligatoire)
- {{if $unfinished_prefix === 0}} - {{:input type="radio-btn" name="classify" value="unfinished" label="Immobilisation en cours de constitution" default=$choix_defaut}} - {{else}} - {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" default=$choix_defaut}} - {{/if}} - {{if $ligne_immo.date_achat > $first_date && $unfinished_prefix !== 0}} + {{: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" 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}} @@ -255,10 +214,8 @@ {{:input type="date" name="date_achat" label="Date d'acquisition" default=$date_achat_defaut help="à modifier si nécessaire"}} {{: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"}} - {{if $unfinished_prefix !== 0}} - {{: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"}} - {{/if}} + {{: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"}}
@@ -277,8 +234,7 @@ function toggleInputs(event) { const classement_immo = document.getElementById('classement_immo'); const managed = classement_immo.querySelector('input[type=radio][value=managed]'); - const unfinished = classement_immo.querySelector('input[type=radio][value=unfinished]'); - if ((managed != null && managed.checked) || (unfinished != null && unfinished.checked)) { + if (managed.checked) { g.toggle('.masquable', true); } else { g.toggle('.masquable', false); diff --git a/asset.schema.json b/asset.schema.json index 2ee4b13..4391dd5 100644 --- a/asset.schema.json +++ b/asset.schema.json @@ -35,7 +35,7 @@ }, "status" : { "type" : ["string", "null"], - "enum" : ["managed", "amortized", "archived", "unfinished", "ignored", "inprogress", "transferred"] + "enum" : ["managed", "amortized", "archived", "ignored"] }, "created" : { "description" : "vrai si immobilisation créée dans le module", diff --git a/scripts.js b/scripts.js index ab42804..3def0ba 100644 --- a/scripts.js +++ b/scripts.js @@ -241,7 +241,7 @@ function computeTotal(id_total, id_url) { for (const line of lines) { let button = line.querySelector('input[type=checkbox]'); if (button.checked) { - let money = line.querySelector('.remainder'); + let money = line.querySelector('.money'); let code = line.querySelector('.account_code a').innerText; if (code in total) { total[code] += getNumber(money.innerText) * 100; @@ -274,6 +274,11 @@ function computeTotal(id_total, id_url) { foot.removeChild(e); } } + + // mettre à jour les paramètres de l'url + let url = document.getElementById(id_url); + let new_href = url.href.replace(/trans=.*/, 'trans=' + Object.values(transactions)); + url.href = new_href; } // dupliquer la dernière ligne d'une table diff --git a/transfer.html b/transfer.html index 9997707..3017036 100644 --- a/transfer.html +++ b/transfer.html @@ -30,38 +30,33 @@ {{/foreach}} {{:assign condition=$condition|cat:"0)"}} -{{:assign docs=$_GET.doc|explode:","}} -{{:assign var="doc_list" value=$docs|map:quote_sql}} -{{:assign doc_list=$doc_list|implode:","}} -{{:assign doc_list="("|cat:$doc_list|cat:")"}} -{{:assign doc_condition="doc.id IN "|cat:$doc_list}} +{{* détails des écritures paramètres *}} +{{:assign trans=$_GET.trans|explode:","}} +{{:assign var="trans_list" value=$trans|map:quote_sql}} +{{:assign trans_list=$trans_list|implode:","}} +{{:assign trans_list="("|cat:$trans_list|cat:")"}} +{{:assign condition=$condition|cat:" AND trans.id IN "|cat:$trans_list}} {{#select - doc.id as doc_id, - IFNULL(json_extract(doc.document, '$.label'), - CASE WHEN line.label IS NOT NULL AND line.label != trans.label - THEN trans.label || " - " || line.label - ELSE trans.label - END) AS label, - IFNULL(json_extract(doc.document, '$.date_achat'), trans.date) AS date, - IFNULL(json_extract(doc.document, '$.amount'), line.debit) AS amount, + trans.id as trans_id, + trans.label AS trans_label, + trans.date AS trans_date, + SUM(line.debit) AS line_debit, account.code AS account_code, account.label AS account_label, line.id_project as project_id - FROM module_data_amortization AS doc - INNER JOIN acc_transactions_lines AS line ON json_extract(doc.document, '$.line') = line.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.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 - WHERE json_extract(document, '$.type') = "immo" - AND !doc_condition + WHERE !condition + GROUP BY trans.id ; - !doc_condition=$doc_condition - assign="doc_line" - }} - {{:assign var="transactions.%s"|args:$doc_id - amount=$amount - line_label=$label - date=$date + !condition=$condition +}} + {{:assign var="transactions.%s"|args:$trans_id + amount=$line_debit + line_label=$trans_label + date=$trans_date code=$account_code label=$account_label project=$project_id @@ -144,6 +139,7 @@ - que le compte d'immo débute par un préfixe correct (20, 21, ...) - est présent dans le PC de l'exercice correspondant à la date *}} + {{:include file="_check_account.html" account=$account_code @@ -157,6 +153,9 @@ {{:error message="Le compte « %s » n'est pas un compte d'immobilisation ou n'est pas dans le plan comptable de l'exercice choisi"|args:$compte}} {{/if}} + {{* écritures liées *}} + {{:assign var="linked_transactions" value=$transactions|keys}} + {{* enregistrer l'écriture *}} {{:api method="POST" @@ -167,6 +166,7 @@ date=$_POST.date_mes label=$_POST.designation|trim lines=$lines + linked_transactions=$linked_transactions }} {{:assign lines_count=$lines|count}} @@ -183,18 +183,6 @@ status=$status created=true }} - - {{* changer le statut des immos transférées *}} - {{#select - id - FROM module_data_amortization AS doc - WHERE id IN !id_list; - !id_list=$doc_list - assign="doc" - }} - {{:save id=$id status="transferred"}} - {{/select}} - {{if $_POST.amortir}} {{:assign type_immo="managed"}} {{else}} @@ -211,7 +199,7 @@ {{:form_errors}} {{* formulaire d'ajout d'immobilisation *}} -{{if $_GET.doc == null}} +{{if $_GET.trans == null}} {{:error message="Vous n'avez sélectionné aucune écriture !"}} {{/if}}