Overview
Comment:General ledger
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: 65893d90e5dd44a35f233a5b6e3aaadf208d521f
User & Date: bohwaz on 2020-10-09 10:15:39
Other Links: branch diff | manifest | tags
Context
2020-10-09
11:05
Add year journal check-in: 58411fe14f user: bohwaz tags: dev
10:15
General ledger check-in: 65893d90e5 user: bohwaz tags: dev
2020-10-08
13:47
Simplified view for favorite accounts check-in: 5d47c23bff user: bohwaz tags: dev
Changes

Added src/include/lib/Garradin/Accounting/Reports.php version [085a5801bf].













































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php

namespace Garradin\Accounting;

use Garradin\Entities\Accounting\Account;
use Garradin\Entities\Accounting\Line;
use Garradin\Entities\Accounting\Transaction;
use Garradin\Utils;
use Garradin\DB;
use KD2\DB\EntityManager;

class Reports
{
	static public function getClosingSumsWithAccounts(int $year_id): array
	{
		// Find sums, link them to accounts
		$sql = sprintf('SELECT l.id_account, a.code AS account_code, a.label AS account_name, SUM(l.credit) AS credit, SUM(l.debit) AS debit
			FROM %s l
			INNER JOIN %s t ON t.id = l.id_transaction
			INNER JOIN %s a ON a.id = l.id_account
			WHERE t.id_year = %d GROUP BY l.id_account;',
			Line::TABLE, Transaction::TABLE, Account::TABLE, $year_id);
		return DB::getInstance()->getGrouped($sql);
	}

