+ Cette page liste les immobilisations pas encore prises en charge + par le module ou les écritures de la balance d'ouverture initiale + dont le montant n'est pas encore totalement affecté +
-- Cette page liste les écritures pas (encore) prises en charge par le module et sans écriture d'amortissement associée. -
+{{:assign saved_hides=$module.config.hides}} +{{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}} - {{:assign saved_hides=$module.config.hides}} - {{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}} - - {{if $_POST|count == 0}} - {{:assign unhide=$user_hides.unhide_other}} +{{if $_POST|count == 0}} + {{:assign unhide=$user_hides.unhide_other}} +{{else}} + {{if $_POST.unhide == null}} + {{:assign unhide=0}} {{else}} - {{if $_POST.unhide == null}} - {{:assign unhide=0}} - {{else}} - {{:assign unhide=1}} + {{:assign unhide=1}} + {{/if}} + {{:assign var="user_hides.unhide_other" value=$unhide"}} + {{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}} + {{:save key="config" hides=$saved_hides}} +{{/if}} +{{if $unhide}} + {{:assign checked="checked"}} +{{/if}} + +{{* vérifier l'existence de la table du module *}} +{{if $module.table != null}} + {{:assign columns="$$.status as status, SUM($$.amount) as amount,"}} + {{:assign table_join="LEFT JOIN !table AS info ON $$.line = line.id"}} + {{:assign doc_condition="($$.status IS NULL OR $$.status == 'managed' OR $$.status == 'ignored')"}} +{{else}} + {{:assign columns=""}} + {{:assign table_join=""}} + {{:assign doc_condition="1"}} +{{/if}} + +{{* + lister les immobilisations non prises en charge par le module + ou dont le montant n'a pas été totalement affecté +*}} +{{: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)"}} + +{{if $unhide == null}} + {{:assign filter_condition="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)"}} +{{else}} + {{:assign filter_condition="1"}} +{{/if}} + +{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND "|cat:$filter_condition|cat:" AND "|cat:$doc_condition}} + +{{:assign nb_managed=0}} +{{:assign nb_ignored=0}} +{{:assign nb_null=0}} +{{:assign nb_other=0}} +{{#select + trans.id as immo_trans_id, + trans.label as trans_label, + trans.date as trans_date, + line.id as immo_line_id, + line.debit AS debit, + line.label AS line_label, + account.id as account_id, + account.code as account_code, + account.label as account_label, + !columns + 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 + !table_join + WHERE !condition + GROUP BY immo_line_id + ORDER BY trans.date DESC; + !columns=$columns + !table_join=$table_join + !table=$module.table + !condition=$condition + assign="immo_line" + }} + {{* + parmi les immos gérées, ne conserver que celles dont le montant dans le doc est non nul + et inférieur au montant de l'écriture d'immo + *}} + {{if $immo_line.status == 'managed'}} + {{if $immo_line.amount == null || $immo_line.amount == 0 || $immo_line.amount == $immo_line.debit}} + {{:continue}} {{/if}} - {{:assign var="user_hides.unhide_other" value=$unhide"}} - {{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}} - {{:save key="config" hides=$saved_hides}} {{/if}} - {{if $unhide}} - {{:assign checked="checked"}} + {{if $status == null}} + {{:assign nb_null="%d+1"|math:$nb_null}} + {{elseif $status == 'managed'}} + {{:assign nb_managed="%d+1"|math:$nb_managed}} + {{elseif $status == 'ignored'}} + {{:assign nb_ignored="%d+1"|math:$nb_ignored}} + {{else}} + {{:assign nb_other="%d+1"|math:$nb_other}} {{/if}} - + {{:assign var="immo_lines." value=$immo_line}} +{{/select}} +{{*:debug lines=$immo_lines nb_lines=$immo_lines|count nb_null=$nb_null nb_managed=$nb_managed nb_ignored=$nb_ignored nb_other=$nb_other unhide=$unhide*}} -| N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
|---|
| N° | +Ligne | +Date | +Libellé | +Montant | +Affecté | +Reste | +N° compte | +Compte | ++ |
|---|---|---|---|---|---|---|---|---|---|
| #{{$immo_trans_id}} | -{{$trans_date|date_short}} | -{{$trans_label}}{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}} | -{{"%f"|math:$debit|money_html:false|raw}} | -{{$account_code}} | -{{$account_label}} | -- {{:linkbutton - label="Paramètres" - href="add_infos.html?immo_line_id=%s&type_immo=other"|args:$immo_line_id - shape="settings" - target="_dialog" - }} - | -
Aucune immobilisation
- {{/if}} - + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.immo_trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.trans_id_year}} + {{:assign reste="%d-%d"|math:$line.debit:$line.amount}} +Aucune immobilisation
+{{/if}} diff --git a/link.schema.json b/link.schema.json new file mode 100644 index 0000000..1524b55 --- /dev/null +++ b/link.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Schéma des liens entre documents", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["amort_link", "immo_link"] + }, + "immo_doc_id" : { + "description": "identifiant du document d'immobilisation associé", + "type" : "integer", + "exclusiveMinimum": 0 + }, + "amort_line_id" : { + "description": "numéro de ligne d'amortissement associée à l'immobilisation", + "type": "integer", + "exclusiveMinimum": 0 + }, + "credit_line_id": { + "description": "numéro de ligne au crédit du compte de l'immobilisation", + "type": "integer", + "exclusiveMinimum": 0 + }, + "amount": { + "description": "montant de la ligne d'amortissement ou de crédit", + "type": ["number", "null"] + } + }, + "required": ["type", "immo_doc_id"], + "if": {"properties": {"type": {"const": "amort_link"}}, "required": ["type"]}, + "then": {"required": ["amort_line_id"]}, + "else": + "if": {"properties": {"type": {"const": "immo_link"}}, "required": ["type"]}, + "then": {"required": ["credit_line_id"]}, +} diff --git a/schema.json b/schema.json index 2acebc3..23a924b 100644 --- a/schema.json +++ b/schema.json @@ -14,11 +14,20 @@ "description": "durée de l'amortissement en années", "type": "integer" }, + "label" : { + "description" : "libellé de l'immobilisation si besoin", + "type" : ["string", "null"] + }, "amount" : { "description": "montant de l'immobilisation si besoin", "type": ["integer", "null"] }, - "date" : { + "date_achat" : { + "description" : "date d'achat de l'immobilisation si besoin", + "type" : ["string", "null"], + "format" : "date" + }, + "date_mes" : { "description" : "date de mise en service de l'immobilisation", "type" : ["string", "null"], "format" : "date" @@ -28,5 +37,5 @@ "enum" : ["managed", "amortized", "archived", "ignored"] } }, - "required": ["type", "line", "duration", "date"] + "required": ["type", "line", "duration", "status"] }