Overview
Comment:Simplifier les positions des comptes (en anglais)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: a3648b395f72433989be77dc3972feea5623442a
User & Date: bohwaz on 2020-04-23 23:02:59
Other Links: branch diff | manifest | tags
Context
2020-04-23
23:04
Widget de simplification de la gestion des boutons avec icône check-in: b9f5fcdd5f user: bohwaz tags: dev
23:02
Simplifier les positions des comptes (en anglais) check-in: a3648b395f user: bohwaz tags: dev
23:01
Ajout nouvelles icônes check-in: 905a51a206 user: bohwaz tags: dev
Changes

Modified src/include/data/1.0.0_migration.sql from [aa5bbeff90] to [8ebc7fc41e].

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




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



















-
+


-
+



-
+



+
+
+
+
+
+
+

















-
+



-
+


-
+


-
-
+
+









-
+





-
+
-
-
-
-
+
+
+
+











ALTER TABLE compta_journal RENAME TO compta_journal_old;
ALTER TABLE compta_comptes RENAME TO compta_comptes_old;
ALTER TABLE compta_categories RENAME TO compta_categories_old;
ALTER TABLE compta_exercices RENAME TO compta_exercices_old;
ALTER TABLE membres_operations RENAME TO membres_operations_old;
ALTER TABLE membres_categories RENAME TO membres_categories_old;

DROP TABLE fichiers_compta_journal; -- Inutilisé à ce jour

-- N'est pas utilisé
DELETE FROM config WHERE cle = 'categorie_dons' OR cle = 'categorie_cotisations';

.read 1.0.0_schema.sql

-- FIXME: insertion en comptes analytiques des projets et associations dans transactions

INSERT INTO acc_plans (id, country, code, label) VALUES (1, 'FR', 'PCGA1999', 'Plan comptable associatif 1999');

--.read plan_comptable_1999.sql
--.read plan_comptable_2020.sql

-- Migration comptes de code comme identifiant à ID unique
INSERT INTO acc_accounts (id, id_plan, code, parent, label, position, user)
	SELECT NULL, 1, id, NULL, libelle, position, plan_comptable FROM compta_comptes_old;
	SELECT NULL, 1, id, NULL, libelle, position, CASE WHEN plan_comptable = 1 THEN 0 ELSE 1 END FROM compta_comptes;

-- Migration de la hiérarchie
UPDATE acc_accounts AS a SET parent = (SELECT id FROM acc_accounts AS b WHERE code = (SELECT parent FROM compta_comptes_old AS c WHERE id = b.code));
UPDATE acc_accounts AS a SET parent = (SELECT id FROM acc_accounts AS b WHERE code = (SELECT parent FROM compta_comptes AS c WHERE id = b.code));

-- Migrations projets vers comptes analytiques
INSERT INTO acc_accounts (id_plan, code, parent, label, position, user, type)
	VALUES (1, '99', (SELECT id FROM acc_accounts WHERE code = '9'), 'Projets', 0, 0, 4);
	VALUES (1, '99', (SELECT id FROM acc_accounts WHERE code = '9'), 'Projets', 0, 1, 4);

INSERT INTO acc_accounts (id_plan, code, parent, label, position, user, type)
	SELECT 1, '99' || substr('0000' || id, -4), (SELECT id FROM acc_accounts WHERE code = '99'), libelle, 0, 1, 3 FROM compta_projets;

-- Suppression des positions "actif ou passif" et "charge ou produit"
UPDATE acc_accounts SET position = 0 WHERE position = 3 OR position = 12;