	static public function getClosingSums(int $year_id): array
	{
		$year = Years::get($year_id);

		if (true || $year->closed) {
			return self::computeClosingSums($year->id());
		}
		else {
			// Get the ID of the account used to store closing sums
			$closing_account_id = $db->firstColumn(sprintf('SELECT id FROM %s WHERE id_chart = ? AND type = ?;', Account::TABLE, $year->id_chart, Account::TYPE_CLOSING));

			// Find sums, link them to accounts
			$sql = sprintf('SELECT b.id_account, SUM(a.credit) - SUM(a.debit)
				FROM %s a
				INNER JOIN %s b ON b.id_transaction = a.id_transaction
				WHERE a.id_account = %d AND a.id_year = %d;', Line::TABLE, Line::TABLE, $closing_account_id, $year_id);
			return DB::getInstance()->getAssoc($sql);
		}
	}

	static protected function computeClosingSums(int $year_id): array
	{
		// Find sums, link them to accounts
		$sql = sprintf('SELECT l.id_account, SUM(l.credit) - SUM(l.debit)
			FROM %s l
			INNER JOIN %s t ON t.id = l.id_transaction
			WHERE t.id_year = %d GROUP BY l.id_account;', Line::TABLE, Transaction::TABLE, $year_id);
		return DB::getInstance()->getAssoc($sql);
	}

	/**
	 * Grand livre
	 */
	static public function getGeneralLedger(array $criterias): \Generator
	{
		if (!empty($criterias['year'])) {
			$year_id = (int)$criterias['year'];
			$where = sprintf('t.id_year = %d', $year_id);
		}
		else {
			throw new \LogicException('Unknown criteria');
		}

		$db = DB::getInstance();

		$sql = sprintf('SELECT t.id_year, l.id_account, l.debit, l.credit, t.id, t.date, t.reference, l.reference AS line_reference, t.label, l.label AS line_label
			FROM acc_transactions t
			INNER JOIN acc_transactions_lines l ON l.id_transaction = t.id
			INNER JOIN acc_accounts a ON a.id = l.id_account
			WHERE %s
			ORDER BY a.code COLLATE NOCASE, t.date;', $where);

		$account = null;
		$debit = $credit = 0;
		$accounts = $db->getGrouped('SELECT id, code, label FROM acc_accounts WHERE id_chart = (SELECT id_chart FROM acc_years WHERE id = ?);', $year_id);

		foreach ($db->iterate($sql) as $row) {
			if (null !== $account && $account->id != $row->id_account) {
				yield $account;
				$account = null;
			}

			if (null === $account) {
				$account = (object) [
					'code'  => $accounts[$row->id_account]->code,
					'label' => $accounts[$row->id_account]->label,
					'id'    => $row->id_account,
					'sum'   => 0,
					'debit' => 0,
					'credit'=> 0,
					'lines' => [],
				];
			}

			$row->date = \DateTime::createFromFormat('Y-m-d', $row->date);

			$account->sum += ($row->credit - $row->debit);
			$account->debit += $row->debit;
			$account->credit += $row->credit;
			$debit += $row->debit;
			$credit += $row->credit;
			$row->running_sum = $account->sum;


			$account->lines[] = $row;
		}

		$account->all_debit = $debit;
		$account->all_credit = $credit;

		yield $account;
	}
}

Modified src/templates/acc/accounts/journal.tpl from [4795a14551] to [799d98c204].

1
2

3







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{include file="admin/_head.tpl" title="Journal : %s - %s"|args:$account.code:$account.label current="acc/accounts" body_id="rapport"}


{include file="acc/_year_select.tpl"}








{if $account.type}
<nav class="tabs">
    <ul>
        <li{if $simple_view} class="current"{/if}><a href="{$admin_url}acc/accounts/journal.php?id={$account.id}&amp;simple=1">Vue simplifiée</a></li>
        <li{if !$simple_view} class="current"{/if}><a href="{$admin_url}acc/accounts/journal.php?id={$account.id}&amp;simple=0">Vue normale</a></li>
    </ul>
</nav>
{/if}

<table class="list">
    <colgroup>
        <col width="3%" />
        <col width="12%" />
        <col width="10%" />
        {if !$simple_view}<col width="10%" />{/if}
        <col width="12%" />
        <col />
        <col width="6%" />
    </colgroup>
    <thead>
        <tr>
            <td>N°</td>
            <td>Date</td>
            {if $simple_view}
            <td>Mouvement</td>
            {else}
            <td class="money">Débit</td>
            <td class="money">Crédit</td>
            {/if}
            <td>Solde cumulé</td>
            <th>Libellé</th>
            <td></td>
        </tr>
    </thead>
    <tbody>
    {foreach from=$journal item="line"}
        <tr>
            <td class="num"><a href="{$admin_url}acc/transactions/details.php?id={$line.id}">{$line.id}</a></td>
            <td>{$line.date|date_fr:'d/m/Y'}</td>
            {if $simple_view}
            <td class="money">{if $line.debit}-{$line.debit|escape|html_money}{else}+{$line.credit|escape|html_money}{/if}</td>
            {else}
            <td class="money">{if $line.debit}{$line.debit|escape|html_money}{/if}</td>
            <td class="money">{if $line.credit}{$line.credit|escape|html_money}{/if}</td>
            {/if}
            <td class="money">{$line.running_sum|escape|html_money}</td>
            <th>{$line.label}</th>
            <td class="actions">
                {linkbutton href="acc/transactions/details.php?id=%d"|args:$line.id label="Détails" shape="search"}
            </td>
        </tr>
    {/foreach}
    </tbody>
    <tfoot>
        <tr>
            <td colspan="{if $simple_view}3{else}4{/if}">Solde</td>
            <td class="money">{$sum|escape|html_money}</td>
            <td colspan="2"></td>
        </tr>
    </tfoot>
</table>

{include file="admin/_foot.tpl"}


>
|
>
>
>
>
>
>
>



|
|
|
|




|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{include file="admin/_head.tpl" title="Journal : %s - %s"|args:$account.code:$account.label current="acc/accounts" body_id="rapport"}

{if empty($year)}
	{include file="acc/_year_select.tpl"}
{else}
	<nav class="acc-year">
		<h4>Exercice sélectionné&nbsp;:</h4>
		<h3>{$current_year.label} — {$current_year.start_date|date_fr:'d/m/Y'} au {$current_year.end_date|date_fr:'d/m/Y'}</h3>
	</nav>
{/if}


{if $account.type}
<nav class="tabs">
	<ul>
		<li{if $simple_view} class="current"{/if}><a href="{$admin_url}acc/accounts/journal.php?id={$account.id}&amp;simple=1&amp;year={$year_id}">Vue simplifiée</a></li>
		<li{if !$simple_view} class="current"{/if}><a href="{$admin_url}acc/accounts/journal.php?id={$account.id}&amp;simple=0&amp;year={$year_id}">Vue normale</a></li>
	</ul>
</nav>
{/if}

<table class="list">
	<colgroup>
		<col width="3%" />
		<col width="12%" />
		<col width="10%" />
		{if !$simple_view}<col width="10%" />{/if}
		<col width="12%" />
		<col />
		<col width="6%" />
	</colgroup>
	<thead>
		<tr>
			<td>Réf.</td>
			<td>Date</td>
			{if $simple_view}
			<td>Mouvement</td>
			{else}
			<td class="money">Débit</td>
			<td class="money">Crédit</td>
			{/if}
			<td>Solde cumulé</td>
			<th>Libellé</th>
			<td></td>
		</tr>
	</thead>
	<tbody>
	{foreach from=$journal item="line"}
		<tr>
			<td class="num"><a href="{$admin_url}acc/transactions/details.php?id={$line.id}">{if $line.line_reference}{$line.line_reference}{elseif $line.reference}{$line.reference}{else}#{$line.id}{/if}</a></td>
			<td>{$line.date|date_fr:'d/m/Y'}</td>
			{if $simple_view}
			<td class="money">{if $line.debit}-{$line.debit|escape|html_money}{else}+{$line.credit|escape|html_money}{/if}</td>
			{else}
			<td class="money">{if $line.debit}{$line.debit|escape|html_money}{/if}</td>
			<td class="money">{if $line.credit}{$line.credit|escape|html_money}{/if}</td>
			{/if}
			<td class="money">{$line.running_sum|escape|html_money}</td>
			<th>{$line.label}</th>
			<td class="actions">
				{linkbutton href="acc/transactions/details.php?id=%d"|args:$line.id label="Détails" shape="search"}
			</td>
		</tr>
	{/foreach}
	</tbody>
	<tfoot>
		<tr>
			<td colspan="{if $simple_view}3{else}4{/if}">Solde</td>
			<td class="money">{$sum|escape|html_money}</td>
			<td colspan="2"></td>
		</tr>
	</tfoot>
</table>

{include file="admin/_foot.tpl"}

Modified src/templates/acc/reports/_header.tpl from [1061b17f5a] to [0cb7c8e906].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="exercice">
    <h2>{$config.nom_asso}</h2>
    {if isset($projet)}
        <h3>Projet&nbsp;: {$projet.libelle}</h3>
    {else}
        <p>Exercice comptable {if $exercice.cloture}clôturé{else}en cours{/if} du
            {$exercice.debut|date_fr:'d/m/Y'} au {$exercice.fin|date_fr:'d/m/Y'}, généré le {$cloture|date_fr:'d/m/Y'}</p>
    {/if}

	<p class="noprint">
		<button onclick="window.print(); return false;">
			<b href="#need_js" class="action icn print">⎙</b>
			Imprimer
		</button>
	</p>
</div>






|
|










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="exercice">
    <h2>{$config.nom_asso}</h2>
    {if isset($projet)}
        <h3>Projet&nbsp;: {$projet.libelle}</h3>
    {else}
        <p>Exercice comptable {if $year.closed}clôturé{else}en cours{/if} du
            {$year.start_date|date_fr:'d/m/Y'} au {$year.end_date|date_fr:'d/m/Y'}, généré le {$close_date|date_fr:'d/m/Y'}</p>
    {/if}

	<p class="noprint">
		<button onclick="window.print(); return false;">
			<b href="#need_js" class="action icn print">⎙</b>
			Imprimer
		</button>
	</p>
</div>

Name change from src/templates/admin/compta/rapports/_table_resultat.tpl to src/templates/acc/reports/_table_resultat.tpl.

Name change from src/templates/admin/compta/rapports/bilan.tpl to src/templates/acc/reports/bilan.tpl.

Name change from src/templates/admin/compta/rapports/compte_resultat.tpl to src/templates/acc/reports/compte_resultat.tpl.

Name change from src/templates/admin/compta/rapports/journal.tpl to src/templates/acc/reports/journal.tpl.

Modified src/templates/acc/reports/ledger.tpl from [9f320d7052] to [a65f313dac].

1
2
3
4
5
6
7
8
9
10
11

12
13

14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29
30

31
32
33
34

35
36
37
38
39
40
41

42
43
44

45
46
47
48
49
50

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

86
87
88
89
{include file="admin/_head.tpl" title="Grand livre" current="compta/exercices" body_id="rapport"}

{include file="admin/compta/rapports/_header.tpl"}

{foreach from=$livre.classes key="classe" item="comptes"}
<h3>{$classe|get_nom_compte}</h3>

{foreach from=$comptes item="compte" key="code"}
    {foreach from=$compte.comptes item="souscompte" key="souscode"}
    <table class="list">
        <caption><h4>{$souscode} — {$souscode|get_nom_compte}</h4></caption>

        <colgroup>
            <col width="15%" />

            <col width="55%" />
            <col width="10%" />
            <col width="10%" />
            <col width="10%" />
        </colgroup>
        <thead>
            <tr>

                <td>Date</td>
                <th>Intitulé</th>
                <td class="money">Débit</td>
                <td class="money">Crédit</td>
                <td class="money">Solde</td>
            </tr>
        </thead>
        <tbody>
        {foreach from=$souscompte.journal item="ligne"}
            <tr>

                <td>{$ligne.date|date_fr:'d/m/Y'}</td>
                <th>{$ligne.libelle}</th>
                <td class="money">{if $ligne.compte_debit == $souscode}{$ligne.montant|escape|html_money}{/if}</td>
                <td class="money">{if $ligne.compte_credit == $souscode}{$ligne.montant|escape|html_money}{/if}</td>

                <td class="money">{$ligne.solde|escape|html_money}</td>
            </tr>
        {/foreach}
        </tbody>
        <tfoot>
            <tr>
                <td></td>

                <th>Solde final</th>
                <td class="money">{if $souscompte.debit > 0}{$souscompte.debit|escape|html_money}{/if}</td>
                <td class="money">{if $souscompte.credit > 0}{$souscompte.credit|escape|html_money}{/if}</td>

                <td class="money">{$souscompte.solde|escape|html_money}</td>
            </tr>
        </tfoot>
    </table>
    {/foreach}


    <table class="list">
        <colgroup>
            <col width="15%" />
            <col width="65%" />
            <col width="10%" />
            <col width="10%" />
        </colgroup>
        <tfoot>
            <tr>
                <td>Total</td>
                <th>{$code|get_nom_compte}</th>
                <td>{if $compte.total > 0}{$compte.total|abs|escape|html_money}{/if}</td>
                <td>{if $compte.total < 0}{$compte.total|abs|escape|html_money}{/if}</td>
            </tr>
        </tfoot>
    </table>
    {/foreach}
{/foreach}

<table class="list">
    <colgroup>
        <col width="15%" />
        <col width="65%" />
        <col width="10%" />
        <col width="10%" />
    </colgroup>
    <tfoot>
        <tr>
            <td><strong>Total</strong></td>
            <th></th>
            <td>{$livre.debit|escape|html_money}</td>
            <td>{$livre.credit|escape|html_money}</td>
        </tr>
    </tfoot>
</table>


<p class="help">Toutes les opérations sont libellées en {$config.monnaie}.</p>

{include file="admin/_foot.tpl"}


|

|
<

<
<

<
>

|
>
|






>








|

>
|
<
|
|
>
|






>

<
|
>
|



<

>









|
|
|
|



|
<

<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
>




1
2
3
4
5

6


7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
39
40
41
42
43

44
45
46
47
48
49

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

69
















70
71
72
73
74
{include file="admin/_head.tpl" title="Grand livre" current="compta/exercices" body_id="rapport"}

{include file="acc/reports/_header.tpl"}

{foreach from=$ledger item="account"}




    <table class="list">

        <caption><h4><a href="{$admin_url}acc/accounts/journal.php?id={$account.id}&amp;year={$year.id}">{$account.code} — {$account.label}</h4></caption>
        <colgroup>
            <col width="10%" />
            <col width="10%" />
            <col width="50%" />
            <col width="10%" />
            <col width="10%" />
            <col width="10%" />
        </colgroup>
        <thead>
            <tr>
                <td>Réf.</td>
                <td>Date</td>
                <th>Intitulé</th>
                <td class="money">Débit</td>
                <td class="money">Crédit</td>
                <td class="money">Solde</td>
            </tr>
        </thead>
        <tbody>
        {foreach from=$account.lines item="line"}
            <tr>
                <td class="num"><a href="{$admin_url}acc/transactions/details.php?id={$line.id}">{if $line.line_reference}{$line.line_reference}{elseif $line.reference}{$line.reference}{else}#{$line.id}{/if}</a></td>
                <td>{$line.date|date_fr:'d/m/Y'}</td>

                <th>{$line.label}{if $line.line_label} <em>({$line.line_label})</em>{/if}</th>
                <td class="money">{if $line.debit}{$line.debit|escape|html_money}{/if}</td>
                <td class="money">{if $line.credit}{$line.credit|escape|html_money}{/if}</td>
                <td class="money">{$line.running_sum|escape|html_money}</td>
            </tr>
        {/foreach}
        </tbody>
        <tfoot>
            <tr>
                <td></td>
                <td></td>
                <th>Solde final</th>

                <td class="money">{if $account.debit}{$account.debit|escape|html_money}{/if}</td>
                <td class="money">{if $account.credit}{$account.credit|escape|html_money}{/if}</td>
                <td class="money">{$account.sum|escape|html_money}</td>
            </tr>
        </tfoot>
    </table>


{if isset($account->all_debit)}
    <table class="list">
        <colgroup>
            <col width="15%" />
            <col width="65%" />
            <col width="10%" />
            <col width="10%" />
        </colgroup>
        <tfoot>
            <tr>
                <td><strong>Total</strong></td>
                <th></th>
                <td>{$account.all_debit|escape|html_money}</td>
                <td>{$account.all_credit|escape|html_money}</td>
            </tr>
        </tfoot>
    </table>
{/if}


















{/foreach}

<p class="help">Toutes les opérations sont libellées en {$config.monnaie}.</p>

{include file="admin/_foot.tpl"}

Modified src/templates/acc/transactions/details.tpl from [83448201cc] to [22f535a92a].

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
..
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
	<dt>Date</dt>
	<dd>{$transaction.date|date_fr:'l j F Y (d/m/Y)'}</dd>
	<dt>Numéro pièce comptable</dt>
	<dd>{if trim($transaction.reference)}{$transaction.reference}{else}-{/if}</dd>

	<dt>Exercice</dt>
	<dd>
		<a href="{$admin_url}acc/years/year.php?id={$transaction.id_year}">{$tr_year.label}</a>
		| Du {$tr_year.start_date|date_fr:'d/m/Y'} au {$tr_year.end_date|date_fr:'d/m/Y'}
		| <strong>{if $tr_year.closed}Clôturé{else}En cours{/if}</strong>
	</dd>

	{if $transaction.id_projet}
		<dt>Projet</dt>
		<dd>
................................................................................
			<td>Libellé</td>
			<td>Référence</td>
		</tr>
	</thead>
	<tbody>
		{foreach from=$transaction->getLinesWithAccounts() item="line"}
		<tr>
			<td class="num"><a href="{$admin_url}acc/accounts/journal.php?id={$line.id_account}">{$line.account_code}</a></td>
			<td>{$line.account_name}</td>
            <td class="money">{if $line.debit}{$line.debit|escape|html_money}{/if}</td>
            <td class="money">{if $line.credit}{$line.credit|escape|html_money}{/if}</td>
			<td>{$line.label}</td>
			<td>{$line.reference}</td>
		</tr>
		{/foreach}
	</tbody>
</table>

{include file="admin/_foot.tpl"}







|







 







|











15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
..
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
	<dt>Date</dt>
	<dd>{$transaction.date|date_fr:'l j F Y (d/m/Y)'}</dd>
	<dt>Numéro pièce comptable</dt>
	<dd>{if trim($transaction.reference)}{$transaction.reference}{else}-{/if}</dd>

	<dt>Exercice</dt>
	<dd>
		<a href="{$admin_url}acc/reports/ledger.php?year={$transaction.id_year}">{$tr_year.label}</a>
		| Du {$tr_year.start_date|date_fr:'d/m/Y'} au {$tr_year.end_date|date_fr:'d/m/Y'}
		| <strong>{if $tr_year.closed}Clôturé{else}En cours{/if}</strong>
	</dd>

	{if $transaction.id_projet}
		<dt>Projet</dt>
		<dd>
................................................................................
			<td>Libellé</td>
			<td>Référence</td>
		</tr>
	</thead>
	<tbody>
		{foreach from=$transaction->getLinesWithAccounts() item="line"}
		<tr>
			<td class="num"><a href="{$admin_url}acc/accounts/journal.php?id={$line.id_account}&amp;year={$transaction.id_year}">{$line.account_code}</a></td>
			<td>{$line.account_name}</td>
            <td class="money">{if $line.debit}{$line.debit|escape|html_money}{/if}</td>
            <td class="money">{if $line.credit}{$line.credit|escape|html_money}{/if}</td>
			<td>{$line.label}</td>
			<td>{$line.reference}</td>
		</tr>
		{/foreach}
	</tbody>
</table>

{include file="admin/_foot.tpl"}

Modified src/templates/acc/years/index.tpl from [5080bc206e] to [3df707c5c9].

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
	{foreach from=$list item="year"}
		<dt>{$year.label}</dt>
		<dd class="desc">
			{if $year.closed}Clôturé{else}En cours{/if}
			| Du {$year.start_date|date_fr:'d/m/Y'} au {$year.end_date|date_fr:'d/m/Y'}
		</dd>
		<dd class="desc">
			<a href="{$admin_url}acc/reports/journal.php?exercice={$year.id}">Journal général</a>
			| <a href="{$admin_url}acc/reports/grand_livre.php?exercice={$year.id}">Grand livre</a>
			| <a href="{$admin_url}acc/reports/compte_resultat.php?exercice={$year.id}">Compte de résultat</a>
			| <a href="{$admin_url}acc/reports/bilan.php?exercice={$year.id}">Bilan</a>
		</dd>
		{if $session->canAccess('compta', Membres::DROIT_ADMIN) && !$year.closed}
		<dd class="actions">
			{linkbutton label="Balance d'ouverture" shape="reset" href="acc/years/balance.php?id=%d"|args:$year.id}
			{linkbutton label="Modifier" shape="edit" href="acc/years/edit.php?id=%d"|args:$year.id}
			{linkbutton label="Clôturer" shape="lock" href="acc/years/close.php?id=%d"|args:$year.id}
			{linkbutton label="Supprimer" shape="delete" href="acc/years/delete.php?id=%d"|args:$year.id}







|
|
|
|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
	{foreach from=$list item="year"}
		<dt>{$year.label}</dt>
		<dd class="desc">
			{if $year.closed}Clôturé{else}En cours{/if}
			| Du {$year.start_date|date_fr:'d/m/Y'} au {$year.end_date|date_fr:'d/m/Y'}
		</dd>
		<dd class="desc">
			<a href="{$admin_url}acc/reports/journal.php?year={$year.id}">Journal général</a>
			| <a href="{$admin_url}acc/reports/ledger.php?year={$year.id}">Grand livre</a>
			| <a href="{$admin_url}acc/reports/statement.php?year={$year.id}">Compte de résultat</a>
			| <a href="{$admin_url}acc/reports/balance_sheet.php?year={$year.id}">Bilan</a>
		</dd>
		{if $session->canAccess('compta', Membres::DROIT_ADMIN) && !$year.closed}
		<dd class="actions">
			{linkbutton label="Balance d'ouverture" shape="reset" href="acc/years/balance.php?id=%d"|args:$year.id}
			{linkbutton label="Modifier" shape="edit" href="acc/years/edit.php?id=%d"|args:$year.id}
			{linkbutton label="Clôturer" shape="lock" href="acc/years/close.php?id=%d"|args:$year.id}
			{linkbutton label="Supprimer" shape="delete" href="acc/years/delete.php?id=%d"|args:$year.id}

Modified src/www/admin/acc/accounts/journal.php from [f736bfd940] to [722ee1c065].

1
2
3
4

5
6
7
8
9
10
11
12
13












14
15
16
17
18
19
20
21
..
28
29
30
31
32
33
34

35
36
37
38
<?php
namespace Garradin;

use Garradin\Accounting\Accounts;


require_once __DIR__ . '/../_inc.php';

$account = Accounts::get((int) qg('id'));

if (!$account) {
    throw new UserException("Le compte demandé n'existe pas.");
}













$journal = $account->getJournal(CURRENT_YEAR_ID);
$sum = 0;

if (count($journal)) {
	$sum = end($journal)->running_sum;
}

/*
................................................................................
{
    $tpl->assign('credit', '+');
    $tpl->assign('debit', '-');
}
*/

$tpl->assign('simple_view', qg('simple'));

$tpl->assign('account', $account);
$tpl->assign('journal', $journal);
$tpl->assign('sum', $sum);
$tpl->display('acc/accounts/journal.tpl');




>









>
>
>
>
>
>
>
>
>
>
>
>
|







 







>




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
..
41
42
43
44
45
46
47
48
49
50
51
52
<?php
namespace Garradin;

use Garradin\Accounting\Accounts;
use Garradin\Accounting\Years;

require_once __DIR__ . '/../_inc.php';

$account = Accounts::get((int) qg('id'));

if (!$account) {
    throw new UserException("Le compte demandé n'existe pas.");
}

$year_id = (int) qg('year') ?: CURRENT_YEAR_ID;

if ($year_id !== CURRENT_YEAR_ID) {
	$year = Years::get($year_id);

	if (!$year) {
		throw new UserException("L'exercice demandé n'existe pas.");
	}

	$tpl->assign('year', $year);
}

$journal = $account->getJournal($year_id);
$sum = 0;

if (count($journal)) {
	$sum = end($journal)->running_sum;
}

/*
................................................................................
{
    $tpl->assign('credit', '+');
    $tpl->assign('debit', '-');
}
*/

$tpl->assign('simple_view', qg('simple'));
$tpl->assign('year_id', $year_id);
$tpl->assign('account', $account);
$tpl->assign('journal', $journal);
$tpl->assign('sum', $sum);
$tpl->display('acc/accounts/journal.tpl');

Modified src/www/admin/acc/reports/_inc.php from [73c58d8a9d] to [5f03524436].

1
2
3
4



5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

namespace Garradin;




require_once __DIR__ . '/../_inc.php';

$rapports = new Compta\Rapports;
$criterias = [];

if (qg('projet'))
{
	$projets = new Compta\Projets;
	$projet = $projets->get((int) qg('projet'));


	if (!$projet)
	{
		throw new UserException('Projet inconnu.');
	}

	$criterias['id_projet'] = $projet->id;
	$tpl->assign('projet', $projet);
}
elseif (qg('exercice'))
{
	$exercices = new Compta\Exercices;

	$exercice = $exercices->get((int)qg('exercice'));

	if (!$exercice)
	{
		throw new UserException('Exercice inconnu.');
	}

	$criterias['id_exercice'] = $exercice->id;
	$tpl->assign('cloture', $exercice->cloture ? $exercice->fin : time());
	$tpl->assign('exercice', $exercice);
}
else
{
	throw new UserException('Critère de rapport inconnu.');
}




>
>
>


<


|

<
<
>

|
<
|


|
|

|

|

<
<
|
<



|
|
|





1
2
3
4
5
6
7
8
9

10
11
12
13


14
15
16

17
18
19
20
21
22
23
24
25
26


27

28
29
30
31
32
33
34
35
36
37
38
<?php

namespace Garradin;

use Garradin\Accounting\Years;
use Garradin\Accounting\Accounts;

require_once __DIR__ . '/../_inc.php';


$criterias = [];

if (qg('analytical'))
{


	$account = Accounts::get((int) qg('analytical'));

	if (!$account) {

		throw new UserException('Numéro de compte analytique inconnu.');
	}

	$criterias['analytical'] = $account->id();
	$tpl->assign('analytical', $account);
}
elseif (qg('year'))
{
	$year = Years::get((int) qg('year'));



	if (!$year) {

		throw new UserException('Exercice inconnu.');
	}

	$criterias['year'] = $year->id();
	$tpl->assign('year', $year);
	$tpl->assign('close_date', $year->closed ? $year->end_date : time());
}
else
{
	throw new UserException('Critère de rapport inconnu.');
}

Name change from src/www/admin/compta/rapports/bilan.php to src/www/admin/acc/reports/bilan.php.

Name change from src/www/admin/compta/rapports/compte_resultat.php to src/www/admin/acc/reports/compte_resultat.php.

Name change from src/www/admin/compta/rapports/journal.php to src/www/admin/acc/reports/journal.php.

Modified src/www/admin/acc/reports/ledger.php from [f6b332c56d] to [ea925577f6].

1
2
3


4
5
6
7
8
9
<?php

namespace Garradin;



require_once __DIR__ . '/_inc.php';

$tpl->assign('livre', $rapports->grandLivre($criterias));

$tpl->display('admin/compta/rapports/grand_livre.tpl');



>
>



|

|
1
2
3
4
5
6
7
8
9
10
11
<?php

namespace Garradin;

use Garradin\Accounting\Reports;

require_once __DIR__ . '/_inc.php';

$tpl->assign('ledger', Reports::getGeneralLedger($criterias));

$tpl->display('acc/reports/ledger.tpl');

Modified src/www/admin/static/admin.css from [cc93433f65] to [094b399cf6].

846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
....
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046


1047
1048
1049
1050
1051
1052
1053
    padding: .2rem .5rem;
}

nav.acc-year h4 {
    font-weight: normal;
}

#rapport h3 {
    text-align: center;
    margin-bottom: .5em;
}

#rapport table {
    width: 100%;
}

