Overview
Comment:Add year journal
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: 58411fe14fa30d7b5280ec1a97a47b9b29a1ea8f
User & Date: bohwaz on 2020-10-09 11:05:13
Other Links: branch diff | manifest | tags
Context
2020-10-09
12:21
Fix migration from floats to integers check-in: 65f82b1f43 user: bohwaz tags: dev
11:05
Add year journal check-in: 58411fe14f user: bohwaz tags: dev
10:15
General ledger check-in: 65893d90e5 user: bohwaz tags: dev
Changes

Modified src/include/lib/Garradin/Accounting/Reports.php from [085a5801bf] to [740804e470].

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
...
105
106
107
108
109
110
111
112




113
114
115
116
117
118


















































		// 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) [
................................................................................
			$debit += $row->debit;
			$credit += $row->credit;
			$row->running_sum = $account->sum;


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





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

		yield $account;
	}
}

























































>
>
>
>
>
>
>
>
>
>
>
>






|
<
<
<
<
<
<












|


>
>
>
>







 








>
>
>
>





|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
...
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
		// 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);
	}

	static protected function getWhereClause(array $criterias): string
	{
		if (!empty($criterias['year'])) {
			$where = sprintf('t.id_year = %d', $criterias['year']);
		}
		else {
			throw new \LogicException('Unknown criteria');
		}

		return $where;
	}

	/**
	 * Grand livre
	 */
	static public function getGeneralLedger(array $criterias): \Generator
	{
		$where = self::getWhereClause($criterias);







		$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 = null;

		foreach ($db->iterate($sql) as $row) {
			if (null === $accounts) {
				$accounts = $db->getGrouped('SELECT id, code, label FROM acc_accounts WHERE id_chart = (SELECT id_chart FROM acc_years WHERE id = ?);', $row->id_year);
			}

			if (null !== $account && $account->id != $row->id_account) {
				yield $account;
				$account = null;
			}

			if (null === $account) {
				$account = (object) [
................................................................................
			$debit += $row->debit;
			$credit += $row->credit;
			$row->running_sum = $account->sum;


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

		if (null === $account) {
			return;
		}

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

		yield $account;
	}

	static public function getJournal(array $criterias): \Generator
	{
		$where = self::getWhereClause($criterias);

		$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
			WHERE %s ORDER BY t.date;', $where);

		$transaction = null;
		$accounts = null;
		$db = DB::getInstance();

		foreach ($db->iterate($sql) as $row) {
			if (null === $accounts) {
				$accounts = $db->getGrouped('SELECT id, code, label FROM acc_accounts WHERE id_chart = (SELECT id_chart FROM acc_years WHERE id = ?);', $row->id_year);
			}

			if (null !== $transaction && $transaction->id != $row->id) {
				yield $transaction;
				$transaction = null;
			}

			if (null === $transaction) {
				$transaction = (object) [
					'id'        => $row->id,
					'label'     => $row->label,
					'date'      => \DateTime::createFromFormat('Y-m-d', $row->date),
					'reference' => $row->reference,
					'lines'     => [],
				];
			}

			$transaction->lines[] = (object) [
				'account_label' => $accounts[$row->id_account]->label,
				'account_code'  => $accounts[$row->id_account]->code,
				'label'         => $row->line_label,
				'reference'     => $row->line_reference,
				'id_account'    => $row->id_account,
				'credit'        => $row->credit,
				'debit'         => $row->debit,
			];
		}

		if (null === $transaction) {
			return;
		}

		yield $transaction;
	}
}

Modified src/templates/acc/reports/_header.tpl from [0cb7c8e906] to [94918c6dba].

1










2
3
4
5
6
7
8
..
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>


>
>
>
>
>
>
>
>
>
>







 







<
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
20
21
22
23
24
25
26

<div class="exercice">

    <nav class="tabs noprint">
        <ul>
            <li{if $current == "journal"} class="current"{/if}><a href="{$admin_url}acc/reports/journal.php?year={$year.id}">Journal général</a></li>
            <li{if $current == "ledger"} class="current"{/if}><a href="{$admin_url}acc/reports/ledger.php?year={$year.id}">Grand livre</a></li>
            <li{if $current == "statement"} class="current"{/if}><a href="{$admin_url}acc/reports/statement.php?year={$year.id}">Compte de résultat</a></li>
            <li{if $current == "balance_sheet"} class="current"{/if}><a href="{$admin_url}acc/reports/balance_sheet.php?year={$year.id}">Bilan</a></li>
        </ul>
    </nav>

    <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>

Modified src/templates/acc/reports/journal.tpl from [7a19ce99c8] to [0d1d2d98c0].

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
{include file="admin/_head.tpl" title="Journal général" current="compta/exercices" body_id="rapport"}

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

<table class="list multi">
    <thead>
        <tr>

            <td>Date</td>
            <th>Intitulé</th>
            <td>Comptes</td>
            <td>Débit</td>
            <td>Crédit</td>


        </tr>
    </thead>

    <tbody>
    {foreach from=$journal item="ligne"}
        <tr>
            <td rowspan="2">{$ligne.date|date_fr:'d/m/Y'}</td>
            <th rowspan="2">{$ligne.libelle}</th>
            <td>{$ligne.compte_debit} - {$ligne.compte_debit|get_nom_compte}</td>
            <td>{$ligne.montant|escape|html_money}</td>
            <td></td>







        </tr>
        <tr>
            <td>{$ligne.compte_credit} - {$ligne.compte_credit|get_nom_compte}</td>
            <td></td>
            <td>{$ligne.montant|escape|html_money}</td>
        </tr>
    {/foreach}

    </tbody>

</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
{include file="admin/_head.tpl" title="Journal général" current="compta/exercices" body_id="rapport"}

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

<table class="list multi">
    <thead>
        <tr>
            <td>Réf.</td>
            <td>Date</td>
            <th>Libellé</th>
            <td>Comptes</td>
            <td class="money">Débit</td>
            <td class="money">Crédit</td>
            <td>Libellé ligne</td>
            <td>Réf. ligne</td>
        </tr>
    </thead>
    {foreach from=$journal item="transaction"}
    <tbody>

        <tr>



            <td rowspan="{$transaction.lines|count}" class="num"><a href="{$admin_url}acc/transactions/details.php?id={$transaction.id}">{if $transaction.reference}{$transaction.reference}{else}#{$transaction.id}{/if}</a></td>
            <td rowspan="{$transaction.lines|count}">{$transaction.date|date_fr:'d/m/Y'}</td>
            <th rowspan="{$transaction.lines|count}">{$transaction.label}</th>
        {foreach from=$transaction.lines item="line"}
            <td>{$line.account_code} - {$line.account_label}</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>
        <tr>




        {/foreach}
        </tr>
    </tbody>
    {/foreach}
</table>

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

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

Modified src/templates/acc/reports/ledger.tpl from [a65f313dac] to [67720ea617].

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"}


|



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


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







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" current="ledger"}

{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/www/admin/acc/reports/journal.php from [d73a2c213c] to [a5c36b7f16].

1
2
3


4
5
6
7
8
9
<?php

namespace Garradin;



require_once __DIR__ . '/_inc.php';

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

$tpl->display('admin/compta/rapports/journal.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('journal', Reports::getJournal($criterias));

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

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

650
651
652
653
654
655
656





657
658
659
660
661
662
663
...
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
...
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
    z-index: 100;
}

table.list {
    margin-bottom: 1em;
    width: 100%;
}






table.list td.desc {
    font-size: .9em;
    color: #666;
}

table.list.auto {
................................................................................
}

table.list th, table.list td {
    padding: 0.2em 0.5em;
}

table.list tr {
    border: 1px solid rgb(217, 134, 40);
    border-color: rgba(var(--gSecondColor), 0.5);
    transition: background .2s
}

table.list tr:nth-child(even) {
    background: rgb(255, 174, 80);
    background: rgba(217, 134, 40, 0.2);
    background: rgba(var(--gSecondColor), 0.2);
}

table.list.multi tr:nth-child(even) {
    background: inherit;
}

table.list.multi tr:nth-child(4n+1), table.list.multi tr:nth-child(4n+2) {
    background: rgb(255, 174, 80);
    background: rgba(217, 134, 40, 0.2);
    background: rgba(var(--gSecondColor), 0.2);
}

table.list tr.checked {
    color: #633;
    background: #ffc;
}

................................................................................

#rapport table table {
    border: 1px solid rgb(217, 134, 40);
    border-color: rgba(217, 134, 40, 0.5);
    border-color: rgba(var(--gSecondColor), 0.5);
}

#rapport table table tr th {
    width: 80%;
}

#rapport td, #rapport th {
    padding: 0.2em 0.5em;
    text-align: left;
}

