diff --git a/_archives.html b/_archives.html index be33053..da3f19c 100644 --- a/_archives.html +++ b/_archives.html @@ -93,7 +93,9 @@ {{/select}} {{/load}} - {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} + {{* 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 credit_immo=null}} {{:assign total_credits=0}} {{#load diff --git a/_get_amort_lines.html b/_get_amort_lines.html deleted file mode 100644 index a985fa2..0000000 --- a/_get_amort_lines.html +++ /dev/null @@ -1,39 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - lister les lignes d'amortissement liées à la ligne d'immobilisation - @param immo_doc_id : id du doc associé à l'immobilisation - @result linked_amort : lignes d'amortissement liées à la ligne d'immobilisation - @result total_amort : montant total des amortissements de l'immobilisation -*}} - -{{:assign total_amort=0}} -{{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $immo_doc_id|intval - assign="amort_info" -}} - {{#select - line.id as line_id, - line.credit as amount, - line.label as line_label, - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - trans.id_year as 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_transactions AS trans ON line.id_transaction = trans.id - INNER join acc_accounts AS account on line.id_account = account.id - WHERE line.id = :amort_line_id - ; - :amort_line_id = $amort_line_id - assign="amort_line" - }} - {{:assign var="amort_line.amount" value=$amort_info.amount|or:$amort_line.amount}} - {{:assign var="linked_amort.%s_%d"|args:$amort_line.date:$amort_info.id value=$amort_line}} - {{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amount}} - {{/select}} -{{/load}} diff --git a/_get_credit_lines.html b/_get_credit_lines.html deleted file mode 100644 index 2bef7fb..0000000 --- a/_get_credit_lines.html +++ /dev/null @@ -1,31 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - chercher des écritures liées à l'immo paramètre au crédit du même compte - @param immo_doc_id : id du doc associé à l'immobilisation - @param linked_immos : liste des écritures liées - @param total_credits : montant total des écritures -*}} -{{:assign linked_immos=null}} -{{:assign total_credits=0}} -{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$immo_doc_id|intval}} - {{#select - line.credit, - line.id as line_id, - trans.id as trans_id, - trans.label, - trans.date - 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 var="linked_immos." doc=$id trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date}} - {{/select}} - {{if $amount == null}} - {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} - {{else}} - {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} - {{/if}} -{{/load}} diff --git a/_get_immo_data.html b/_get_immo_data.html deleted file mode 100644 index 513ec0b..0000000 --- a/_get_immo_data.html +++ /dev/null @@ -1,39 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Récupérer les infos d'une immobilisation - @param immo_doc_id : id du document associé à l'immobilisation - @result info_immo : infos du document associé - @result ligne_immo : données de la base - @result message non null si une erreur s'est produite -*}} - -{{#load id=$immo_doc_id|intval assign="info_immo"}} -{{else}} - {{:assign error=true}} - {{:assign message="Immobilisation non trouvée"}} -{{/load}} - -{{if ! $error}} - {{#select - line.id as line_id, - line.debit as amount, - line.label as line_label, - line.id_project as id_project, - trans.id as trans_id, - trans.label as trans_label, - trans.date as date_achat, - account.id as account_id, - account.code as account_code, - account.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 account ON line.id_account = account.id - WHERE line.id = :line_id; - :line_id = $info_immo.line - assign="ligne_immo" - }} - {{else}} - {{:assign message="Immobilisation non trouvée"}} - {{/select}} -{{/if}} diff --git a/_immobilisations.html b/_immobilisations.html index e78fbfd..1546725 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -77,7 +77,10 @@ {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}} {{/if}} - {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} + {{* + 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 + *}} {{#load type="credit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id @@ -99,9 +102,24 @@ {{:continue}} {{/if}} - {{* montant des amortissements liés à l'immobilisation *}} - {{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}} - {{:assign amort_amount=$total_amort}} + {{* chercher des lignes des écritures d'amortissement liées à la ligne d'immobilisation *}} + {{:assign amort_lines=null}} + {{:assign amort_amount=0}} + {{#load type="amort_link" + where="$$.immo_doc_id = :immo_doc_id" + :immo_doc_id = $immo_doc_id + assign="amort_link" + }} + {{if $amount == null}} + {{#select credit FROM acc_transactions_lines WHERE id = :amort_line_id; + :amort_line_id = $amort_line_id + }} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$credit}} + {{/select}} + {{else}} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$amount}} + {{/if}} + {{/load}} {{* classement par onglet *}} {{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}} diff --git a/_unfinished.html b/_unfinished.html index edbd320..ab561a9 100644 --- a/_unfinished.html +++ b/_unfinished.html @@ -129,7 +129,7 @@ {{* TODO cas où : - il y a (au moins) une écriture d'avoir - - il y a une écriture qui solde l'immo (montant = montant immo - avoir + - il y a une écriture dui solde l'immo (montant = montant immo - avoir *}} {{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}} diff --git a/amortization.html b/amortization.html index 3efc74f..1af7148 100644 --- a/amortization.html +++ b/amortization.html @@ -7,28 +7,62 @@ *}} {{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} +{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}} +{{else}} + {{:error message="Immobilisation non trouvée"}} +{{/load}} + +{{#select + line.id as immo_line_id, + line.debit as montant, + line.label as line_label, + trans.id as immo_trans_id, + trans.label as label, + trans.date as date_achat, + account.code as account_code, + account.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 account ON line.id_account = account.id + WHERE line.id = :line_id; + :line_id = $info_immo.line + assign="ligne_immo" + }} +{{else}} + {{:error message="Immobilisation non trouvée"}} +{{/select}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} -{{: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}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{: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}} + {{:assign var="ligne_immo.montant" value=$info_immo.amount}} {{/if}} {{if $info_immo.status == 'ignored'}} {{:error message="Cette immobilisation ne doit pas être amortie"}} {{/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="%d-%d"|math:$ligne_immo.amount:$total_credits}} +{{* + 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 total_credits=0}} +{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} + {{if $amount == null}} + {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id; + :credit_line_id=$credit_line_id + }} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} + {{/select}} + {{else}} + {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} + {{/if}} +{{/load}} +{{:assign solde="%d-%d"|math:$ligne_immo.montant:$total_credits}} {{if $info_immo.status == "amortized"}} {{:assign amort_amount=$solde}} @@ -37,13 +71,71 @@ {{:assign valeur_residuelle=$solde}} {{/if}} -{{* 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"}} -{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} +{{* lister les lignes des écritures d'amortissement liées à l'immobilisation *}} +{{#load type="amort_link" + where="$$.immo_doc_id = :immo_doc_id" + :immo_doc_id = $_GET.immo_doc_id|intval +}} + {{#select + line.id as amort_line_id, + line.credit, + line.label as amort_line_label, + trans.id as amort_trans_id, + trans.label as amort_trans_label, + trans.date as amort_date, + 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_transactions AS trans ON line.id_transaction = trans.id + INNER join acc_accounts AS account on line.id_account = account.id + WHERE line.id = :amort_line_id + ; + :amort_line_id = $amort_line_id + assign="amort_line" + }} + {{:assign var="amort_line.amort_amount" value=$amount|or:$credit}} + {{:assign var="linked_amort.%s_%d"|args:$amort_date:$id value=$amort_line}} + {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_line.amort_amount}} + {{/select}} +{{/load}} {{if $valeur_residuelle > 0}} - {{* lister les amortissements non rattachés à une immo *}} - {{:include file="./_get_free_amort.html" filter_condition="1" keep="free_amort_lines"}} + {{* Chercher des amortissements non rattachés à une immo *}} + {{#select + line.id as amort_line_id, + line.id_transaction AS amort_trans_id, + line.credit as amort_amount + 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="amort" + }} + {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} + {{:assign amort_amount=0}} + {{:assign keep_amort=true}} + {{#load type="amort_link" + where="$$.amort_line_id = :amort_line_id" + :amort_line_id = $amort_line_id + assign="amort_link" + }} + {{if $amort_link.amount == null || $amort_link.amount == 0}} + {{:assign amort_amount=$amort.amort_amount}} + {{:assign keep_amort=false}} + {{else}} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} + {{/if}} + {{else}} + {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} + {{/load}} + {{if $keep_amort && $amort_amount < $amort.amort_amount}} + {{:assign var="free_amort_lines." value=$amort}} + {{/if}} + {{/select}} {{/if}} {{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} @@ -107,7 +199,7 @@