-- Modification des valeurs de la position (qui n'est plus un champ binaire)
UPDATE acc_accounts SET position = 3 WHERE position = 4;
UPDATE acc_accounts SET position = 4 WHERE position = 8;

-- Migration comptes bancaires
UPDATE acc_accounts SET type = 1 WHERE code IN (SELECT id FROM compta_comptes_bancaires);

-- Caisse
UPDATE acc_accounts SET type = 2 WHERE code = '530';

-- Chèques et carte à encaisser
UPDATE acc_accounts SET type = 3 WHERE code = '5112' OR code = '5113';

-- Bénévolat en nature
UPDATE acc_accounts SET type = 5 WHERE code = '870';

-- Recopie des mouvements
INSERT INTO acc_transactions (id, label, notes, reference, date, id_year, id_analytical)
	SELECT id, libelle, remarques, numero_piece, date, id_exercice,
	CASE WHEN id_projet IS NOT NULL THEN (SELECT id FROM acc_accounts WHERE code = '99' || substr('0000' || id_projet, -4)) ELSE NULL END
	FROM compta_journal_old;
	FROM compta_journal;

-- Création des lignes associées aux mouvements
INSERT INTO acc_transactions_lines (id_transaction, id_account, debit, credit, payment_reference)
	SELECT id, (SELECT id FROM acc_accounts WHERE code = compte_credit), 0, CAST(montant * 100 AS INT), numero_cheque FROM compta_journal_old;
	SELECT id, (SELECT id FROM acc_accounts WHERE code = compte_credit), 0, CAST(montant * 100 AS INT), numero_cheque FROM compta_journal;

INSERT INTO acc_transactions_lines (id_transaction, id_account, debit, credit, payment_reference)
	SELECT id, (SELECT id FROM acc_accounts WHERE code = compte_debit), CAST(montant * 100 AS INT), 0, numero_cheque FROM compta_journal_old;
	SELECT id, (SELECT id FROM acc_accounts WHERE code = compte_debit), CAST(montant * 100 AS INT), 0, numero_cheque FROM compta_journal;

-- Recopie des descriptions de catégories dans la table des comptes, et mise des comptes en signets
UPDATE acc_accounts SET (type, description) = (SELECT 6, c.description FROM compta_categories_old c WHERE c.id = code)
	WHERE EXISTS (SELECT rowid FROM compta_categories_old c WHERE c.id = code);
UPDATE acc_accounts SET type = 6, description = (SELECT description FROM compta_categories WHERE compte = acc_accounts.code)
	WHERE id IN (SELECT a.id FROM acc_accounts a INNER JOIN compta_categories c ON c.compte = a.code);

-- Recopie des opérations, mais le nom a changé pour "mouvements"
INSERT INTO membres_mouvements
	SELECT * FROM membres_operations_old;

-- FIXME: ajout d'entrées dans le le log utilisateur à partir de id_auteur

-- Recopie des exercices, mais la date de fin ne peut être nulle
INSERT INTO acc_years (id, label, start_date, end_date, closed, id_plan)
	SELECT id, libelle, debut, CASE WHEN fin IS NULL THEN date(debut, '+1 year') ELSE fin END, cloture, 1 FROM compta_exercices_old;
	SELECT id, libelle, debut, CASE WHEN fin IS NULL THEN date(debut, '+1 year') ELSE fin END, cloture, 1 FROM compta_exercices;

-- Recopie des catégories, on supprime la colonne id_cotisation_obligatoire
INSERT INTO membres_categories
	SELECT id, nom, droit_wiki, droit_membres, droit_compta, droit_inscription, droit_connexion, droit_config, cacher FROM membres_categories_old;

DROP TABLE compta_journal_old;
DROP TABLE compta_journal;
DROP TABLE membres_operations_old;
DROP TABLE compta_categories_old;
DROP TABLE compta_comptes_old;
DROP TABLE compta_exercices_old;
DROP TABLE compta_categories;
DROP TABLE compta_comptes;
DROP TABLE compta_exercices;
DROP TABLE membres_operations_old;

-- Transfert des rapprochements
UPDATE acc_transactions_lines SET reconcilied = 1 WHERE id_transaction IN (SELECT id_operation FROM compta_rapprochement);

-- Suppression de la table rapprochements
DROP TABLE compta_rapprochement;

-- Suppression inutilisées
DROP TABLE compta_projets;
DROP TABLE compta_comptes_bancaires;
DROP TABLE compta_moyens_paiement;

Modified src/include/lib/Garradin/Entities/Accounting/Account.php from [fdf2bec7a9] to [402ab193cd].

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
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\Entities\Accounting;

use Garradin\Entity;
use Garradin\DB;
use Garradin\Utils;
use Garradin\UserException;

class Account extends Entity
{
	const TABLE = 'acc_accounts';

	// Passif
	const PASSIF = 1;
	const ACTIF = 2;
	const ACTIF_PASSIF = 3;
	const LIABILITY = 1;

	// Actif
	const ASSET = 2;

	// Produit
	const PRODUIT = 4;
	const CHARGE = 8;
	const PRODUIT_CHARGE = 12;
	const REVENUE = 3;

	// Charge
	const EXPENSE = 4;

	const POSITIONS_NAMES = [
		'',
		1 => 'Passif',
		2 => 'Actif',
		'Passif',
		'Actif',
		3 => 'Actif ou passif',
		4 => 'Produit',
		8 => 'Charge',
		'Produit',
		'Charge',
		12 => 'Produit ou charge',
	];

	const TYPE_NONE = 0;
	const TYPE_BANK = 1;
	const TYPE_CASH = 2;

	/**
73
74
75
76
77
78
79
80

81
82
83
84
85
86
87
88
75
76
77
78
79
80
81

82
83
84
85
86
87
88
89
90







-
+








		'position'    => 'int',
		'type'        => 'int',
		'user'        => 'int',
	];

	protected $_validation_rules = [
		'id_plan'     => 'required|integer|in_table:acc_plans,id',
		'code'        => 'required|string|alpha_num',
		'code'        => 'required|string|alpha_num|max:8',
		'label'       => 'required|string|max:200',
		'description' => 'string|max:2000',
		'parent'      => 'required|nullable|integer|in_table:acc_accounts,id',
		'position'    => 'required|integer',
		'type'        => 'required|integer',
		'user'        => 'integer|min:0|max:1',
	];
}