initial upload

This commit is contained in:
2023-06-22 10:34:18 +02:00
parent 6df897b44d
commit 5c621cf669
1030 changed files with 355394 additions and 49 deletions

446
aem_gestion/views/compta.py Normal file
View File

@@ -0,0 +1,446 @@
# -*- coding: utf8 -*-
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
from datetime import datetime as dt, date
from dateutil.relativedelta import relativedelta
import json
from ..models.compta import *
from ..models.default import (
get_users_by_code,
)
from ..models.eleves import get_permis
from ..views.default import (
to_date,
to_euro,
to_euroz,
to_time,
to_int,
to_percent,
)
@view_config(route_name='export_cpta', renderer='../templates/compta/export_cpta.pt', permission='manage')
def export_cpta(request):
logged_in = request.authenticated_userid.lower()
url = request.route_url('export_cpta')
message = ''
brouillard = []
total_debit = 0
total_credit = 0
NOW = dt.now()
if 'etape' in request.params:
etape = '2'
etape = request.params['etape']
# récuprérer la date de fin
date_fin = dt.strptime(request.params['date_fin'], '%d-%m-%Y')
else:
etape = '1'
date_fin = NOW.date()
nom_fichier = "C-AEM-%s-%s.PNM" % (date_fin.strftime("%y%m%d"), NOW.strftime("%H%M"))
if 'form.extraction' in request.params:
# générer le brouillard jusqu'à la date de fin
message = generer_brouillard(request, logged_in, date_fin)
if len(message) == 0:
etape = '2'
# si extraction OK, afficher le brouillard
brouillard = get_brouillard(request, logged_in)
for item in brouillard:
if item.SENS == 'C':
total_credit += float(item.MONTANT)
else:
total_debit += float(item.MONTANT)
else:
# afficher message erreur
request.session.flash(message, 'danger')
if 'form.generer' in request.params:
import os
# créer le répertoire /JUSTIFS/EXPORT
path = request.registry.settings['aem_gestion.justifs_dir'] + '/EXPORT/'
os.makedirs(path, exist_ok=True)
path_fichier = path + nom_fichier
# générer le fichier PNM dans le répertoire EXPORT
message = generer_export(request, logged_in, path_fichier)
# MAJ les comptes clients exportés dans la période
update_cpt_export(request, date_fin)
request.session.flash("La génération du fichier d'export " + nom_fichier + " est terminée.", 'success')
etape = '3'
return {
'page_title': "Exportation des écritures",
'url': url,
'message': message,
'etape' : etape,
'date_fin': date_fin,
'nom_fichier': nom_fichier,
'brouillard': brouillard,
'total_credit': to_euro(total_credit),
'total_debit': to_euro(total_debit),
}
@view_config(route_name='jnl_caisse', renderer='../templates/compta/jnl_caisse.pt', permission='view')
def jnl_caisse(request):
logged_in = request.authenticated_userid
url = request.route_url('jnl_caisse')
message = ''
member = get_users_by_code(request, logged_in)
if member.secu < 6 :
request.session.flash("Vous n'avez le niveau d'accès requis pour ce traitement", 'error')
return HTTPFound(location=request.route_url('home'))
date_edition = dt.now().date()
agence = member.agence
if 'form.submitted' in request.params:
# récuprérer la date d'édition
date_edition = request.params['date_edition']
return HTTPFound(location=request.route_url('prt_caisse', date_edition=date_edition))
return {
'page_title': 'Agence %s : Journal de caisse du %s' % (agence, date_edition.strftime('%d-%m-%Y')),
'url': url,
'message': message,
'date_edition': date_edition,
}
@view_config(route_name='prt_caisse', renderer='../templates/compta/prt_caisse.pt', permission='view')
def prt_caisse(request):
date_edition = dt.strptime(request.matchdict['date_edition'], '%d-%m-%Y')
logged_in = request.authenticated_userid
member = get_users_by_code(request, logged_in)
if member.secu <= 6 :
return HTTPFound(location=request.route_url('home'))
agence = member.agence
# lire la caisse du jour
items = get_caisse(request, agence, date_edition)
# construire la liste
liste=[]
# lire la caisse du jour
items = get_caisse(request, agence, date_edition)
totalMode = 0.0
totalGeneral = 0.0
groupe = ''
for item in items:
# rupture sur mode_regl
if groupe != item.lib4 :
if groupe != '':
# ajouter une ligne de sous-total
d = ('', '', '', '*** TOTAL pour ' + groupe, to_euro(totalMode), groupe, '', '')
liste.append(d)
totalGeneral += totalMode
totalMode = 0.0
cree_le = item.cree_le.strftime('%d-%m-%y')
modif_le = item.modif_le.strftime('%d-%m')
d = (item.CD_CLI, item.NOM, item.permis_demande, item.INTITULE, to_euro(item.CREDIT),
item.lib4, item.CD_UTI, cree_le + ', ' + modif_le)
liste.append(d)
totalMode += float(item.CREDIT)
groupe = item.lib4
# ajouter une ligne de sous-total
d = ('', '', '', '*** TOTAL pour ' + groupe, to_euro(totalMode), groupe, '', '')
liste.append(d)
# ajouter ligne Total général
totalGeneral += totalMode
d = ('', '', '', '*** TOTAL AGENCE ' + str(agence), to_euro(totalGeneral), '', '', '')
liste.append(d)
return {
'page_title': 'Agence %s : Journal de caisse du %s' % (agence, date_edition.strftime('%d-%m-%Y')),
'date_edition': date_edition,
'dt_data': json.dumps(liste),
'agence': agence,
}
@view_config(route_name='solder_contrats', renderer='../templates/compta/solder_contrats.pt', permission='manage')
def solder_contrats(request):
logged_in = request.authenticated_userid.lower()
url = request.route_url('solder_contrats')
message = ''
if 'form.solder_auto' in request.params:
# Solder les comptes clients
result = update_contrats_auto(request, 6, logged_in)
request.session.flash(str(result.NB) + " contrats AUTO ont été soldés !", 'success')
if 'form.solder_moto' in request.params:
# Solder les comptes clients
result = update_contrats_auto(request, 6, logged_in)
request.session.flash(str(result.NB) + " contrats MOTO ont été soldés !", 'success')
return {
'page_title': "Solder les contrats échus",
'url': url,
'message': message,
}
@view_config(route_name='balance_clients', renderer='../templates/compta/balance_clients.pt', permission='manage')
def balance_clients(request):
logged_in = request.authenticated_userid.lower()
url = request.route_url('balance_clients')
message = ''
TODAY = dt.now().date()
permis = get_permis(request)
cat = 'B'
# date début = 01/01 de l'année
date_debut = date(TODAY.year, 1, 1)
date_fin = date(TODAY.year, 12, 31)
if 'form.submitted' in request.params:
cat = request.params['cat']
# récuprérer la date de debut
date_debut = dt.strptime(request.params['date_debut'], '%d-%m-%Y')
# récuprérer la date de fin
date_fin = dt.strptime(request.params['date_fin'], '%d-%m-%Y')
# "La date de fin doit être supérieure à la date début"
if date_debut > date_fin :
message("La date de fin doit être supérieure à la date début")
else:
# générerles écritures de balance
generer_balance(request, logged_in, cat, date_debut, date_fin)
request.session.flash("La génération de la balance est terminée !", 'success')
if 'form.printed' in request.params:
return HTTPFound(location=request.route_url('balance_print'))
# dates de début et fin de la génération en cours
balance_debut, balance_fin, balance_criteres = get_dates_balance(request)
if balance_debut:
generer_debut = balance_debut.strftime('%d-%m-%Y %H:%M')
else:
generer_debut = "Pas de génération en cours"
if balance_fin:
generer_fin = balance_fin.strftime('%d-%m-%Y %H:%M')
else:
generer_fin = "Génération non terminée..."
return {
'page_title': "Balance CLIENTS",
'url': url,
'message': message,
'date_debut': date_debut,
'date_fin': date_fin,
'generer_debut': generer_debut,
'generer_fin' : generer_fin,
'balance_fin': balance_fin,
'balance_criteres': balance_criteres,
'permis': permis,
'cat': cat,
}
@view_config(route_name='balance_print', renderer='../templates/compta/balance_print.pt', permission='manage')
def balance_print(request):
logged_in = request.authenticated_userid.lower()
TODAY = dt.now().date()
# construire la liste
liste=[]
# lire la balance générée
items = get_balance(request, logged_in)
# dates de début et fin de la génération en cours
balance_debut, balance_fin, criteres = get_dates_balance(request)
if balance_fin == None:
return HTTPFound(location=request.route_url('balance_clients'))
# total agence
agence = 0
ta_solde = 0.0
ta_mtval = 0.0
ta_credit = 0.0
ta_solde_c = 0.0
ta_solde_d = 0.0
# total générale
tl_solde = 0.0
tl_mtval = 0.0
tl_credit = 0.0
tl_solde_c = 0.0
tl_solde_d = 0.0
for item in items:
# rupture sur mode_regl
if agence != item.AGENCE :
if agence != 0:
# ajouter une ligne de sous-total
d = ('', '*** TOTAL Agence ' + str(agence), '', to_euro(ta_solde),
to_euro(ta_mtval), to_euro(ta_credit), to_euro(ta_solde_d), to_euro(ta_solde_c), to_euro(ta_solde_c - ta_solde_d))
liste.append(d)
tl_solde += ta_solde
tl_mtval += ta_mtval
tl_credit += ta_credit
tl_solde_c += ta_solde_c
tl_solde_d += ta_solde_d
ta_solde = 0.0
ta_mtval = 0.0
ta_credit = 0.0
ta_solde_c = 0.0
ta_solde_d = 0.0
agence = item.AGENCE
solde = float(item.Solde + item.CREDIT - item.MTVAL)
if solde < 0 :
solde_c = 0
solde_d = solde * -1
else :
solde_c = solde
solde_d = 0
d = (item.CD_CLI, item.INTITULE, item.FORMULE, to_euro(item.Solde), to_euro(item.MTVAL), to_euro(item.CREDIT),
to_euro(solde_d), to_euro(solde_c), '')
liste.append(d)
ta_solde += float(item.Solde)
ta_mtval += float(item.MTVAL)
ta_credit += float(item.CREDIT)
ta_solde_c += solde_c
ta_solde_d += solde_d
# ajouter dernière ligne de sous-total
d = ('', '*** TOTAL Agence ' + str(agence), '', to_euro(ta_solde),
to_euro(ta_mtval), to_euro(ta_credit), to_euro(ta_solde_d), to_euro(ta_solde_c), to_euro(ta_solde_c - ta_solde_d))
liste.append(d)
# ajouter ligne Total général
tl_solde += ta_solde
tl_mtval += ta_mtval
tl_credit += ta_credit
tl_solde_c += ta_solde_c
tl_solde_d += ta_solde_d
d = ('', '*** TOTAL SOCIETE', '', to_euro(tl_solde),
to_euro(tl_mtval), to_euro(tl_credit), to_euro(tl_solde_d), to_euro(tl_solde_c), to_euro(tl_solde_c - tl_solde_d))
liste.append(d)
return {
'page_title': "Balance CLIENTS " + criteres,
'TODAY': TODAY,
'dt_data': json.dumps(liste),
}
@view_config(route_name='recap_moniteur', renderer='../templates/compta/recap_moniteur.pt', permission='manage')
def recap_moniteur(request):
logged_in = request.authenticated_userid.lower()
url = request.route_url('recap_moniteur')
message = ''
TODAY = dt.now().date()
# date début = 01 du mois
date_debut = date(TODAY.year, TODAY.month, 1)
date_fin = date_debut + relativedelta(day=31)
# lire les moniteurs
moniteurs = get_moniteurs_byCode(request)
cd_mon1 = moniteurs[0].CD_MON
cd_mon2 = moniteurs[len(moniteurs) - 1].CD_MON
if 'form.submitted' in request.params:
cd_mon1 = request.params['cd_mon1']
cd_mon2 = request.params['cd_mon2']
# récuprérer la date de debut
date_debut = dt.strptime(request.params['date_debut'], '%d-%m-%Y')
# récuprérer la date de fin
date_fin = dt.strptime(request.params['date_fin'], '%d-%m-%Y')
# "La date de fin doit être supérieure à la date début"
if date_debut > date_fin :
message("La date de fin doit être supérieure à la date début")
else:
return HTTPFound(location=request.route_url('recap_print',
cd_mon1=cd_mon1, cd_mon2=cd_mon2, date1=date_debut.date(), date2=date_fin.date()))
return {
'page_title': "Récap des activités Moniteurs",
'url': url,
'message': message,
'date_debut': date_debut,
'date_fin': date_fin,
'moniteurs': moniteurs,
'cd_mon1': cd_mon1,
'cd_mon2': cd_mon2,
}
@view_config(route_name='recap_print', renderer='../templates/compta/recap_print.pt', permission='manage')
def recap_print(request):
cd_mon1 = request.matchdict['cd_mon1']
cd_mon2 = request.matchdict['cd_mon2']
date1 = request.matchdict['date1']
date2 = request.matchdict['date2']
d1 = dt.strptime(date1, '%Y-%m-%d')
d2 = dt.strptime(date2, '%Y-%m-%d')
periode = 'du %s au %s' % (d1.strftime('%d-%m-%Y'), d2.strftime('%d-%m-%Y'))
TODAY = dt.now().date()
# lire le recap des activités des moniteurs
# rupture sur CD_MON / REF / STATUT
items = get_recap(request, cd_mon1, cd_mon2, date1, date2)
# total moniteur
nom = ''
tm_heures = 0
# construire la liste
liste=[]
for item in items:
# rupture sur NOM
if nom != item.NOM :
if nom != '':
# ajouter une ligne de total Moniteur
d = (nom,'','*** TOTAL', nom + ' - ' + cd_mon, str(tm_heures) + ' h')
liste.append(d)
tm_heures = 0
if item.STATUT == 15:
statut = '(%s)' % item.STATUT
qte = '(%s)' % item.SUM_QTE
else:
statut = str(item.STATUT)
qte = str(item.SUM_QTE)
d = (item.NOM, statut, item.REF, item.INTITULE, qte)
liste.append(d)
# cumuler les heures
tm_heures += item.SUM_QTE
nom = item.NOM
cd_mon = item.CD_MON
# ajouter une ligne de total Moniteur
d = (nom,'','*** TOTAL', nom + ' - ' + cd_mon, str(tm_heures) + ' h')
liste.append(d)
return {
'page_title': "Récap des activités Moniteurs",
'periode': periode,
'TODAY': TODAY,
'dt_data': json.dumps(liste),
}