diff --git a/_immobilisations.html b/_immobilisations.html index 5b257f4..fa31b31 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -82,7 +82,7 @@ et déduire leur montant de celui de l'immo *}} {{#load - type="credit_link" + type="immo_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id }} {{if $amount == null}} @@ -143,7 +143,7 @@ {{:linkbutton label="Détails" href="details_immo.html?immo_doc_id=%s"|args:$immo_doc_id - shape="eye" + shape="search" }} {{* target="_dialog"*}} {{*/if*}} diff --git a/add_asset.html b/add_asset.html index f4800f2..2ee28bd 100644 --- a/add_asset.html +++ b/add_asset.html @@ -108,11 +108,6 @@ {{/if}} {{:assign duration=$_POST.duree|intval}} {{:assign status="managed"}} - {{if $_POST.date_mes == null || $_POST.date_mes == $_POST.date_achat}} - {{:assign date_mes=null}} - {{else}} - {{:assign date_mes=$_POST.date_mes|date_short}} - {{/if}} {{/if}} {{* enregistrer l'écriture *}} @@ -146,7 +141,7 @@ type="immo" line=$immo_line_id duration=$duration - date_mes=$date_mes + date_mes=$date_debut status=$status }} {{/if}} diff --git a/add_infos.html b/add_infos.html index a6c96ea..a8beee0 100644 --- a/add_infos.html +++ b/add_infos.html @@ -60,11 +60,6 @@ {{:assign status="ignored"}} {{else}} - {{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}} - {{* vérifier que la date de mise en service est postérieure à la date d'acquisition *}} {{:assign d1=$_POST.date_achat|or:$ligne_immo.date_achat|parse_date}} {{:assign d2=$_POST.date_mes|or:$d1|parse_date}} @@ -131,6 +126,7 @@ date_achat=$date_achat date_mes=$date_mes status=$status + assign_new_id="new_id" }} {{if $_POST.amortir}} @@ -140,13 +136,14 @@ {{/if}} {{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}} {{/form}} +{{:form_errors}} {{:admin_header title="Classer l'immobilisation" custom_css="./style.css" current="module_amortization"}} + {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} {{/if}} -{{:form_errors}} {{:assign choix_defaut=$_GET.type_immo}} @@ -177,12 +174,7 @@
diff --git a/attach_immo.html b/attach_immo.html index a824041..3fa8001 100644 --- a/attach_immo.html +++ b/attach_immo.html @@ -52,7 +52,7 @@ {{* montant de l'écriture de crédit déjà affecté *}} {{:assign montant_affecte=0}} -{{#load type="credit_link" assign="linked_immo." +{{#load type="immo_link" assign="linked_immo." where="$$.credit_line_id = :credit_line_id" :credit_line_id = $_GET.credit_line_id|intval }} @@ -114,7 +114,7 @@ {{* enregistrer la liaison des lignes d'immo *}} {{:save key=""|uuid - type="credit_link" + type="immo_link" immo_doc_id=$_GET.immo_doc_id|intval credit_line_id=$_GET.credit_line_id|intval amount=$saved_credit diff --git a/link.schema.json b/link.schema.json index 88968ed..1524b55 100644 --- a/link.schema.json +++ b/link.schema.json @@ -5,7 +5,7 @@ "properties": { "type": { "type": "string", - "enum": ["amort_link", "credit_link", "exit_link"] + "enum": ["amort_link", "immo_link"] }, "immo_doc_id" : { "description": "identifiant du document d'immobilisation associé", @@ -13,17 +13,12 @@ "exclusiveMinimum": 0 }, "amort_line_id" : { - "description": "ligne d'amortissement associée à l'immobilisation", + "description": "numéro de ligne d'amortissement associée à l'immobilisation", "type": "integer", "exclusiveMinimum": 0 }, "credit_line_id": { - "description": "ligne au crédit du compte de l'immobilisation", - "type": "integer", - "exclusiveMinimum": 0 - }, - "exit_line_id": { - "description": "ligne d'amortissement de sortie du bilan de l'immobilisation", + "description": "numéro de ligne au crédit du compte de l'immobilisation", "type": "integer", "exclusiveMinimum": 0 }, @@ -36,9 +31,6 @@ "if": {"properties": {"type": {"const": "amort_link"}}, "required": ["type"]}, "then": {"required": ["amort_line_id"]}, "else": - "if": {"properties": {"type": {"const": "credit_link"}}, "required": ["type"]}, + "if": {"properties": {"type": {"const": "immo_link"}}, "required": ["type"]}, "then": {"required": ["credit_line_id"]}, - "else": - "if": {"properties": {"type": {"const": "exit_link"}}, "required": ["type"]}, - "then": {"required": ["exit_line_id"]}, } diff --git a/link_immo.html b/link_immo.html index ef12192..3543ab8 100644 --- a/link_immo.html +++ b/link_immo.html @@ -38,6 +38,7 @@ {{* lister les écritures au crédit du compte de l'immobilisation + variante : utiliser une jointure ; pas forcément plus efficace *}} {{#select line.id as credit_line_id, @@ -56,12 +57,14 @@ 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 = :account_code AND credit > 0 - 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") + AND credit_trans_id NOT IN ( + SELECT + CASE WHEN id_transaction = credit_trans_id THEN id_transaction + ELSE id_related + END AS other_id + FROM acc_transactions_links WHERE other_id = credit_trans_id) ORDER BY trans.date, trans.label; :account_code = $ligne_immo.account_code - !table =$module.table assign="other_immos." }} {{/select}} diff --git a/modify_infos.html b/modify_infos.html deleted file mode 100644 index 2016a52..0000000 --- a/modify_infos.html +++ /dev/null @@ -1,255 +0,0 @@ -{{* -*- brindille -*- *}} -{{:admin_header title="Modifier l'immobilisation" custom_css="./style.css" current="module_amortization"}} - -{{* - @param immo_line_id - @param immo_doc_id - ¿ @param type_immo : managed, amortized, archived, other ? - - TODO : - - ¿ faire une ligne modifiable pour chaque avoir avec un bouton de suppression ? - - séparer les cas des immo simples et complexes (BOI) - par exemple pour la durée d'amort par défaut {{:input ...}} - - prise en charge immo => param = immo_line_id - - modif param immo => param = immo_doc_id -*}} - -{{* données de l'immobilisation *}} -{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/load}} -{{#select - trans.id as immo_trans_id, - trans.label as trans_label, - trans.date as date_achat, - line.debit as montant, - line.label as line_label, - acc.code, - acc.label as account_label - FROM acc_transactions_lines AS line - INNER join acc_transactions AS trans ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE line.id = :line_id; - :line_id = $info_immo.line - assign="ligne_immo" - }} -{{else}} - {{:error message="Immobilisation non trouvée"}} -{{/select}} -{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.montant}} - -{{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} - {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{* - chercher des écritures liées à l'immo courante au crédit du même compte - et déduire leur montant de celui de l'immo -*}} -{{:assign linked_immos=null}} -{{:assign total_credits=0}} -{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} - {{#select - line.credit, - trans.id - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE line.id = :credit_line_id; - :credit_line_id=$credit_line_id - }} - {{:assign credit=$credit}} - {{:assign credit_trans_id=$id}} - {{/select}} - {{:assign var="linked_immos." value=$credit_trans_id}} - {{if $amount == null}} - {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} - {{else}} - {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} - {{/if}} -{{/load}} -{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}} - -{{:assign autres_amount=0}} -{{#load - type="immo" - where="$$.line = :line_id AND id != :doc_id" - :line_id = $info_immo.line - :doc_id = $info_immo.id - }} - {{:assign autres_amount="%d+%d"|math:$autres_amount:$amount}} -{{/load}} -{{:assign max_disponible="%d-%d"|math:$ligne_immo.montant:$autres_amount}} - -{{* traiter la saisie *}} -{{#form on="save"}} - {{if ! $_POST.amortir}} - {{* ne pas amortir *}} - {{:assign duration=0}} - {{:assign libelle=null}} - {{:assign montant=null}} - {{:assign date_achat=null}} - {{:assign date_mes=null}} - {{:assign status="ignored"}} - {{else}} - {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} - {{:assign date_achat=null}} - {{elseif $_POST.date_achat|parse_date == $info_immo.date_achat}} - {{:assign date_achat=$info_immo.date_achat}} - {{else}} - {{:assign date_achat=$_POST.date_achat|parse_date}} - {{/if}} - {{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_mes == null || $_POST.date_mes|parse_date == $ligne_immo.date_achat}} - {{:assign date_mes=null}} - {{elseif $_POST.date_mes|parse_date == $info_immo.date_achat}} - {{:assign date_mes=null}} - {{else}} - {{:assign date_mes=$_POST.date_mes|parse_date}} - {{:assign date_achat_comp=$ligne_immo.date_achat}} - {{if $date_achat != null}} - {{:assign date_achat_comp=$date_achat}} - {{/if}} - {{if $date_mes < $date_achat_comp}} - {{:assign da=$date_achat_comp|date_short}} - {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$_POST.date_mes:$da}} - {{/if}} - {{/if}} - - {{:assign duration=$_POST.duree|intval}} - {{if $duration <= 0}} - {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} - {{/if}} - - {{if $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}} - {{:assign libelle=$_POST.libelle}} - {{else}} - {{:assign libelle=null}} - {{/if}} - - {{:assign montant=null}} - {{if $_POST.montant == null || $_POST.montant|money_int == 0 || $_POST.montant|money_int == $info_immo.amount}} - {{:assign montant=$info_immo.amount}} - {{else}} - {{:assign montant=$_POST.montant|money_int}} - {{if $montant < 0 || $montant > $max_disponible}} - {{:assign montant_aff="%f"|math:$montant|money_currency:false}} - {{:assign max_aff="%f"|math:$max_disponible|money_currency:false}} - {{:error message="Le montant (%s) doit être positif et ne peut être supérieur à %s"|args:$montant_aff:$max_aff}} - {{/if}} - {{/if}} - - {{:assign status="managed"}} - {{/if}} - - {{* enregistrer les infos de l'immobilisation *}} - {{:save - key=$info_immo.key - validate_schema="schema.json" - type="immo" - line=$info_immo.line - duration=$duration - label=$libelle - amount=$montant - date_achat=$date_achat - date_mes=$date_mes - status=$status - assign_new_id="new_id" - }} - - {{if $_POST.amortir}} - {{:assign type_immo="managed"}} - {{else}} - {{:assign type_immo="other"}} - {{/if}} - {{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}} -{{/form}} -{{:form_errors}} - -{{* barre de navigation *}} -{{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} -{{/if}} - -{{:assign choix_defaut=$_GET.type_immo}} - -{{* - modifier la date de mise en service, les écritures associées ou la durée d'amortissement -*}} - -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} -