diff --git a/_check_account.html b/_check_account.html new file mode 100644 index 0000000..ccf54e1 --- /dev/null +++ b/_check_account.html @@ -0,0 +1,36 @@ +{{* -*- brindille -*- *}} + +{{* + vérifier : + - que le compte débute par le préfixe corect + (20 ou 21 pour un compte d'immo, 280 ou 281 pour un compte d'amortissement) + - est présent dans le PC indiqué + paramètres : + - account : tableau avec un identifiant de compte + - chart_id : identifiant de plan comptable + - prefix_array : tableau des préfixes + résultat : + - account_ok +*}} + +{{#foreach from=$account key="account_code"}} + {{:assign account_code=$account_code}} +{{/foreach}} + +{{:assign condition=" AND ("}} +{{#foreach from=$prefix_array item="code"}} + {{:assign condition=$condition|cat:" code LIKE "|cat:$code|cat:" OR "}} +{{/foreach}} +{{:assign condition=$condition|cat:"0)"}} + +{{#sql + select="code" + tables="acc_accounts" + where="id_chart = :id_chart %s"|args:$condition + :id_chart = $selected_chart|intval +}} + {{if $account_code == $code}} + {{:assign account_ok=1}} + {{:break}} + {{/if}} +{{/sql}} diff --git a/_check_date.html b/_check_date.html new file mode 100644 index 0000000..1afaf8d --- /dev/null +++ b/_check_date.html @@ -0,0 +1,23 @@ +{{* -*- brindille -*- *}} + +{{* + vérifier que la date est située dans un exercice ouvert + paramètres : + - date + résultat : open_years, selected_year, selected_chart +*}} + +{{:assign open_years=""}} +{{#years closed=false}} + {{:assign open_years=$open_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "}} + {{:assign debut=$start_date|date_short}} + {{:assign fin=$end_date|date_short}} + {{:assign open_years=$open_years|cat:$debut|cat:" à "|cat:$fin}} + {{if + $start_date|strtotime <= $date|parse_date|strtotime && + $end_date|strtotime >= $date|parse_date|strtotime + }} + {{:assign selected_year=$id}} + {{:assign selected_chart=$id_chart}} + {{/if}} +{{/years}} diff --git a/add_asset.html b/add_asset.html index ecaac5b..6869d8a 100644 --- a/add_asset.html +++ b/add_asset.html @@ -10,20 +10,8 @@ {{#form on="add"}} {{* vérifier que la date est située dans un exercice ouvert *}} - {{:assign open_years=""}} - {{#years closed=false}} - {{:assign open_years=$open_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "}} - {{:assign debut=$start_date|date_short}} - {{:assign fin=$end_date|date_short}} - {{:assign open_years=$open_years|cat:$debut|cat:" à "|cat:$fin}} - {{if - $start_date|strtotime <= $_POST.date|parse_date|strtotime && - $end_date|strtotime >= $_POST.date|parse_date|strtotime - }} - {{:assign selected_year=$id}} - {{:assign selected_chart=$id_chart}} - {{/if}} - {{/years}} + {{:include file="_check_date.html" date=$_POST.date keep="open_years, selected_year, selected_chart"}} + {{if $selected_year == null}} {{:assign message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$open_years}} {{:error message=$message}} @@ -33,23 +21,15 @@ - que le compte d'immo débute par 20 ou 21 - est présent dans le PC de l'exercice correspondant à la date *}} - {{#foreach from=$_POST.debit_account key="account_code"}} - {{:assign account_code=$account_code}} - {{/foreach}} - - {{#select - code - FROM acc_accounts - WHERE id_chart = :id_chart - AND - (code LIKE "20%" OR code LIKE "21%"); - :id_chart = $selected_chart|intval - }} - {{if $account_code == $code}} - {{:assign account_ok=1}} - {{:break}} - {{/if}} - {{/select}} + {{:assign var="prefix_array." value="'20%'"}} + {{:assign var="prefix_array." value="'21%'"}} + {{:include + file="_check_account.html" + account=$_POST.debit_account + chart_id=$selected_chart + prefix_array=$prefix_array + keep="account_ok" + }} {{if $account_ok == null}} {{:assign compte=$_POST.debit_account|implode:""}} diff --git a/amortization.html b/amortization.html index f8d9e0d..dccea2c 100644 --- a/amortization.html +++ b/amortization.html @@ -214,7 +214,7 @@ {{if $enregistrer == 1}} {{:linkbutton label="Enregistrer" - href="save_amort.html?amount=%d&account=%s&year=%s&trans_id=%d&immo_id=%s&project_id=%d&label=%s"|args:$annuite_courante:$ligne_immo.account_id:$current_year:$ligne_immo.trans_id:$_GET.immo_id:$project_id:$libelle + href="save_amort.html?amount=%d&account=%s&year=%s&trans_id=%d&immo_id=%s&project_id=%d&label=%s&solde=%d"|args:$annuite_courante:$ligne_immo.account_id:$current_year:$ligne_immo.trans_id:$_GET.immo_id:$project_id:$libelle:$solde shape="right" target="_dialog" }} diff --git a/save_amort.html b/save_amort.html index 6eb4d70..52f9065 100644 --- a/save_amort.html +++ b/save_amort.html @@ -9,6 +9,40 @@ {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} + + {{* vérifier que la date est située dans un exercice ouvert *}} + {{:include file="_check_date.html" date=$_POST.date keep="open_years, selected_year, selected_chart"}} + + {{if $selected_year == null}} + {{:assign message="La date choisie n'est dans aucun exercice ouvert !!\nExercices ouverts : %s"|args:$open_years}} + {{:error message=$message}} + {{/if}} + + {{* vérifier : + - que le compte d'amortissement débute par 280 ou 281 + - est présent dans le PC de l'exercice correspondant à la date + *}} + {{:assign var="prefix_array." value="'280%'"}} + {{:assign var="prefix_array." value="'281%'"}} + {{:include + file="_check_account.html" + account=$_POST.credit_account + chart_id=$selected_chart + prefix_array=$prefix_array + keep="account_ok" + }} + + {{if $account_ok == null}} + {{:assign compte=$_POST.credit_account|implode:""}} + {{:error message="Le compte « %s » n'est pas un compte d'immobilisation ou n'est pas dans le plan comptable de l'exercice choisi"|args:$compte}} + {{/if}} + + {{* vérifier que le montant ne dépasse pas le solde restant *}} + {{:assign solde="%f/100"|math:$_GET.solde}} + {{if $_POST.montant > $solde}} + {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$_POST.montant:$solde}} + {{/if}} + {{* enregistrer l'écriture *}} {{:assign var="linked_transactions." value=$_GET.trans_id}} @@ -32,7 +66,7 @@ path="accounting/transaction" assign="result" assign_code="result_code" - id_year=$_POST.id_year|intval + id_year=$selected_year type="advanced" date=$_POST.date label=$_POST.designation @@ -43,6 +77,8 @@ {{:redirect force="amortization.html?immo_id=%s&ok=1&msg=amortissement"|args:$_GET.immo_id}} {{/form}} +{{:form_errors}} + {{* Préparer les infos pour le formulaire *}} {{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}} @@ -73,7 +109,6 @@
Ajouter une écriture d'amortissement
- {{:input type="select" default=$year.id name="id_year" label="Exercice" required=true options=$open_years}} {{:input type="date" name="date" label="Date" required=true default=$year.date_amort|date_short}} {{:input type="text" name="designation" label="Désignation" required=true default=$_GET.label}} {{:input type="money" name="montant" label="Montant" required=true default=$_GET.amount}}