#rapport tr {
    vertical-align: top;
}
................................................................................

a.icn[title]:hover:after {
    display: inline-block;
}

.num a {
    text-decoration: none;
    border-radius: .5em;
    display: inline-block;
    text-align: center;
    padding: 0 .2em;
    background: rgb(247, 164, 70);
    background: rgba(217, 134, 40, 0.5);
    background: rgba(var(--gMainColor), 0.5);


}

.actions .icn:hover, .num a:hover, .icn.action:hover, .icn-btn:hover {
    color: darkred;
    background: #ff9;
    z-index: 300;
}







<
<
<
<
<







 







|


|
<
<
|
>
>







846
847
848
849
850
851
852





853
854
855
856
857
858
859
....
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038


1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
    padding: .2rem .5rem;
}

nav.acc-year h4 {
    font-weight: normal;
}






#rapport table {
    width: 100%;
}

#rapport tr {
    vertical-align: top;
}
................................................................................

a.icn[title]:hover:after {
    display: inline-block;
}

.num a {
    text-decoration: none;
    border-radius: .5rem;
    display: inline-block;
    text-align: center;
    padding: 0 .3rem;


    background: rgba(var(--gMainColor), 0.7);
    color: #fff;
    white-space: pre;
}

.actions .icn:hover, .num a:hover, .icn.action:hover, .icn-btn:hover {
    color: darkred;
    background: #ff9;
    z-index: 300;
}