|
1 |
|
2 Base de coneixement per desenvolupar YAGL |
|
3 ----------------------------------------- |
|
4 |
|
5 Lluís Batlle i Rossell |
|
6 viric@users.sourceforge.net |
|
7 |
|
8 Iniciat el 12/08/2003 |
|
9 |
|
10 |
|
11 1. Introducció als conceptes que hi ha al voltant de la comptabilitat |
|
12 |
|
13 Els programes de comptabilitat serveixen perquè la gent pugui treure conclusions |
|
14 del funcionament de l'empresa a partir de dades que introdueix el comptable. |
|
15 |
|
16 Aquestes dades tenen forma d'assentaments, i fan referència als moviments de |
|
17 diners que fan referència a l'empresa: compres, vendes, inversions, crèdits, ... |
|
18 |
|
19 En un moviment de diners hi ha un origen i un destí; aquests es localitzen en el |
|
20 que anomenem "comptes". Els comptes són entitats que poden donar i rebre diners, |
|
21 i estan catalogats en quatre tipus: Actiu, Passiu, Ingressos i Despeses. Això |
|
22 significa que els origens i els destins dels diners han de ser per força |
|
23 d'aquests quatre tipus. |
|
24 |
|
25 Un assentament fa referència a un conjunt de moviments concret i quadrat. Això |
|
26 vol dir que tots els diners que algunes comptes dónen han d'anar a parar |
|
27 íntegrament a altres comptes. Per exemple, en un assentament el compte de |
|
28 "clients" pot donar diners a "ventes" i a "IVA". |
|
29 Els diners que "clients" dóna representen deutes de clients. Quan els clients |
|
30 ens paguin, tindrem que |
|
31 |
|
32 Hi ha el que s'anomenen 'subcomptes' que són comptes fets pel comptable que |
|
33 l'ajuden a tenir més diferenciats els moviments. Això es sol fer per obtenir |
|
34 conclusions sobre elements més particulars, i per a tenir valors precalculats. |
|
35 Per exemple, si tenim subcomptes d'IVA per cada percentatge aplicat, podem |
|
36 calcular els valors a presentar en un informe d'IVA. |
|
37 |
|
38 |
|
39 2. Dades poc utilitzades |
|
40 |
|
41 Molts programes de comptabilitat permeten vincular subcomptes de clients a dades |
|
42 de persones o empreses. Això només és pels que utilitzen el programa de |
|
43 comptabilitat com a base de dades de clients; no te res a veure amb informes que |
|
44 es puguin generar. |
|
45 |
|
46 El mateix passa amb els proveidors. |
|
47 |
|
48 Les dades de l'empresa a qui portem els comptes són més importants, però només |
|
49 es necessiten pels informes |
|
50 |
|
51 |
|
52 3. Informació a guardar |
|
53 |
|
54 |
|
55 3.1 Comptes |
|
56 |
|
57 Els comptes es divideixen, segons el Pla General Comptable, en Grups, Subgrups i |
|
58 Comptes, a més d'alguns casos on apareixen Subcomptes. Cada un s'identifica per |
|
59 1, 2, 3 i 4 dígits respectivament. A més, com que és una estructura d'arbre, en |
|
60 un subcompte de 4 dígits, els tres primers coincidiran amb els del compte a què |
|
61 pertany, i així també amb els subgrups i els grups. |
|
62 |
|
63 Seguint aquesta regla, podem tenir subcomptes de tants de dígits com volem. Es |
|
64 solen fer subcomptes personals de vuit dígits, donant marge per exemple fins a |
|
65 100000 clients. |
|
66 Alguns programes de comptabilitat assumeixen que la compta 1 és la mateixa que |
|
67 la 10, i també la mateixa que la 100... i no tenen en compte els aniuaments que |
|
68 hi ha (la 10 és el conjunt de totes les que comencen amb 10, i això és diferent |
|
69 que la 100). Suposo que tenen tots els grups i subgrups "hardcoded"; de fet, no |
|
70 són programes massa flexibles. |
|
71 |
|
72 Cada compte pot ser de quatre tipus, com hem dit abans. És el que anomenarem |
|
73 categoria. A més, cada compte té una descripció associada. També podem mantenir |
|
74 un camp anomenat "link" (idea del SQL-Ledger) que ens permeti vincular cada |
|
75 compta a diferents tipus de quadres de diàleg; quan tinguem assentaments |
|
76 tipificats (compres amb IVA, vendes, ...), ens indicarà en quins tipus |
|
77 d'assentaments té a veure cada compte. |
|
78 |
|
79 |
|
80 3.2 Assentaments |
|
81 |
|
82 Cada assentament està composat per diferents moviments, cadascun referint-se a |
|
83 un compte únic en aquell assentament (CERT?). Un assentament té a veure amb un |
|
84 tipus d'intercanvi de bens, i per tant un assentament té un "Concepte" |
|
85 associat. Podem fins i tot tenir un camp de "Document" que ens indiqui a quin |
|
86 document fa referència l'assentament (Factura, ...). Tot això podria estar de |
|
87 tota manera inclòs en el concepte. |
|
88 |
|
89 Si pensem implementar cerques per "concepte" sèries, podriem separar-ho i tenir |
|
90 els camps "Tipus de document" (ComboBox) i "Número de document". Fins i tot |
|
91 podem guardar la "Data del document". |
|
92 |
|
93 La "data" de l'assentament és important per situar l'intercanvi de bens en |
|
94 el temps. Segurament serà igual que la data del document. |
|
95 |
|
96 |
|
97 3.3 Moviments |
|
98 |
|
99 Un moviment es fa en una compta, i està vinculat a un assentament. No sol tenir |
|
100 cap camp de concepte o descripció, ja que un moviment per si sol no té massa |
|
101 valor. L'entitat que representa un canvi de bens és l'assentament. |
|
102 |
|
103 De tota manera ens pot interessar tenir els moviments guardats en el mateix |
|
104 ordre que van ser entrats; així faria falta un camp de "index". |
|
105 Podem tenir una clau primària múltiple (ES DIU AIXÍ?) aquí, que sigui per |
|
106 assentament i número de compta. Sempre i quan sigui cert que en un sol |
|
107 assentament només hi pot haver un moviment com a màxim per cada compta. Això |
|
108 permetria no haver de tenir una clau primària autonumèrica, i ajudaria molt als |
|
109 motors de bases de dades. |
|
110 |
|
111 |
|
112 4. Diagrama Entitat-Relació bàsic |
|
113 |
|
114 +-----+ 1 N +---------+ N 1 +------------+ |
|
115 |chart|---<>---|movements|---<>---|transactions| |
|
116 +-----+ +---------+ +------------+ |
|
117 | | | |
|
118 /-----------\ /-----------\ /----------\ |
|
119 |account_num| |trans_ID | | ID | |
|
120 \-----------/ |account_num| \----------/ |
|
121 \-----------/ |
|
122 |
|
123 La traducció dels termes de comptabilitat està al fitxer ENGLISH_TERMS. |
|
124 |
|
125 |
|
126 5. Informes a generar |
|
127 |
|
128 |
|
129 5.1. Balanç de saldos |
|
130 |
|
131 El que corre més pressa és el balanç de saldos. Això vol dir calcular el Deure, |
|
132 l'Haver i la seva diferència per cada compta, i mostrar-ho en una taula. És dels |
|
133 més senzills que haurem de generar. |
|
134 |
|
135 5.2. Balanç de guanys |
|
136 |
|
137 Ens indica la diferència entre ingressos i despeses. Simplement és la diferència |
|
138 entre el grup d'ingressos i el de despeses. |
|
139 |
|
140 5.3. Balanç de situació |
|
141 |
|
142 Aquest és un document més complexe... la llei catalana/espanyola suggereix dos |
|
143 tipus de balanços de situació: el normal i el reduit. Els dos inclouen totes les |
|
144 comptes d'actiu i passiu de forma diferenciada, i les seves línies no estan |
|
145 composades per les "comptes", sinó per conjunts de comptes amb un nom concret. |
|
146 |
|
147 Els càlculs de les diferents parts del balanç s'obtenen mitjançant sumes dels |
|
148 conjunts anomenats... per tant, o tenim un bon disseny de base de dades (una |
|
149 taula nova que vinculi els conjunts de comptes a els comptes), o bé tenim una |
|
150 configuració de l'informe de balanç en XML on ens ajudem del QSA. |
|
151 |
|
152 Els ingressos o despeses són necessàries per quadrar el balanç de situació. |
|
153 |
|
154 |
|
155 6. Primers passos al GUI |
|
156 |
|
157 El primer que hem de poder fer és modificar el quadre de comptes. Llavors, poder |
|
158 insertar/modificar/eliminar assentaments. D'alguna manera (al quadre de comptes |
|
159 mateix) hauriem de poder llistar els "haver" i "deure" de cada compta. |
|
160 |
|
161 Més endavant, haurem de generar un informe de balanç de saldos. Aquí entrarà la |
|
162 part XML per primera vegada. Un cop tinguem això, podem continuar per afegir |
|
163 nous informes / noves funcionalitats. Tot tinguent en compte la portabilitat a |
|
164 altres llengües / països. |
|
165 |
|
166 |
|
167 7. Eines |
|
168 |
|
169 Tot es programarà en C++, utilitzant les QT a l'extrem; hem d'aprofitar-les al |
|
170 màxim. Això significa cedir feina als de Trolltech; com menys feina tinguem |
|
171 millor. |
|
172 |
|
173 El motor de base de dades de prova serà MySQL, ja que és el que sol venir |
|
174 compilat per defecte amb les QT. Si volem portabilitat de DBMS, només hauriem de |
|
175 fer servir les funcions de Relational DBMS; si ens vinculem als objectes de |
|
176 PostgreSQL només podrem utilitzar aquest o Oracle, i de moment sembla que no és |
|
177 pas millor que anar amb taules relacionades. |
|
178 |
|
179 |
|
180 8. Primers passos de disseny i programació |
|
181 |
|
182 Primer de tot s'ha d'elaborar i aprovar el disseny de la base de dades. Llavors, |
|
183 construir les taules amb SQL (creant fitxers amb codi SQL que ens faci aquesta |
|
184 feina, de moment). |
|
185 |
|
186 Llavors, decidir el disseny del GUI. Més endavant un diagrama de classes, i |
|
187 posteriorment començar a implementar un cop ens haguem repartit la feina. |
|
188 |
|
189 De moment, s'aplicaran les normes d'escriptura de codi de Galadriel Parts |
|
190 (GaladrielCodingStyle.txt). |
|
191 |
|
192 S'ha de pensar com guardarem diferents empreses.... altres programes ho solen |
|
193 fer en diferents bases de dades. Cada una té les seves taules. Així sembla que |
|
194 és la millor idea. |