diff --git a/_archives.html b/_archives.html index e774b6d..eea991f 100644 --- a/_archives.html +++ b/_archives.html @@ -37,10 +37,9 @@ {{* Immobilisation avec une écriture de sortie de bilan *}} {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} -{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} {{:assign condition="("}} -{{#foreach from=$prefix_array item="code"}} +{{#foreach from=$config_defaut.prefixes item="code"}} {{:assign code=$code|cat:"%"|quote_sql}} {{:assign condition=$condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}} {{/foreach}} @@ -79,8 +78,6 @@ {{/select}}
-

Immobilisations archivées

- {{:assign nb_immo=0}} diff --git a/_get_config.html b/_get_config.html new file mode 100644 index 0000000..25cd4e7 --- /dev/null +++ b/_get_config.html @@ -0,0 +1,23 @@ +{{* -*- brindille -*- *}} + +{{* + Récupérer la config +*}} + +{{* config par défaut *}} +{{:read file="./defaut.json" assign="config_defaut"}} +{{:assign config_defaut=$config_defaut|json_decode}} + +{{* +{{if $module.config.tva != null}} + {{:assign var="config.tva" value=$module.config.tva}} +{{else}} + {{:assign var="config.tva" value=$config_defaut.tva}} +{{/if}} +*}} + +{{if $module.config.prefixes != null}} + {{:assign var="config.prefixes" value=$module.config.prefixes}} +{{else}} + {{:assign var="config.prefixes" value=$config_defaut.prefixes}} +{{/if}} diff --git a/_immobilisations.html b/_immobilisations.html index f59530c..28041ac 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -3,11 +3,6 @@ {{* Liste des immobilisations en cours ou amorties *}}
- {{if $type_immo == "encours"}} -

Immobilisations en cours

- {{elseif $type_immo == "fini"}} -

Immobilisations amorties

- {{/if}} {{:assign nb_immo=0}}
@@ -28,9 +23,8 @@ {{* lister les immobilisations *}} {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} - {{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} {{:assign condition="("}} - {{#foreach from=$prefix_array item="code"}} + {{#foreach from=$config_defaut.prefixes item="code"}} {{:assign code=$code|cat:"%"|quote_sql}} {{:assign condition=$condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} {{/foreach}} @@ -58,18 +52,16 @@ {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}} {{:assign duration=null}} + {{* voir si l'immo est prise en charge *}} {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}} {{:assign duration=$duration}} - {{if $status == "ignored"}} - {{:assign amortissable="non"}} - {{else}} - {{:assign amortissable="oui"}} - {{/if}} + {{:assign status=$status}} {{else}} {{:assign amortissable="nsp"}} + {{:assign status="unknown"}} {{/load}} - {{if $amortissable == "non"}} + {{if $status == "ignored"}} {{:continue}} {{/if}} @@ -93,8 +85,9 @@ :line_id = $immo_id|intval }} {{:assign ignore=true}} + {{:assign status="archived"}} {{/select}} - {{if $ignore}} + {{if $status == "archived"}} {{:continue}} {{/if}} @@ -133,12 +126,11 @@ {{/select}} {{* classement par onglet *}} - {{if $type_immo == "encours" && $amort_amount >= $debit || - $type_immo == "fini" && $amort_amount < $debit || - $amortissable == "nsp" && ! $exist_amort - }} - {{:continue}} - {{/if}} + {{if $type_immo == "managed" && $amort_amount >= $debit}}{{:continue}}{{/if}} + {{if $type_immo == "managed" && $status == "amortized"}}{{:continue}}{{/if}} + {{if $status == "unknown" && ! $exist_amort}}{{:continue}}{{/if}} + {{if $type_immo == "amortized" && $amort_amount < $debit && $status != "amortized"}}{{:continue}}{{/if}} + {{:assign nb_immo="%d+1"|math:$nb_immo}} @@ -152,14 +144,14 @@ {{if ! $exist_amort}} {{:linkbutton label="Paramètres" - href="add_infos.html?immo_id=%s&amort=1&op=modif&type_immo=%s"|args:$immo_id:$type_immo + href="add_infos.html?immo_id=%s&type_immo=%s"|args:$immo_id:$type_immo shape="settings" target="_dialog" }} - {{elseif $amortissable == "nsp"}} + {{elseif $status == "unknown"}} {{:linkbutton label="Paramètres" - href="add_infos.html?immo_id=%s&amort=1&op=new&type_immo=%s"|args:$immo_id:$type_immo + href="add_infos.html?immo_id=%s&type_immo=%s"|args:$immo_id:$type_immo shape="settings" target="_dialog" }} diff --git a/_immobilisations_autres.html b/_immobilisations_autres.html index 0b3a22b..c404863 100644 --- a/_immobilisations_autres.html +++ b/_immobilisations_autres.html @@ -3,9 +3,18 @@ {{* Liste des immobilisations non amortissables ou non (encore) gérées *}}
-

Autres immobilisations

{{:assign nb_immo=0}} +

+ Cette page liste les écritures pas (encore) prises en charges par le module ou classées non amortissables +

+ +
+
+ {{:input type="checkbox" value=1 name="unhide" label="Afficher les écritures marquées ignorées" }} +
+ +
#{{$trans_id}}
@@ -23,9 +32,8 @@ {{* lister les immobilisations *}} {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} - {{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} {{:assign condition="("}} - {{#foreach from=$prefix_array item="code"}} + {{#foreach from=$config_defaut.prefixes item="code"}} {{:assign code=$code|cat:"%"|quote_sql}} {{:assign condition=$condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} {{/foreach}} @@ -52,14 +60,21 @@ }} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}} + {{* voir si l'immo est prise en charge *}} {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}} {{:assign status=$status}} {{else}} - {{:assign status="nsp"}} + {{:assign status="unknown"}} {{/load}} - {{if $status != "ignored" && $status != "nsp"}} - {{:continue}} + {{if $_POST.unhide == null}} + {{if $status != "unknown"}} + {{:continue}} + {{/if}} + {{else}} + {{if $status != "ignored" && $status != "unknown"}} + {{:continue}} + {{/if}} {{/if}} {{* voir s'il existe des écritures d'amortissement associées *}} @@ -87,7 +102,7 @@ account.code LIKE '28%'; :line_id = $immo_id|intval }} - {{if $status == "nsp" && $amort_amount != null}} + {{if $amort_amount != null}} {{:assign ignore=true}} {{else}} {{:assign ignore=false}} @@ -107,24 +122,24 @@ @@ -136,3 +151,15 @@

Aucune immobilisation

{{/if}} + + diff --git a/_nav.html b/_nav.html index 1ef59e0..517cc4d 100644 --- a/_nav.html +++ b/_nav.html @@ -1,38 +1,35 @@ {{* -*- brindille -*- *}} diff --git a/add_asset.html b/add_asset.html index db599db..31ec3dc 100644 --- a/add_asset.html +++ b/add_asset.html @@ -2,7 +2,6 @@ {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} -{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} {{#years closed=false order="start_date" assign=years.}} {{:assign ts_debut=$start_date|strtotime}} @@ -74,7 +73,7 @@ file="_check_account.html" account=$debit_account chart_id=$selected_chart - prefix_array=$prefix_array + prefix_array=$config_defaut.prefixes keep="account_ok" }} @@ -117,9 +116,9 @@ status=$status }} {{if $_POST.amortir}} - {{:assign type_immo="encours"}} + {{:assign type_immo="managed"}} {{else}} - {{:assign type_immo="autre"}} + {{:assign type_immo="other"}} {{/if}} {{:redirect force="index.html?ok=1&msg=immobilisation&type_immo=%s"|args:$type_immo}} {{/form}} @@ -138,7 +137,7 @@ {{:assign var="projects.%d"|args:$id value=$label}} {{/select}} -{{#foreach from=$prefix_array item="code"}} +{{#foreach from=$config_defaut.prefixes item="code"}} {{:assign var="pattern_array." value="%s*"|args:$code}} {{/foreach}} {{:assign var="patterns" value=$pattern_array|implode:"|"}} diff --git a/add_infos.html b/add_infos.html index 455c690..a147948 100644 --- a/add_infos.html +++ b/add_infos.html @@ -2,18 +2,17 @@ {{* @param immo_id - @param amort = 1 si immo amortissable, 0 si non - @param op = new ou modif - @param type_immo : encours, archive, fini, autre + @param type_immo : managed, amortized, archived, other *}} -{{if $_GET.op == "modif"}} - {{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} - {{/load}} -{{/if}} +{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} +{{/load}} {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} + {{if $_POST.classify == null}} + {{:error message="Vous devez choisir une action"}} + {{/if}} {{* chercher la date d'acquisition de l'immobilisation *}} {{#select @@ -26,7 +25,7 @@ }} {{/select}} - {{if ! $_POST.amortir}} + {{if $_POST.classify == "ignored"}} {{* ne pas amortir *}} {{:assign duration=0}} {{:assign date_debut=$ligne_immo.date_achat|parse_date}} @@ -39,15 +38,20 @@ {{:assign da=$ligne_immo.date_achat|date_short}} {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$dd:$da}} {{/if}} - {{:assign duration=$_POST.duree|intval}} - {{if $duration <= 0}} - {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} + {{if $_POST.classify == "amortized"}} + {{:assign duration=0}} + {{:assign status="amortized"}} + {{else}} + {{:assign duration=$_POST.duree|intval}} + {{if $duration <= 0}} + {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} + {{/if}} + {{:assign status="managed"}} {{/if}} - {{:assign status="managed"}} {{/if}} {{* enregistrer les infos de l'immobilisation *}} - {{if $_GET.op == "new"}} + {{if $info_immo == null}} {{:assign key=""|uuid}} {{else}} {{:assign key=$info_immo.key}} @@ -62,8 +66,8 @@ status=$status }} - {{if ! $_POST.amortir}} - {{:assign type_immo="autre"}} + {{if $_POST.classify == "managed" || $_POST.classify == "amortized"}} + {{:assign type_immo=$_POST.classify}} {{else}} {{:assign type_immo=$_GET.type_immo}} {{/if}} @@ -72,40 +76,53 @@ {{:form_errors}} {{/form}} -{{:admin_header title="Renseigner informations amortissement" custom_css=$custom_css current="module_amortissement"}} +{{:admin_header title="Informations amortissement" custom_css=$custom_css current="module_amortissement"}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="index"}} {{/if}} -{{* renseigner ou modifier la date de mise en service et la durée d'amortissement *}} -{{if $_GET.amort == 0}} - {{:assign checked=0}} - {{:assign disabled=1}} +{{if $info_immo == null}} + {{:assign default=$_GET.type_immo}} {{else}} - {{:assign checked=1}} - {{:assign disabled=0}} + {{:assign default=$info_immo.status}} {{/if}} +{{if $_GET.type_immo == "managed" || $_GET.type_immo == "amortized"}} + {{:assign disabled=0}} +{{else}} + {{:assign disabled=1}} +{{/if}} + +{{* + - classer l'immobilisation + - renseigner ou modifier la date de mise en service et la durée d'amortissement + *}} -
- +
+ Classement +
+
(obligatoire)
+ {{:input type="radio-btn" name="classify" value="managed" label="Amortir" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}} + {{:input type="radio-btn" name="classify" value="amortized" label="Amortissement terminé" help="Cette immobilisation sera classée parmi les immobilisations amorties" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}} + {{:input type="radio-btn" name="classify" value="ignored" label="Ignorer l'écriture" help="Cette écriture n'apparaitra plus dans la liste des immobilisations" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}} +
+
+ +
+ Informations
- {{if $checked}} - {{:assign helptext = "Dé-cocher pour ne pas amortir"}} - {{else}} - {{:assign helptext = "Cocher pour amortir"}} - {{/if}} - {{:input id="amortir" type="checkbox" value=1 name="amortir" label="Amortir" default=$checked help=$helptext onclick="toggleInputs('infos_immo','f_amortir_1')"}} {{if $info_immo != null}} {{:assign date_defaut=$info_immo.date}} {{:assign duree_defaut=$info_immo.duration}} {{else}} - {{:assign duree_defaut=1}} + {{:assign duree_defaut=null}} {{/if}} - {{:input type="number" name="duree" label="Durée d'amortissement" default=$duree_defaut required=true min=1 disabled=$disabled}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_defaut disabled=$disabled help="à renseigner uniquement si différente de la date d'acquisition"}} +
+ {{:input type="number" name="duree" label="Durée d'amortissement" default=$duree_defaut required=true min=1 disabled=$disabled}} + {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_defaut disabled=$disabled help="à renseigner uniquement si différente de la date d'acquisition"}} +
@@ -117,19 +134,19 @@ {{* activer/désactiver les champs de saisie *}} {{:admin_footer}} diff --git a/amortization.html b/amortization.html index a3bcca2..1a84a12 100644 --- a/amortization.html +++ b/amortization.html @@ -1,5 +1,11 @@ {{* -*- brindille -*- *}} +{{* + Lister les écritures d'amortissement associées à une immobilisation + @param immo_id : id de la ligne d'immo + @param type_immo : managed, amortized, archived, others +*}} + {{* récupérer les infos de l'immobilisation *}} {{#select line.id as immo_id, @@ -18,10 +24,12 @@ {{/select}} {{:assign date_debut=$ligne_immo.date}} {{:assign solde=$ligne_immo.montant}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} {{:assign duree=$duration}} {{:assign date_debut=$date}} + {{:assign status=$status}} {{/load}} {{* chercher des écritures d'amortissement liées à l'immobilisation *}} @@ -60,24 +68,70 @@ {{/if}} {{/select}} -{{:assign valeur_residuelle=$ligne_immo.montant}} -{{#foreach from=$linked_lines}} - {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_amount}} -{{/foreach}} +{{if $status == "amortized"}} + {{:assign amort_amount=$ligne_immo.montant}} + {{:assign valeur_residuelle=0}} +{{else}} + {{:assign valeur_residuelle=$ligne_immo.montant}} + {{#foreach from=$linked_lines}} + {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_amount}} + {{/foreach}} +{{/if}} + +{{* Autres amortissements non rattachés *}} +{{#select + line.id as l_id, + line.id_transaction as t_id, + line.credit as amort_amount, + line.label as l_label, + trans.date as t_date, + trans.label as t_label, + trans.id_year as amort_year, + account.id as account_id, + account.code as account_code, + account.label as account_label + FROM acc_transactions_lines AS line + INNER JOIN acc_accounts AS account ON account.id = line.id_account + INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction + INNER JOIN acc_years AS y ON y.id = trans.id_year + WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) + ORDER BY trans.date, trans.label; + assign=autre_amort +}} + {{#select + id_transaction, + id_related + FROM acc_transactions_links + WHERE id_transaction = :id_amort OR id_related = :id_amort; + :id_amort=$t_id + }} + {{else}} + {{:assign var="autres_amortissements." value=$autre_amort}} + {{/select}} +{{/select}} + {{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortissement"}} {{* barre de navigation *}} -{{if $_GET.type_immo == "fini" || $valeur_residuelle== 0 }} - {{:assign subcurrent="fini"}} -{{elseif $_GET.type_immo == "archive"}} - {{:assign subcurrent="archive"}} -{{elseif $_GET.type_immo == null || $_GET.type_immo == "encours"}} - {{:assign subcurrent="encours"}} +{{if $_GET.type_immo == "amortized" || $valeur_residuelle== 0 }} + {{:assign subcurrent="amortized"}} +{{elseif $_GET.type_immo == "archived"}} + {{:assign subcurrent="archived"}} +{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed"}} + {{:assign subcurrent="managed"}} {{else}} - {{:assign subcurrent="autre"}} + {{:assign subcurrent="other"}} {{/if}} -{{:include file="_nav.html" current="index" subcurrent="%s"|args:$subcurrent subsubcurrent="amortization"}} + +{{:include + file="_nav.html" + current="index" + subcurrent="%s"|args:$subcurrent + subsubcurrent="amortization" + type_immo=$_GET.type_immo + autres_amort=$autres_amortissements +}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach"}} @@ -97,21 +151,13 @@

{{$msg}}

{{/if}} -{{if $valeur_residuelle > 0}} - -{{/if}} -
Sortir l'immobilisation du bilan ?

{{:linkbutton label="Sortir du bilan" - href="balance_sheet_exit.html?immo_id=%s"|args:$_GET.immo_id + href="balance_sheet_exit.html?immo_id=%s&type_immo=%s"|args:$_GET.immo_id:$_GET.type_immo shape="export" class="main" }} @@ -125,8 +171,8 @@

-
Libellé
-
{{$ligne_immo.label}}
+
Immobilisation
+
#{{$ligne_immo.trans_id}} {{$ligne_immo.label}}
Montant
{{"%f"|math:$ligne_immo.montant|money_currency}}
Début d'amortissement
@@ -135,6 +181,16 @@
Durée
{{$duree}} ans
{{/if}} + {{if $valeur_residuelle > 0}} +
Montant déjà amorti
+
{{"%d-%d"|math:$ligne_immo.montant:$valeur_residuelle|money_currency:false}}
+
Valeur résiduelle
+
{{$valeur_residuelle|money_currency}}
+ {{/if}} + {{if $duree != null && $valeur_residuelle > 0}} +
Annuité estimée
+
{{"%f/%d"|math:$ligne_immo.montant:$duree|money_currency}}
+ {{/if}}

Amortissements enregistrés

@@ -185,79 +241,15 @@

Aucun amortissement enregistré pour cette immobilisation

{{/if}} -{{if $_GET.type_immo == null || $_GET.type_immo != "fini"}} +{{if $_GET.type_immo == null || $_GET.type_immo != "amortized"}} {{* Autres amortissements non rattachés *}} - {{#select - line.id as l_id, - line.id_transaction as t_id, - line.credit as amort_amount, - line.label as l_label, - trans.date as t_date, - trans.label as t_label, - trans.id_year as amort_year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON account.id = line.id_account - INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction - INNER JOIN acc_years AS y ON y.id = trans.id_year - WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) - ORDER BY trans.date, trans.label; - assign=autre_amort - }} - {{#select - id_transaction, - id_related - FROM acc_transactions_links - WHERE id_transaction = :id_amort OR id_related = :id_amort; - :id_amort=$t_id - }} - {{else}} - {{:assign var="autres_amortissements." value=$autre_amort}} - {{/select}} - {{/select}} {{if $autres_amortissements != null}} -
-

Amortissements non rattachés

-
{{$account_code}} {{$account_label}} - {{if $status == "nsp"}} + {{if $status == "unknown"}} {{:linkbutton label="Paramètres" - href="add_infos.html?immo_id=%s&amort=0&op=new&type_immo=autre"|args:$immo_id + href="add_infos.html?immo_id=%s&type_immo=other"|args:$immo_id shape="settings" target="_dialog" }} {{else}} {{:linkbutton label="Paramètres" - href="add_infos.html?immo_id=%s&amort=0&op=modif&type_immo=autre"|args:$immo_id + href="add_infos.html?immo_id=%s&type_immo=other"|args:$immo_id shape="settings" target="_dialog" }} {{/if}} {{:linkbutton label="Amortissements" - href="amortization.html?immo_id=%s&type_immo=autre"|args:$immo_id + href="amortization.html?immo_id=%s&type_immo=other"|args:$immo_id shape="table" }}
- - - - - - - - - - - - - {{#foreach from=$autres_amortissements item="line"}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.t_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} - - - - - - - - - - {{/foreach}} - -
DateMontantLibelléN° compteCompte
#{{$line.t_id}}{{$line.t_date|date_short}}{{"%f"|math:$line.amort_amount|money}}{{if $line.l_label == null}} - {{$line.t_label}} - {{else}} - {{$line.l_label}} - {{/if}} - {{$line.account_code}}{{$line.account_label}} - {{:linkbutton label="Attacher" href="attach_amort.html?amort_id=%d&immo_id=%d"|args:$line.l_id:$ligne_immo.immo_id shape="plus"}} -
-
+

+ Il existe des écritures d'amortissement qui ne sont pas rattachés à une immobilisation !
+ Utilisez le bouton « Attacher un amortissement » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation. +

{{/if}} {{/if}} {{:form_errors}} diff --git a/attach_amort.html b/attach_amort.html index d2863df..8680894 100644 --- a/attach_amort.html +++ b/attach_amort.html @@ -53,4 +53,4 @@ assign_code="result_code" transactions=$linked_transactions }} -{{:redirect to="amortization.html?immo_id=%s&ok=1&msg=attach&trans_id=%s"|args:$_GET.immo_id:$amort_id}} +{{:redirect force="amortization.html?immo_id=%s&ok=1&msg=attach&trans_id=%s"|args:$_GET.immo_id:$amort_id}} diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index e4aadca..3a56e4a 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -57,7 +57,11 @@ {{/select}} {{if $amort_line.amort_number == 0}} - {{:assign amort_amount=0}} + {{if $info_immo.status == "amortized"}} + {{:assign amort_amount=$ligne_immo.montant}} + {{else}} + {{:assign amort_amount=0}} + {{/if}} {{else}} {{:assign amort_amount=$amort_line.amort_amount}} {{:assign date_debut=$amort_line.last_amort_date|strtotime}} @@ -67,19 +71,22 @@ {{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$amort_amount}} {{* - lister les exercices qui englobent la date de début du prochain amortissement +lister les exercices ouverts : + - dont la date de fin est postérieure à la date du dernier amortissment + - dont la date de début est antérieure ou égale à la date du jour *}} {{:assign default_exit_date=""}} -{{#years closed=false order="start_date" where="start_date <= :debut AND :debut <= end_date" - :debut=$date_debut assign=years.}} +{{#years closed=false order="start_date" where=":debut <= end_date" :debut=$date_debut}} {{if $start_date|strtotime <= $now && $now <= $end_date|strtotime}} {{:assign default_exit_date=$now|date_short}} {{/if}} - {{:assign ts_fin=$end_date|strtotime}} + {{if $start_date|strtotime > $now}} + {{:break}} + {{/if}} + {{:assign var="years." id=$id label=$label start_date=$start_date end_date=$end_date}} {{: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}} @@ -141,6 +148,7 @@ {{* 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}} + {{:assign msg_amort=""}} {{#foreach from=$years}} {{if $id == $_POST.id_year}} {{:assign selected_year=$id}} @@ -149,10 +157,20 @@ {{:break}} {{/if}} {{/if}} + + {{* voir si des amortissements ont été oubliés *}} + {{if $info_immo.status != "amortized" && $start_date|strtotime > $amort_line.last_amort_date|strtotime && $end_date|strtotime < $now}} + {{:assign debut=$start_date|date_short}} + {{:assign fin=$end_date|date_short}} + {{:assign msg_amort=$msg_amort|cat:"\n"|cat:" - "|cat:$label|cat:" : du "|cat:$debut|cat:" au "|cat:$fin}} + {{/if}} {{/foreach}} {{if ! $ok}} {{:error message="La date choisie n'est pas dans l'exercice sélectionné !"}} {{/if}} + {{if $msg_amort != ""}} + {{:error message="Vous devez d'abord enregistrer les amortissements des exercices suivants : %s"|args:$msg_amort}} + {{/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}} @@ -160,7 +178,7 @@ {{:admin_header title="Sortie de bilan" custom_css="./style.css" current="module_amortissement"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="balance_exit"}} + {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="balance_exit"}} {{/if}} {{:form_errors}} diff --git a/compute_exit_data.html b/compute_exit_data.html index 6672a69..f046e77 100644 --- a/compute_exit_data.html +++ b/compute_exit_data.html @@ -69,7 +69,7 @@
Date de mise en service
{{$_GET.date_mes|date:"d/m/Y"}}
{{/if}} - {{if $_GET.duree_amort != null}} + {{if $_GET.duree_amort != null && $_GET.duree_amort != 0}}
Durée de l'amortissement
{{$_GET.duree_amort}} ans
{{/if}} diff --git a/config.html b/config.html new file mode 100644 index 0000000..6506ce9 --- /dev/null +++ b/config.html @@ -0,0 +1,191 @@ +{{* -*- brindille -*- *}} + +{{:admin_header title="Configuration" custom_css="./style.css" current="module_amortissement"}} +{{* barre de navigation *}} +{{:include file="_nav.html" current="config"}} +{{if $_GET.ok == 1}} +

Configuration enregistrée.

+{{/if}} + +{{* lecture config (défaut ou enregistrée) *}} +{{:include file="./_get_config.html" keep="config"}} + +{{#form on="save"}} + {{:assign ok=0}} + {{#foreach from=$_POST.immo_accounts item="line"}} + {{:assign elem=$line|values}} + {{:assign elem=$elem.0}} + {{:assign var="fields" value=$elem|explode:" "}} + {{:assign present=false}} + {{* ne pas garder si préfixe d'un compte déjà présent *}} + {{#foreach from=$account_codes item="code"}} + {{:assign pos=$code|strpos:$fields.0}} + {{if $pos !== false}} + {{:assign present=true}} + {{:break}} + {{/if}} + {{/foreach}} + {{if ! $present}} + {{:assign var="account_codes." value=$fields.0}} + {{/if}} + {{/foreach}} + + {{:save + key="config" + prefixes=$account_codes|sort + }} + {{:assign ok=1}} + + {{:redirect to="./config.html?ok=%d"|args:$ok}} +{{/form}} + +{{* récupérer l'exercice courant *}} +{{:assign var="selected_year" from="logged_user.preferences.accounting_year}} +{{if $selected_year == null}} + {{* sélectionner l'exercice le plus probable *}} + {{#years closed=false order="start_date"}} + {{:assign var="open_years.%d"|args:$id value=$label}} + {{if $start_date|strtotime <= $now && $end_date|strtotime >= $now}} + {{:assign selected_year=$id}} + {{:break}} + {{/if}} + {{/years}} +{{/if}} + +{{* libellés des comptes d'immobilisation *}} +{{:assign condition="("}} +{{#foreach from=$config.prefixes item="code"}} + {{:assign code=$code|quote_sql}} + {{:assign condition=$condition|cat:" account.code = "|cat:$code|cat:" OR "}} +{{/foreach}} +{{:assign condition=$condition|cat:"0)"}} +{{:assign condition=$condition|cat:" AND year.id = %s"|args:$selected_year}} + +{{#select + account.id as account_id, + account.code, + account.id_chart, + account.label, + year.label as year_label, + chart.label as chart_label + FROM acc_accounts AS account + INNER JOIN acc_charts AS chart ON chart.id = account.id_chart + INNER JOIN acc_years AS year ON year.id_chart = chart.id + WHERE !condition + ; + !condition=$condition + }} + {{:assign var="accounts.%s"|args:$code label=$label id=$account_id}} +{{/select}} + +

Comptes d'immobilisation

+
+ +

+ Les immobilisations sont cherchées dans les comptes sélectionnées et leurs sous-comptes. +

+ + + + + + + + + + {{#foreach from=$accounts key=code item=elem}} + + + + + {{/foreach}} + + + + + + + +
Compte
+ {{:assign var="immo_account.%s.%s"|args:$code:$code value="%s — "|args:$code|cat:$elem.label}} + {{:assign var="current_account" from="immo_account.%s"|args:$code}} + {{*:debug immo_account=$immo_account current_account=$current_account*}} + {{:input + type="list" + name="immo_accounts[]" + target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code::$selected_year + default=$current_account + }} + + {{:button + label="Enlever" + title="Enlever une ligne" + shape="minus" + min="1" + name="remove_line" + }} +
{{:button shape="plus" label="Ajouter" title="Ajouter un compte"}}
+ +

+ {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} +

+
+ + + + + diff --git a/defaut.json b/defaut.json index 5c00d9b..06771a5 100644 --- a/defaut.json +++ b/defaut.json @@ -1,8 +1,8 @@ { "tva": false, - "prefixes": { - "20": "Immobilisations incorporelles", - "21": "Immobilisations corporelles", - "27": "Immobilisations financières" - } + "prefixes": [ + "20", + "21", + "27" + ] } diff --git a/index.html b/index.html index 11373b9..27fd870 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,22 @@ {{* -*- brindille -*- *}} -{{:admin_header title="Immobilisations et amortissements" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if $_GET.type_immo == null}} - {{:assign type_immo="encours"}} + {{:assign type_immo="managed"}} {{else}} {{:assign type_immo=$_GET.type_immo}} {{/if}} + {{if $type_immo == "managed"}} + {{:admin_header title="Immobilisations en cours" 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="Autres immobilisations" custom_css="./style.css" current="module_amortization"}} + {{/if}} + {{:include file="_nav.html" current="index" subcurrent="%s"|args:$type_immo}} {{if $_GET.ok}} @@ -34,11 +43,11 @@ {{/select}} {{/load}} -{{if $type_immo == "autre"}} +{{if $type_immo == "other"}} {{:include file="_immobilisations_autres.html"}} -{{elseif $type_immo == "archive"}} +{{elseif $type_immo == "archived"}} {{:include file="_archives.html"}} -{{elseif $type_immo == "encours" || $type_immo == "fini"}} +{{elseif $type_immo == "managed" || $type_immo == "amortized"}} {{:include file="_immobilisations.html"}} {{/if}} diff --git a/other_amortizations.html b/other_amortizations.html new file mode 100644 index 0000000..84d6eaa --- /dev/null +++ b/other_amortizations.html @@ -0,0 +1,112 @@ +{{* -*- brindille -*- *}} + +{{* + Lister les écritures d'amortissement indépendantes + et proposer des les attacher à l'immo sélectionnée + @param immo_id = id de la ligne d'immo + *}} + +{{* récupérer les infos de l'immobilisation *}} +{{#select + line.id as immo_id, + line.debit as montant, + trans.id as trans_id, + trans.label as label, + trans.date + 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}} + +{{#select + line.id as l_id, + line.id_transaction as t_id, + line.credit as amort_amount, + line.label as l_label, + trans.date as t_date, + trans.label as t_label, + trans.id_year as amort_year, + account.id as account_id, + account.code as account_code, + account.label as account_label + FROM acc_transactions_lines AS line + INNER JOIN acc_accounts AS account ON account.id = line.id_account + INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction + INNER JOIN acc_years AS y ON y.id = trans.id_year + WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) + ORDER BY trans.date, trans.label; + assign=autre_amort +}} + {{#select + id_transaction, + id_related + FROM acc_transactions_links + WHERE id_transaction = :id_amort OR id_related = :id_amort; + :id_amort=$t_id + }} + {{else}} + {{:assign var="autres_amortissements." value=$autre_amort}} + {{/select}} +{{/select}} + +{{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortissement"}} + +{{* barre de navigation *}} +{{if ! $dialog}} + {{:include + file="_nav.html" + current="index" + subcurrent="other" + subsubcurrent="amortization" + type_immo="other" + autres_amort=$autres_amortissements +}} +{{/if}} + +{{if $autres_amortissements != null}} +
+

Immobilisation « {{$ligne_immo.label}} »

+ + + + + + + + + + + + + + {{#foreach from=$autres_amortissements item="line"}} + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.t_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} + + + + + + + + + + {{/foreach}} + +
DateMontantLibelléN° compteCompte
#{{$line.t_id}}{{$line.t_date|date_short}}{{"%f"|math:$line.amort_amount|money}}{{if $line.l_label == null}} + {{$line.t_label}} + {{else}} + {{$line.l_label}} + {{/if}} + {{$line.account_code}}{{$line.account_label}} + {{:linkbutton label="Attacher" href="attach_amort.html?amort_id=%d&immo_id=%d"|args:$line.l_id:$_GET.immo_id shape="plus"}} +
+
+{{/if}} +{{:form_errors}} +{{:admin_footer}} diff --git a/save_amort.html b/save_amort.html index 1c9df59..7ad6b50 100644 --- a/save_amort.html +++ b/save_amort.html @@ -149,8 +149,7 @@ *}} {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} - {{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} - {{#foreach from=$prefix_array item="code"}} + {{#foreach from=$config_defaut.prefixes item="code"}} {{* déterminer le numéro du compte d'amortissement associé au compte d'immobilisation *}} {{:include file="./_get_amort_code.html" @@ -214,7 +213,7 @@ {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="encours" subsubcurrent="amortization"}} + {{:include file="_nav.html" current="index" subcurrent="managed" subsubcurrent="amortization"}} {{/if}} {{:form_errors}} @@ -254,7 +253,7 @@ {{:input type="list" name="credit_account" - label="Compte d'amortissement (280xx ou 281xx)" + label="Compte d'amortissement (28xx)" required=true target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"28*":$selected_year default=$credit_account diff --git a/schema.json b/schema.json index ea8e31c..4279385 100644 --- a/schema.json +++ b/schema.json @@ -21,7 +21,7 @@ }, "status" : { "type" : ["string", "null"], - "enum" : ["managed", "archived", "ignored"] + "enum" : ["managed", "amortized", "archived", "ignored"] } }, "required": ["type", "line", "duration", "date"] diff --git a/scripts.js b/scripts.js index 232df76..3d91074 100644 --- a/scripts.js +++ b/scripts.js @@ -139,3 +139,21 @@ function setSelectorYear(button_names, f_years_selector) { const selected_year = document.getElementById(f_years_selector).value; setAccountYear(button_names, selected_year); } + +// config : gestion des ajouts/suppression comptes immo + +function initLine(row) { + var removeBtn = row.querySelector('button[name="remove_line"]'); + removeBtn.onclick = () => { + var count = $('.transaction-lines tbody tr').length; + var min = removeBtn.getAttribute('min'); + + if (count <= min) { + alert("Il n'est pas possible d'avoir moins de " + min + " compte(s)."); + return false; + } + + row.parentNode.removeChild(row); + return true; + }; +} diff --git a/style.css b/style.css index c9c23f9..fd1cbfb 100644 --- a/style.css +++ b/style.css @@ -41,3 +41,7 @@ h2[class="aide"], h3[class="aide"] { nav.amort aside { margin-top : 0; } + +.describe dt::after { + content: ' :'; +} diff --git a/write_exit.html b/write_exit.html index 023fb14..9d0b553 100644 --- a/write_exit.html +++ b/write_exit.html @@ -260,7 +260,7 @@ }} {{/if}} - {{:redirect to="index.html?type_immo=archive"}} + {{:redirect to="index.html?type_immo=archived"}} {{/form}} {{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}} @@ -311,9 +311,8 @@ {{:read file="./defaut.json" assign="config_json"}} {{:assign config_defaut=$config_json|json_decode}} -{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} -{{#foreach from=$prefix_array item="code"}} +{{#foreach from=$config_defaut.prefixes item="code"}} {{:assign var="pattern_array." value="%s*"|args:$code}} {{/foreach}} {{:assign patterns=$pattern_array|implode:"|"}}