Compare commits

..

No commits in common. "7a41c43ea322497b4d855f22dc5cd5a4faf1e439" and "e7763d7cacc4142187f0a7c6e9dec3f65c1a0f8e" have entirely different histories.

14 changed files with 45 additions and 280 deletions

View file

@ -37,9 +37,10 @@
{{* Immobilisation avec une écriture de sortie de bilan *}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{:assign condition="("}}
{{#foreach from=$config_defaut.prefixes item="code"}}
{{#foreach from=$prefix_array item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign condition=$condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}}
@ -78,6 +79,8 @@
{{/select}}
<section class="immobilisation">
<h2 class="ruler">Immobilisations archivées</h2>
{{:assign nb_immo=0}}
<table class="list">
<thead>

View file

@ -1,23 +0,0 @@
{{* -*- brindille -*- *}}
{{*
Récupérer la config
*}}
{{* config par défaut *}}
{{:read file="./defaut.json" assign="config_defaut"}}
{{:assign config_defaut=$config_defaut|json_decode}}
{{*
{{if $module.config.tva != null}}
{{:assign var="config.tva" value=$module.config.tva}}
{{else}}
{{:assign var="config.tva" value=$config_defaut.tva}}
{{/if}}
*}}
{{if $module.config.prefixes != null}}
{{:assign var="config.prefixes" value=$module.config.prefixes}}
{{else}}
{{:assign var="config.prefixes" value=$config_defaut.prefixes}}
{{/if}}

View file

@ -3,6 +3,11 @@
{{* Liste des immobilisations en cours ou amorties *}}
<section class="immobilisation">
{{if $type_immo == "managed"}}
<h2 class="ruler">Immobilisations en cours</h2>
{{elseif $type_immo == "amortized"}}
<h2 class="ruler">Immobilisations amorties</h2>
{{/if}}
{{:assign nb_immo=0}}
<table class="list">
@ -23,8 +28,9 @@
{{* lister les immobilisations *}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{:assign condition="("}}
{{#foreach from=$config_defaut.prefixes item="code"}}
{{#foreach from=$prefix_array item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign condition=$condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}}

View file

@ -3,12 +3,9 @@
{{* Liste des immobilisations non amortissables ou non (encore) gérées *}}
<section class="immobilisation">
<h2 class="ruler">Autres immobilisations</h2>
{{:assign nb_immo=0}}
<p class="help">
Cette page liste les écritures pas (encore) prises en charges par le module ou classées non amortissables
</p>
<form method="post" action="">
<fieldset>
{{:input type="checkbox" value=1 name="unhide" label="Afficher les écritures marquées ignorées" }}
@ -32,8 +29,9 @@
{{* lister les immobilisations *}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{:assign condition="("}}
{{#foreach from=$config_defaut.prefixes item="code"}}
{{#foreach from=$prefix_array item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign condition=$condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}}

View file

@ -8,20 +8,21 @@
{{elseif $subsubcurrent == "amortization" && $type_immo == null || $type_immo == "managed" || $type_immo == "other"}}
<aside>
{{if $autres_amort != null}}
{{:linkbutton label="Rattacher une écriture" href="other_amortizations.html?immo_id=%s"|args:$_GET.immo_id shape="link" target="_dialog"}}
{{:linkbutton label="Attacher un amortissement" href="other_amortizations.html?immo_id=%s"|args:$_GET.immo_id shape="plus" target="_dialog"}}
{{/if}}
{{:linkbutton label="Enregistrer un amortissement" shape="plus"
href="save_amort.html?immo_id=%s"|args:$_GET.immo_id target="_dialog"}}
</aside>
{{/if}}
<ul>
<li {{if $subcurrent == "managed"}}class="current"{{/if}}><a href="index.html?type_immo=managed">En cours</a></li>
<li {{if $subcurrent == "amortized"}}class="current"{{/if}}><a href="index.html?type_immo=amortized">Amorties</a></li>
<li {{if $subcurrent == "archived"}}class="current"{{/if}}><a href="index.html?type_immo=archived">Sorties du bilan</a></li>
<li {{if $subcurrent == "other"}}class="current"{{/if}}><a href="index.html?type_immo=other">Autres</a></li>
<li {{if $current == "config"}} class="current"{{/if}}><a href="config.html">Configuration</a></li>
</ul>
{{if $current == "index"}} {{* && $subsubcurrent != "balance_exit" *}}
<ul>
<li {{if $subcurrent == "managed"}}class="current"{{/if}}><a href="index.html?type_immo=managed">En cours</a></li>
<li {{if $subcurrent == "amortized"}}class="current"{{/if}}><a href="index.html?type_immo=amortized">Amorties</a></li>
<li {{if $subcurrent == "archived"}}class="current"{{/if}}><a href="index.html?type_immo=archived">Sorties du bilan</a></li>
<li {{if $subcurrent == "other"}}class="current"{{/if}}><a href="index.html?type_immo=other">Autres</a></li>
</ul>
{{/if}}
{{if $subsubcurrent == "amortization"}}
<ul class="sub">

View file

@ -2,6 +2,7 @@
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{#years closed=false order="start_date" assign=years.}}
{{:assign ts_debut=$start_date|strtotime}}
@ -73,7 +74,7 @@
file="_check_account.html"
account=$debit_account
chart_id=$selected_chart
prefix_array=$config_defaut.prefixes
prefix_array=$prefix_array
keep="account_ok"
}}
@ -137,7 +138,7 @@
{{:assign var="projects.%d"|args:$id value=$label}}
{{/select}}
{{#foreach from=$config_defaut.prefixes item="code"}}
{{#foreach from=$prefix_array item="code"}}
{{:assign var="pattern_array." value="%s*"|args:$code}}
{{/foreach}}
{{:assign var="patterns" value=$pattern_array|implode:"|"}}

View file

@ -76,7 +76,7 @@
{{:form_errors}}
{{/form}}
{{:admin_header title="Informations amortissement" custom_css=$custom_css current="module_amortissement"}}
{{:admin_header title="Renseigner informations amortissement" custom_css=$custom_css current="module_amortissement"}}
{{* barre de navigation *}}
{{if ! $dialog}}
@ -100,19 +100,14 @@
- renseigner ou modifier la date de mise en service et la durée d'amortissement
*}}
<form method="post" action="">
<fieldset id="classement_immo">
<legend>Classement</legend>
<fieldset id="infos_immo">
<legend></legend>
<dl>
<dt><label>Faites un choix</label> <b>(obligatoire)</b></dt>
{{:input type="radio-btn" name="classify" value="managed" label="Amortir" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}}
{{:input type="radio-btn" name="classify" value="amortized" label="Amortissement terminé" help="Cette immobilisation sera classée parmi les immobilisations amorties" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}}
{{:input type="radio-btn" name="classify" value="ignored" label="Ignorer l'écriture" help="Cette écriture n'apparaitra plus dans la liste des immobilisations" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}}
</dl>
</fieldset>
{{:input type="radio" name="classify" value="managed" label="Amortir" help="Amortir cette immobilisation" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}}
{{:input type="radio" name="classify" value="amortized" label="Amortissement terminé" help="Cette immobilisation sera classée parmi les immobilisations amorties" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}}
{{:input type="radio" name="classify" value="ignored" label="Ignorer l'écriture" help="Cette écriture n'apparaitra plus dans la liste des immobilisations" default=$default onclick="toggleInputs('div_inputs','f_classify_managed', 'f_classify_amortized')"}}
<fieldset id="infos_immo">
<legend>Informations</legend>
<dl>
{{if $info_immo != null}}
{{:assign date_defaut=$info_immo.date}}
{{:assign duree_defaut=$info_immo.duration}}

View file

@ -1,191 +0,0 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Configuration" custom_css="./style.css" current="module_amortissement"}}
{{* barre de navigation *}}
{{:include file="_nav.html" current="config"}}
{{if $_GET.ok == 1}}
<p class="block confirm">Configuration enregistrée.</p>
{{/if}}
{{* lecture config (défaut ou enregistrée) *}}
{{:include file="./_get_config.html" keep="config"}}
{{#form on="save"}}
{{:assign ok=0}}
{{#foreach from=$_POST.immo_accounts item="line"}}
{{:assign elem=$line|values}}
{{:assign elem=$elem.0}}
{{:assign var="fields" value=$elem|explode:" "}}
{{:assign present=false}}
{{* ne pas garder si préfixe d'un compte déjà présent *}}
{{#foreach from=$account_codes item="code"}}
{{:assign pos=$code|strpos:$fields.0}}
{{if $pos !== false}}
{{:assign present=true}}
{{:break}}
{{/if}}
{{/foreach}}
{{if ! $present}}
{{:assign var="account_codes." value=$fields.0}}
{{/if}}
{{/foreach}}
{{:save
key="config"
prefixes=$account_codes|sort
}}
{{:assign ok=1}}
{{:redirect to="./config.html?ok=%d"|args:$ok}}
{{/form}}
{{* récupérer l'exercice courant *}}
{{:assign var="selected_year" from="logged_user.preferences.accounting_year}}
{{if $selected_year == null}}
{{* sélectionner l'exercice le plus probable *}}
{{#years closed=false order="start_date"}}
{{:assign var="open_years.%d"|args:$id value=$label}}
{{if $start_date|strtotime <= $now && $end_date|strtotime >= $now}}
{{:assign selected_year=$id}}
{{:break}}
{{/if}}
{{/years}}
{{/if}}
{{* libellés des comptes d'immobilisation *}}
{{:assign condition="("}}
{{#foreach from=$config.prefixes item="code"}}
{{:assign code=$code|quote_sql}}
{{:assign condition=$condition|cat:" account.code = "|cat:$code|cat:" OR "}}
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND year.id = %s"|args:$selected_year}}
{{#select
account.id as account_id,
account.code,
account.id_chart,
account.label,
year.label as year_label,
chart.label as chart_label
FROM acc_accounts AS account
INNER JOIN acc_charts AS chart ON chart.id = account.id_chart
INNER JOIN acc_years AS year ON year.id_chart = chart.id
WHERE !condition
;
!condition=$condition
}}
{{:assign var="accounts.%s"|args:$code label=$label id=$account_id}}
{{/select}}
<h3>Comptes d'immobilisation</h3>
<form method="post" action="">
<p class="help">
Les immobilisations sont cherchées dans les comptes sélectionnées et leurs sous-comptes.
</p>
<table class="list transaction-lines" id="asset_prefixes">
<thead>
<tr>
<td>Compte</td>
<td></td>
</tr>
</thead>
<tbody>
{{#foreach from=$accounts key=code item=elem}}
<tr>
<td>
{{:assign var="immo_account.%s.%s"|args:$code:$code value="%s — "|args:$code|cat:$elem.label}}
{{:assign var="current_account" from="immo_account.%s"|args:$code}}
{{*:debug immo_account=$immo_account current_account=$current_account*}}
{{:input
type="list"
name="immo_accounts[]"
target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code::$selected_year
default=$current_account
}}
</td>
<td class="actions">
{{:button
label="Enlever"
title="Enlever une ligne"
shape="minus"
min="1"
name="remove_line"
}}
</td>
</tr>
{{/foreach}}
</tbody>
<tfoot>
<tr>
<td></td>
<td class="actions">{{:button shape="plus" label="Ajouter" title="Ajouter un compte"}}</td>
</tr>
</tfoot>
</table>
<p class="submit">
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
</p>
</form>
<script type="text/javascript" src="scripts.js"></script>
<script type="text/javascript">
function remove_line(idtable, code) {
let trouve = false, row = null;
const table = document.getElementById(idtable);
for (let i = 0; i < table.rows.length; ++i) {
row = table.rows[i];
for (let j = 0; j < row.cells.length; ++j) {
const col = row.cells[j];
if (col.innerText == code) {
trouve = true;
break;
}
}
if (trouve) { break; }
}
if (row != null) {
row.parentNode.removeChild(row);
}
}
</script>
<script type="text/javascript" async="async">
// bouton - : supprimer une ligne
var lines = $('.transaction-lines tbody tr');
lines.forEach(initLine);
// bouton + : dupliquer une ligne
$('.transaction-lines tfoot button')[0].onclick = () => {
let lines = $('.transaction-lines tbody tr');
var line = lines[lines.length - 1];
var n = line.cloneNode(true);
// Réinitialiser le sélecteur de compte
let b = n.querySelector('.input-list button');
let url = b.value;
let new_url = url.replace(/codes=[0-9]+\*?/, "codes=2*");
b.value = new_url;
// gestionnaire d'événement
b.onclick = () => {
g.current_list_input = b.parentNode;
let url = b.value + (b.value.indexOf('?') > 0 ? '&' : '?') + '_dialog';
g.openFrameDialog(url);
return false;
};
// réinitialiser le label
let l = n.querySelector('.input-list span.label');
console.log("label=" + l.innerText);
l.innerText = '';
line.parentNode.appendChild(n);
initLine(n);
};
</script>

View file

@ -1,8 +1,8 @@
{
"tva": false,
"prefixes": [
"20",
"21",
"27"
]
"prefixes": {
"20": "Immobilisations incorporelles",
"21": "Immobilisations corporelles",
"27": "Immobilisations financières"
}
}

View file

@ -1,4 +1,5 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Immobilisations et amortissements" custom_css="./style.css" current="module_amortization"}}
{{* barre de navigation *}}
{{if $_GET.type_immo == null}}
@ -7,16 +8,6 @@
{{:assign type_immo=$_GET.type_immo}}
{{/if}}
{{if $type_immo == "managed"}}
{{:admin_header title="Immobilisations en cours" custom_css="./style.css" current="module_amortization"}}
{{elseif $type_immo == "amortized"}}
{{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}}
{{elseif $type_immo == "archived"}}
{{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}}
{{elseif $type_immo == "other"}}
{{:admin_header title="Autres immobilisations" custom_css="./style.css" current="module_amortization"}}
{{/if}}
{{:include file="_nav.html" current="index" subcurrent="%s"|args:$type_immo}}
{{if $_GET.ok}}

View file

@ -1,5 +1,5 @@
name="Amortissements"
description="Immobilisations et amortissements"
description="Gestion des amortissements pour le logiciel de comptabilité Paheko"
author="Jean-Christophe Engel"
author_url="https://gitea.zaclys.com/lesanges"
home_button=false

View file

@ -149,7 +149,8 @@
*}}
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{#foreach from=$config_defaut.prefixes item="code"}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{#foreach from=$prefix_array item="code"}}
{{* déterminer le numéro du compte d'amortissement associé au compte d'immobilisation *}}
{{:include
file="./_get_amort_code.html"
@ -253,7 +254,7 @@
{{:input
type="list"
name="credit_account"
label="Compte d'amortissement (28xx)"
label="Compte d'amortissement (280xx ou 281xx)"
required=true
target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"28*":$selected_year
default=$credit_account

View file

@ -139,21 +139,3 @@ function setSelectorYear(button_names, f_years_selector) {
const selected_year = document.getElementById(f_years_selector).value;
setAccountYear(button_names, selected_year);
}
// config : gestion des ajouts/suppression comptes immo
function initLine(row) {
var removeBtn = row.querySelector('button[name="remove_line"]');
removeBtn.onclick = () => {
var count = $('.transaction-lines tbody tr').length;
var min = removeBtn.getAttribute('min');
if (count <= min) {
alert("Il n'est pas possible d'avoir moins de " + min + " compte(s).");
return false;
}
row.parentNode.removeChild(row);
return true;
};
}

View file

@ -260,7 +260,7 @@
}}
{{/if}}
{{:redirect to="index.html?type_immo=archived"}}
{{:redirect to="index.html?type_immo=sortie"}}
{{/form}}
{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}}
@ -311,8 +311,9 @@
{{:read file="./defaut.json" assign="config_json"}}
{{:assign config_defaut=$config_json|json_decode}}
{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
{{#foreach from=$config_defaut.prefixes item="code"}}
{{#foreach from=$prefix_array item="code"}}
{{:assign var="pattern_array." value="%s*"|args:$code}}
{{/foreach}}
{{:assign patterns=$pattern_array|implode:"|"}}