td.money, th.money {
    text-align: right;
}

#rapport .compte th {
    font-weight: normal;
    padding-left: 1em;
}

#rapport table table td {
    text-align: right;
}

#rapport .parent {
    font-weight: bold;
    background: rgb(247, 164, 70);







>
>
>
>
>







 







<
|



|
<
<



|
|
<
<
<
<
<
<







 







<
<
<
<
<
<
<
<
<




<
<
<
<
<







650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
...
693
694
695
696
697
698
699

700
701
702
703
704


705
706
707
708
709






710
711
712
713
714
715
716
...
856
857
858
859
860
861
862









863
864
865
866





867
868
869
870
871
872
873
    z-index: 100;
}

table.list {
    margin-bottom: 1em;
    width: 100%;
}

table.list caption {
    text-align: center;
    font-size: 1.2em;
}

table.list td.desc {
    font-size: .9em;
    color: #666;
}

table.list.auto {
................................................................................
}

table.list th, table.list td {
    padding: 0.2em 0.5em;
}

table.list tr {

    border: 1px solid rgba(var(--gSecondColor), 0.5);
    transition: background .2s
}

table.list tr:nth-child(even), table.multi tbody:nth-child(even) {


    background: rgba(var(--gSecondColor), 0.2);
}

table.multi tr {
    background: inherit !important;






}

