diff --git a/_archives.html b/_archives.html index da3f19c..be33053 100644 --- a/_archives.html +++ b/_archives.html @@ -93,9 +93,7 @@ {{/select}} {{/load}} - {{* 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 - *}} + {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} {{:assign credit_immo=null}} {{:assign total_credits=0}} {{#load diff --git a/_get_amort_lines.html b/_get_amort_lines.html new file mode 100644 index 0000000..a985fa2 --- /dev/null +++ b/_get_amort_lines.html @@ -0,0 +1,39 @@ +{{* -*- 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 new file mode 100644 index 0000000..2bef7fb --- /dev/null +++ b/_get_credit_lines.html @@ -0,0 +1,31 @@ +{{* -*- 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_free_amort.html b/_get_free_amort.html new file mode 100644 index 0000000..a3373a4 --- /dev/null +++ b/_get_free_amort.html @@ -0,0 +1,46 @@ +{{* -*- brindille -*- *}} + +{{* + lister les amortissement non rattachés à une immo + @param filter_condition +*}} +{{#select + line.id as line_id, + line.id_transaction as trans_id, + line.credit as amount, + line.label as line_label, + trans.date as trans_date, + trans.label as trans_label, + 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_accounts AS account ON account.id = line.id_account + INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction + WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) AND !filter_condition + ORDER BY trans.date, trans.label; + !filter_condition=$filter_condition + assign="amort_line" +}} + {{* 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.line_id|intval + assign="amort_link" + }} + {{if $amort_link.amount == null || $amort_link.amount == 0}} + {{:assign amort_amount=$amort_line.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_line.amount}} + {{:assign var="free_amort_lines." value=$amort_line}} + {{/if}} +{{/select}} diff --git a/_get_immo_data.html b/_get_immo_data.html new file mode 100644 index 0000000..513ec0b --- /dev/null +++ b/_get_immo_data.html @@ -0,0 +1,39 @@ +{{* -*- 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 1546725..e78fbfd 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -77,10 +77,7 @@ {{:assign label_immo=$label_immo|cat:" — "|cat:$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 - *}} + {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} {{#load type="credit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id @@ -102,24 +99,9 @@ {{:continue}} {{/if}} - {{* 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}} + {{* 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}} {{* classement par onglet *}} {{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}} diff --git a/_unfinished.html b/_unfinished.html index ab561a9..edbd320 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 dui solde l'immo (montant = montant immo - avoir + - il y a une écriture qui 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 1af7148..3efc74f 100644 --- a/amortization.html +++ b/amortization.html @@ -7,62 +7,28 @@ *}} {{* données de l'immobilisation *}} -{{#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}} +{{: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}} +{{: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.label}} +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_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.montant" value=$info_immo.amount}} + {{:assign var="ligne_immo.amount" value=$info_immo.amount}} {{/if}} {{if $info_immo.status == 'ignored'}} {{:error message="Cette immobilisation ne doit pas être amortie"}} {{/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 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}} +{{* 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}} {{if $info_immo.status == "amortized"}} {{:assign amort_amount=$solde}} @@ -71,71 +37,13 @@ {{:assign valeur_residuelle=$solde}} {{/if}} -{{* 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}} +{{* 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}} {{if $valeur_residuelle > 0}} - {{* 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}} + {{* lister les amortissements non rattachés à une immo *}} + {{:include file="./_get_free_amort.html" filter_condition="1" keep="free_amort_lines"}} {{/if}} {{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} @@ -199,7 +107,7 @@