Merge pull request #1081 from ae-utbm/remove-accounting

remove remaining accounting code
This commit is contained in:
thomas girod 2025-04-13 22:10:02 +02:00 committed by GitHub
commit 77853b808a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 67 additions and 661 deletions

View File

@ -1,14 +0,0 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#

View File

@ -1,280 +0,0 @@
from __future__ import unicode_literals
import django.core.validators
import django.db.models.deletion
from django.db import migrations, models
import counter.fields
class Migration(migrations.Migration):
dependencies = []
operations = [
migrations.CreateModel(
name="AccountingType",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
(
"code",
models.CharField(
max_length=16,
verbose_name="code",
validators=[
django.core.validators.RegexValidator(
"^[0-9]*$",
"An accounting type code contains only numbers",
)
],
),
),
("label", models.CharField(max_length=128, verbose_name="label")),
(
"movement_type",
models.CharField(
choices=[
("CREDIT", "Credit"),
("DEBIT", "Debit"),
("NEUTRAL", "Neutral"),
],
max_length=12,
verbose_name="movement type",
),
),
],
options={
"verbose_name": "accounting type",
"ordering": ["movement_type", "code"],
},
),
migrations.CreateModel(
name="BankAccount",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("name", models.CharField(max_length=30, verbose_name="name")),
(
"iban",
models.CharField(max_length=255, blank=True, verbose_name="iban"),
),
(
"number",
models.CharField(
max_length=255, blank=True, verbose_name="account number"
),
),
],
options={"verbose_name": "Bank account", "ordering": ["club", "name"]},
),
migrations.CreateModel(
name="ClubAccount",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("name", models.CharField(max_length=30, verbose_name="name")),
],
options={
"verbose_name": "Club account",
"ordering": ["bank_account", "name"],
},
),
migrations.CreateModel(
name="Company",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("name", models.CharField(max_length=60, verbose_name="name")),
],
options={"verbose_name": "company"},
),
migrations.CreateModel(
name="GeneralJournal",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("start_date", models.DateField(verbose_name="start date")),
(
"end_date",
models.DateField(
null=True, verbose_name="end date", default=None, blank=True
),
),
("name", models.CharField(max_length=40, verbose_name="name")),
(
"closed",
models.BooleanField(verbose_name="is closed", default=False),
),
(
"amount",
counter.fields.CurrencyField(
decimal_places=2,
default=0,
verbose_name="amount",
max_digits=12,
),
),
(
"effective_amount",
counter.fields.CurrencyField(
decimal_places=2,
default=0,
verbose_name="effective_amount",
max_digits=12,
),
),
],
options={"verbose_name": "General journal", "ordering": ["-start_date"]},
),
migrations.CreateModel(
name="Operation",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("number", models.IntegerField(verbose_name="number")),
(
"amount",
counter.fields.CurrencyField(
decimal_places=2, max_digits=12, verbose_name="amount"
),
),
("date", models.DateField(verbose_name="date")),
("remark", models.CharField(max_length=128, verbose_name="comment")),
(
"mode",
models.CharField(
choices=[
("CHECK", "Check"),
("CASH", "Cash"),
("TRANSFERT", "Transfert"),
("CARD", "Credit card"),
],
max_length=255,
verbose_name="payment method",
),
),
(
"cheque_number",
models.CharField(
max_length=32,
null=True,
verbose_name="cheque number",
default="",
blank=True,
),
),
("done", models.BooleanField(verbose_name="is done", default=False)),
(
"target_type",
models.CharField(
choices=[
("USER", "User"),
("CLUB", "Club"),
("ACCOUNT", "Account"),
("COMPANY", "Company"),
("OTHER", "Other"),
],
max_length=10,
verbose_name="target type",
),
),
(
"target_id",
models.IntegerField(
null=True, verbose_name="target id", blank=True
),
),
(
"target_label",
models.CharField(
max_length=32,
blank=True,
verbose_name="target label",
default="",
),
),
(
"accounting_type",
models.ForeignKey(
null=True,
related_name="operations",
verbose_name="accounting type",
to="accounting.AccountingType",
blank=True,
on_delete=django.db.models.deletion.CASCADE,
),
),
],
options={"ordering": ["-number"]},
),
migrations.CreateModel(
name="SimplifiedAccountingType",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("label", models.CharField(max_length=128, verbose_name="label")),
(
"accounting_type",
models.ForeignKey(
verbose_name="simplified accounting types",
to="accounting.AccountingType",
related_name="simplified_types",
on_delete=django.db.models.deletion.CASCADE,
),
),
],
options={
"verbose_name": "simplified type",
"ordering": ["accounting_type__movement_type", "accounting_type__code"],
},
),
]