table.list tr.checked {
    color: #633;
    background: #ffc;
}

................................................................................

#rapport table table {
    border: 1px solid rgb(217, 134, 40);
    border-color: rgba(217, 134, 40, 0.5);
    border-color: rgba(var(--gSecondColor), 0.5);
}










td.money, th.money {
    text-align: right;
}






#rapport table table td {
    text-align: right;
}

#rapport .parent {
    font-weight: bold;
    background: rgb(247, 164, 70);

Modified src/www/admin/static/print.css from [3d3e25b3f9] to [783af76560].

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
..
44
45
46
47
48
49
50




51
52
53
54
55
56
57
..
64
65
66
67
68
69
70

71
72
73















}

.header h1 {
    margin: 0;
    text-align: center;
}

table.list thead {
    background: #000;
    color: #fff;
}

table.list tfoot tr {
    background: #666;
    color: #fff;
}

................................................................................
table.list.multi tr:nth-child(even) {
    background: inherit;
}

table.list.multi tr:nth-child(4n+1), table.list.multi tr:nth-child(4n+2) {
    background: #ddd;
}





#rapport tr {
    color: #000 !important;
}

#rapport table .parent {
    border-top: 1px dashed #666;
................................................................................
#rapport .parent {
    background: #ccc;
}

.noprint {
    display: none;
}

td.actions * {
    display: none;
}






















|
|
|







 







>
>
>
>







 







>



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
..
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
..
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
}

.header h1 {
    margin: 0;
    text-align: center;
}

table thead {
    background: #333;
    color: #fff !important;
}

table.list tfoot tr {
    background: #666;
    color: #fff;
}

................................................................................
table.list.multi tr:nth-child(even) {
    background: inherit;
}

table.list.multi tr:nth-child(4n+1), table.list.multi tr:nth-child(4n+2) {
    background: #ddd;
}

table.list td {
    border: 1px solid #999;
}

#rapport tr {
    color: #000 !important;
}

#rapport table .parent {
    border-top: 1px dashed #666;
................................................................................
#rapport .parent {
    background: #ccc;
}

.noprint {
    display: none;
}

td.actions * {
    display: none;
}

td.num a {
    border: .1rem solid #000;
    background: #fff;
}

a {
    color: black !important;
    text-decoration: none;
}

/* Don't repeat the table footer on every printed page */
table tfoot{
    display:table-row-group;
}