View File

@ -1,105 +0,0 @@
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("club", "0001_initial"),
("accounting", "0001_initial"),
("core", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="operation",
name="invoice",
field=models.ForeignKey(
null=True,
related_name="operations",
verbose_name="invoice",
to="core.SithFile",
blank=True,
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="operation",
name="journal",
field=models.ForeignKey(
verbose_name="journal",
to="accounting.GeneralJournal",
related_name="operations",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="operation",
name="linked_operation",
field=models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
blank=True,
to="accounting.Operation",
null=True,
related_name="operation_linked_to",
verbose_name="linked operation",
default=None,
),
),
migrations.AddField(
model_name="operation",
name="simpleaccounting_type",
field=models.ForeignKey(
null=True,
related_name="operations",
verbose_name="simple type",
to="accounting.SimplifiedAccountingType",
blank=True,
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="generaljournal",
name="club_account",
field=models.ForeignKey(
verbose_name="club account",
to="accounting.ClubAccount",
related_name="journals",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="clubaccount",
name="bank_account",
field=models.ForeignKey(
verbose_name="bank account",
to="accounting.BankAccount",
related_name="club_accounts",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="clubaccount",
name="club",
field=models.ForeignKey(
verbose_name="club",
to="club.Club",
related_name="club_account",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="bankaccount",
name="club",
field=models.ForeignKey(
verbose_name="club",
to="club.Club",
related_name="bank_accounts",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AlterUniqueTogether(
name="operation", unique_together={("number", "journal")}
),
]

View File

@ -1,48 +0,0 @@
from __future__ import unicode_literals
import phonenumber_field.modelfields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("accounting", "0002_auto_20160824_2152")]
operations = [
migrations.AddField(
model_name="company",
name="city",
field=models.CharField(blank=True, verbose_name="city", max_length=60),
),
migrations.AddField(
model_name="company",
name="country",
field=models.CharField(blank=True, verbose_name="country", max_length=32),
),
migrations.AddField(
model_name="company",
name="email",
field=models.EmailField(blank=True, verbose_name="email", max_length=254),
),
migrations.AddField(
model_name="company",
name="phone",
field=phonenumber_field.modelfields.PhoneNumberField(
blank=True, verbose_name="phone", max_length=128
),
),
migrations.AddField(
model_name="company",
name="postcode",
field=models.CharField(blank=True, verbose_name="postcode", max_length=10),
),
migrations.AddField(
model_name="company",
name="street",
field=models.CharField(blank=True, verbose_name="street", max_length=60),
),
migrations.AddField(
model_name="company",
name="website",
field=models.CharField(blank=True, verbose_name="website", max_length=64),
),
]

View File

@ -1,50 +0,0 @@
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("accounting", "0003_auto_20160824_2203")]
operations = [
migrations.CreateModel(
name="Label",
fields=[
(
"id",
models.AutoField(
verbose_name="ID",
primary_key=True,
auto_created=True,
serialize=False,
),
),
("name", models.CharField(max_length=64, verbose_name="label")),
(
"club_account",
models.ForeignKey(
related_name="labels",
verbose_name="club account",
to="accounting.ClubAccount",
on_delete=django.db.models.deletion.CASCADE,
),
),
],
),
migrations.AddField(
model_name="operation",
name="label",
field=models.ForeignKey(
on_delete=django.db.models.deletion.SET_NULL,
related_name="operations",
null=True,
blank=True,
verbose_name="label",
to="accounting.Label",
),
),
migrations.AlterUniqueTogether(
name="label", unique_together={("name", "club_account")}
),
]

View File

@ -1,17 +0,0 @@
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("accounting", "0004_auto_20161005_1505")]
operations = [
migrations.AlterField(
model_name="operation",
name="remark",
field=models.CharField(
null=True, max_length=128, blank=True, verbose_name="comment"
),
)
]

View File

@ -1,34 +0,0 @@
# Generated by Django 4.2.20 on 2025-03-14 16:06
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [("accounting", "0005_auto_20170324_0917")]
operations = [
migrations.RemoveField(model_name="bankaccount", name="club"),
migrations.RemoveField(model_name="clubaccount", name="bank_account"),
migrations.RemoveField(model_name="clubaccount", name="club"),
migrations.DeleteModel(name="Company"),
migrations.RemoveField(model_name="generaljournal", name="club_account"),
migrations.AlterUniqueTogether(name="label", unique_together=None),
migrations.RemoveField(model_name="label", name="club_account"),
migrations.AlterUniqueTogether(name="operation", unique_together=None),
migrations.RemoveField(model_name="operation", name="accounting_type"),
migrations.RemoveField(model_name="operation", name="invoice"),
migrations.RemoveField(model_name="operation", name="journal"),
migrations.RemoveField(model_name="operation", name="label"),
migrations.RemoveField(model_name="operation", name="linked_operation"),
migrations.RemoveField(model_name="operation", name="simpleaccounting_type"),
migrations.RemoveField(
model_name="simplifiedaccountingtype", name="accounting_type"
),
migrations.DeleteModel(name="AccountingType"),
migrations.DeleteModel(name="BankAccount"),
migrations.DeleteModel(name="ClubAccount"),
migrations.DeleteModel(name="GeneralJournal"),
migrations.DeleteModel(name="Label"),
migrations.DeleteModel(name="Operation"),
migrations.DeleteModel(name="SimplifiedAccountingType"),
]

View File

@ -1,14 +0,0 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#

View File

@ -839,8 +839,7 @@ Welcome to the wiki page!
accounting_admin.permissions.add( accounting_admin.permissions.add(
*list( *list(
perms.filter( perms.filter(
Q(content_type__app_label="accounting") Q(
| Q(
codename__in=[ codename__in=[
"view_customer", "view_customer",
"view_product", "view_product",

View File

@ -526,33 +526,6 @@ body {
} }
} }
/*---------------------------ACCOUNTING----------------------------*/
#accounting {
.journal-table {
tbody {
.neg-amount {
color: red;
&:before {
font-family: FontAwesome;
font-size: 1em;
content: "\f063";
}
}
.pos-amount {
color: green;
&:before {
font-family: FontAwesome;
font-size: 1em;
content: "\f062";
}
}
}
}
}
/*-----------------------------GENERAL-----------------------------*/ /*-----------------------------GENERAL-----------------------------*/
h1, h1,
h2, h2,

View File

@ -5,12 +5,12 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div id="accounting"> <main>
<h3>{% trans %}Refound account{% endtrans %}</h3> <h3>{% trans %}Refound account{% endtrans %}</h3>
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
{{ form.as_p() }} {{ form.as_p() }}
<p><input type="submit" value="{% trans %}Refound{% endtrans %}" /></p> <p><input type="submit" value="{% trans %}Refound{% endtrans %}" /></p>
</form> </form>
</div> </main>
{% endblock %} {% endblock %}

View File

@ -24,66 +24,64 @@ sith/
├── .github/ ├── .github/
│ ├── actions/ (1) │ ├── actions/ (1)
│ └── workflows/ (2) │ └── workflows/ (2)
├── accounting/ (3) ├── club/ (3)
│ └── ... │ └── ...
├── club/ (4) ├── com/ (4)
│ └── ... │ └── ...
├── com/ (5) ├── core/ (5)
│ └── ... │ └── ...
├── core/ (6) ├── counter/ (6)
│ └── ... │ └── ...
├── counter/ (7) ├── docs/ (7)
│ └── ... │ └── ...
├── docs/ (8) ├── eboutic/ (8)
│ └── ... │ └── ...
├── eboutic/ (9) ├── election/ (9)
│ └── ... │ └── ...
├── election/ (10) ├── forum/ (10)
│ └── ... │ └── ...
├── forum/ (11) ├── galaxy/ (11)
│ └── ... │ └── ...
├── galaxy/ (12) ├── launderette/ (12)
│ └── ... │ └── ...
├── launderette/ (13) ├── locale/ (13)
│ └── ... │ └── ...
├── locale/ (14) ├── matmat/ (14)
│ └── ... │ └── ...
├── matmat/ (15) ├── pedagogy/ (15)
│ └── ... │ └── ...
├── pedagogy/ (16) ├── rootplace/ (16)
│ └── ... │ └── ...
├── rootplace/ (17) ├── sas/ (17)
│ └── ... │ └── ...
├── sas/ (18) ├── sith/ (18)
│ └── ... │ └── ...
├── sith/ (19) ├── subscription/ (19)
│ └── ... │ └── ...
├── subscription/ (20) ├── trombi/ (20)
│ └── ... │ └── ...
├── trombi/ (21) ├── antispam/ (21)
│ └── ... │ └── ...
├── antispam/ (22) ├── staticfiles/ (22)
│ └── ... │ └── ...
├── staticfiles/ (23) ├── processes/ (23)
│ └── ...
├── processes/ (24)
│ └── ... │ └── ...
├── .coveragerc (25) ├── .coveragerc (24)
├── .envrc (26) ├── .envrc (25)
├── .gitattributes ├── .gitattributes
├── .gitignore ├── .gitignore
├── .mailmap ├── .mailmap
├── .env (27) ├── .env (26)
├── .env.example (28) ├── .env.example (27)
├── manage.py (29) ├── manage.py (28)
├── mkdocs.yml (30) ├── mkdocs.yml (29)
├── uv.lock ├── uv.lock
├── pyproject.toml (31) ├── pyproject.toml (30)
├── .venv/ (32) ├── .venv/ (31)
├── .python-version (33) ├── .python-version (32)
├── Procfile.static (34) ├── Procfile.static (33)
├── Procfile.service (35) ├── Procfile.service (34)
└── README.md └── README.md
``` ```
</div> </div>
@ -96,55 +94,54 @@ sith/
des workflows Github. des workflows Github.
Par exemple, le workflow `docs.yml` compile Par exemple, le workflow `docs.yml` compile
et publie la documentation à chaque push sur la branche `master`. et publie la documentation à chaque push sur la branche `master`.
3. Application de gestion de la comptabilité. 3. Application de gestion des clubs et de leurs membres.
4. Application de gestion des clubs et de leurs membres. 4. Application contenant les fonctionnalités
5. Application contenant les fonctionnalités
destinées aux responsables communication de l'AE. destinées aux responsables communication de l'AE.
6. Application contenant la modélisation centrale du site. 5. Application contenant la modélisation centrale du site.
On en reparle plus loin sur cette page. On en reparle plus loin sur cette page.
7. Application de gestion des comptoirs, des permanences 6. Application de gestion des comptoirs, des permanences
sur ces comptoirs et des transactions qui y sont effectuées. sur ces comptoirs et des transactions qui y sont effectuées.
8. Dossier contenant la documentation. 7. Dossier contenant la documentation.
9. Application de gestion de la boutique en ligne. 8. Application de gestion de la boutique en ligne.
10. Application de gestion des élections. 9. Application de gestion des élections.
11. Application de gestion du forum 10. Application de gestion du forum
12. Application de gestion de la galaxie ; la galaxie 11. Application de gestion de la galaxie ; la galaxie
est un graphe des niveaux de proximité entre les différents est un graphe des niveaux de proximité entre les différents
étudiants. étudiants.
13. Gestion des machines à laver de l'AE 12. Gestion des machines à laver de l'AE
14. Dossier contenant les fichiers de traduction. 13. Dossier contenant les fichiers de traduction.
15. Fonctionnalités de recherche d'utilisateurs. 14. Fonctionnalités de recherche d'utilisateurs.
16. Le guide des UEs du site, sur lequel les utilisateurs 15. Le guide des UEs du site, sur lequel les utilisateurs
peuvent également laisser leurs avis. peuvent également laisser leurs avis.
17. Fonctionnalités utiles aux utilisateurs root. 16. Fonctionnalités utiles aux utilisateurs root.
18. Le SAS, où l'on trouve toutes les photos de l'AE. 17. Le SAS, où l'on trouve toutes les photos de l'AE.
19. Application principale du projet, contenant sa configuration. 18. Application principale du projet, contenant sa configuration.
20. Gestion des cotisations des utilisateurs du site. 19. Gestion des cotisations des utilisateurs du site.
21. Outil pour faciliter la fabrication des trombinoscopes de promo. 20. Outil pour faciliter la fabrication des trombinoscopes de promo.
22. Fonctionnalités pour gérer le spam. 21. Fonctionnalités pour gérer le spam.
23. Gestion des statics du site. Override le système de statics de Django. 22. Gestion des statics du site. Override le système de statics de Django.
Ajoute l'intégration du scss et du bundler js Ajoute l'intégration du scss et du bundler js
de manière transparente pour l'utilisateur. de manière transparente pour l'utilisateur.
24. Module de gestion des services externes. 23. Module de gestion des services externes.
Offre une API simple pour utiliser les fichiers `Procfile.*`. Offre une API simple pour utiliser les fichiers `Procfile.*`.
25. Fichier de configuration de coverage. 24. Fichier de configuration de coverage.
26. Fichier de configuration de direnv. 25. Fichier de configuration de direnv.
27. Contient les variables d'environnement, qui sont susceptibles 26. Contient les variables d'environnement, qui sont susceptibles
de varier d'une machine à l'autre. de varier d'une machine à l'autre.
28. Contient des valeurs par défaut pour le `.env` 27. Contient des valeurs par défaut pour le `.env`
pouvant convenir à un environnment de développement local pouvant convenir à un environnment de développement local
29. Fichier généré automatiquement par Django. C'est lui 28. Fichier généré automatiquement par Django. C'est lui
qui permet d'appeler des commandes de gestion du projet qui permet d'appeler des commandes de gestion du projet
avec la syntaxe `python ./manage.py <nom de la commande>` avec la syntaxe `python ./manage.py <nom de la commande>`
30. Le fichier de configuration de la documentation, 29. Le fichier de configuration de la documentation,
avec ses plugins et sa table des matières. avec ses plugins et sa table des matières.
31. Le fichier où sont déclarés les dépendances et la configuration 30. Le fichier où sont déclarés les dépendances et la configuration
de certaines d'entre elles. de certaines d'entre elles.
32. Dossier d'environnement virtuel généré par uv 31. Dossier d'environnement virtuel généré par uv
33. Fichier qui contrôle quelle version de python utiliser pour le projet 32. Fichier qui contrôle quelle version de python utiliser pour le projet
34. Fichier qui contrôle les commandes à lancer pour gérer la compilation 33. Fichier qui contrôle les commandes à lancer pour gérer la compilation
automatique des static et autres services nécessaires à la command runserver. automatique des static et autres services nécessaires à la command runserver.
35. Fichier qui contrôle les services tiers nécessaires au fonctionnement 34. Fichier qui contrôle les services tiers nécessaires au fonctionnement
du Sith tel que redis. du Sith tel que redis.
## L'application principale ## L'application principale

View File

@ -110,7 +110,6 @@ INSTALLED_APPS = (
"core", "core",
"club", "club",
"subscription", "subscription",
"accounting",
"counter", "counter",
"eboutic", "eboutic",
"launderette", "launderette",