23/07/2024 - 12h

master
cherif 2024-07-23 11:07:29 +02:00
parent 8cfc3c0c0e
commit 6897469e4d
5 changed files with 6571 additions and 87 deletions

View File

@ -3,13 +3,10 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="21/07/2024 - 12h"> <list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="21/07/2024 - 12h">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/GlobalVariable.py" beforeDir="false" afterPath="$PROJECT_DIR$/GlobalVariable.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Inscription_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/Inscription_mgt.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Inscription_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/Inscription_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Session_Formation.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Session_Formation.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/apprenant_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/apprenant_mgt.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/module_editique.py" beforeDir="false" afterPath="$PROJECT_DIR$/module_editique.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/class_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/class_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@ -6028,6 +6028,11 @@ def Update_AcceptAttendeeInscription_For_Initial_Formation(diction):
""" """
Fontion de validation / acceptation d'une inscription Fontion de validation / acceptation d'une inscription
23/07/2024 :
A la validation, on regarde si l'inscription a un 'client_rattachement_id' alors on considère qu'il
s'agit d'une inscription pour un client, on met le champ 'entreprise' à '1', si non à '0'
""" """
def AcceptAttendeeInscription(diction): def AcceptAttendeeInscription(diction):
try: try:
@ -6064,10 +6069,17 @@ def AcceptAttendeeInscription(diction):
data_mail = {} data_mail = {}
# 2 - Recuperation des données de l'inscription # 2 - Recuperation des données de l'inscription
local_inscription = MYSY_GV.dbname['inscription'].find({'_id': ObjectId(str(diction['inscription_id'])), local_inscription = MYSY_GV.dbname['inscription'].find({'_id': ObjectId(str(diction['inscription_id'])),
'email': str(diction['email']), 'email': str(diction['email']),
'partner_owner_recid':str(partner_recid)}) 'partner_owner_recid':str(partner_recid)})
entreprise = "0"
if ("client_rattachement_id" in local_inscription[0].keys()):
if local_inscription[0]['client_rattachement_id']:
entreprise = "1"
lms_class_code = "" lms_class_code = ""
if ("lms_class_code" in local_inscription[0].keys()): if ("lms_class_code" in local_inscription[0].keys()):
if local_inscription[0]['lms_class_code']: if local_inscription[0]['lms_class_code']:
@ -6203,7 +6215,7 @@ def AcceptAttendeeInscription(diction):
ret_val2 = MYSY_GV.dbname['inscription'].find_one_and_update( ret_val2 = MYSY_GV.dbname['inscription'].find_one_and_update(
{'_id': ObjectId( str(diction['inscription_id'])), 'email': str(diction['email']), 'partner_owner_recid':str(my_partner['recid'])}, {'_id': ObjectId( str(diction['inscription_id'])), 'email': str(diction['email']), 'partner_owner_recid':str(my_partner['recid'])},
{"$set": {'status':'1', 'inscription_validation_date':now, 'date_update':now {"$set": {'status':'1', 'inscription_validation_date':now, 'date_update':now, 'entreprise':str(entreprise)
}}, }},
return_document=ReturnDocument.AFTER, return_document=ReturnDocument.AFTER,
upsert=False, upsert=False,
@ -6548,7 +6560,7 @@ def AcceptAttendeeInscription(diction):
""" """
Cette fonction acepte une liste d'inscrit à une session de formation Cette fonction accepte une liste d'inscrit à une session de formation
""" """
def Accept_List_AttendeeInscription(diction): def Accept_List_AttendeeInscription(diction):
try: try:

File diff suppressed because one or more lines are too long

View File

@ -9356,16 +9356,42 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d
3]) + " L'identifiant de la session est invalide ") 3]) + " L'identifiant de la session est invalide ")
return False, " L'identifiant de la session est invalide ", False return False, " L'identifiant de la session est invalide ", False
# Verifier qu'il ya bien des inscriptions valides dans la session pour le client
liste_client_rattachement_id = []
liste_client_facturation_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id",
{'session_id': str(diction['session_id']),
'status': '1',
'partner_owner_recid': str(
my_partner['recid']),
"facture_client_rattachement_id": {'$ne': ''},
"invoiced": {'$ne': '1'},
"_id": {'$in': tab_my_inscription_ids_Object},
}
)
print(" ### la liste des liste_client_facturation_rattachement_id = ", liste_client_facturation_rattachement_id)
# Ajout des client de facturation
for tmp in liste_client_facturation_rattachement_id :
liste_client_rattachement_id.append(tmp)
print(" ### la liste des liste_client_rattachement_id = ", liste_client_rattachement_id)
""" """
Gestion des inscriptions n'ayant pas de client ID Gestion des inscriptions n'ayant pas de facture_client_rattachement_id
""" """
liste_inscription_no_client = MYSY_GV.dbname['inscription'].find( liste_inscription_no_client = MYSY_GV.dbname['inscription'].find(
{"$or": [{'session_id': str(diction['session_id']), {"$or": [{'session_id': str(diction['session_id']),
'status': '1', 'status': '1',
'partner_owner_recid': str(my_partner['recid']), 'partner_owner_recid': str(my_partner['recid']),
"facture_client_rattachement_id": '', "facture_client_rattachement_id": '',
"invoiced": {'$ne': '1'}, "invoiced": {'$ne': '1'},
"_id": {'$in': tab_my_inscription_ids_Object}, "_id": {'$in': tab_my_inscription_ids_Object},
}, },
{'session_id': str(diction['session_id']), {'session_id': str(diction['session_id']),
'status': '1', 'status': '1',
@ -9377,10 +9403,10 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d
} }
) )
# CONTROLE : Verification des data client (si tous les clients 'particuliers' sont ok # CONTROLE : Verification des data client (si tous les clients 'particuliers' sont ok
for local_inscription_no_client in liste_inscription_no_client: for local_inscription_no_client in liste_inscription_no_client:
print(" ### List des inscrit n'ayant pas de 'client_id': ", local_inscription_no_client) print(" ### List des inscrit n'ayant pas de 'facture_client_rattachement_id': ",
local_inscription_no_client)
""" """
- Verifier s'il y a un client avec la même adresse email, - Verifier s'il y a un client avec la même adresse email,
@ -9421,11 +9447,12 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d
MYSY_GV.dbname['inscription'].update_one({'partner_owner_recid': str(my_partner['recid']), MYSY_GV.dbname['inscription'].update_one({'partner_owner_recid': str(my_partner['recid']),
'_id': ObjectId(local_inscription_no_client['_id'])}, '_id': ObjectId(local_inscription_no_client['_id'])},
{'$set': { {'$set': {
'facture_client_rattachement_id': str(inscription_no_client_valide_no_locked_data['_id']), 'facture_client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id']),
'client_rattachement_id': str( 'client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id']), inscription_no_client_valide_no_locked_data['_id']),
} }
}) })
# Si il n'y a pas de client associé à cette adresse email, alors on crée le client # Si il n'y a pas de client associé à cette adresse email, alors on crée le client
if (is_inscription_no_client_exist == 0): if (is_inscription_no_client_exist == 0):
@ -9536,52 +9563,14 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d
{'$set': {'$set':
{ {
'facture_client_rattachement_id': str( 'facture_client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id']), inscription_no_client_valide_no_locked_data[
'_id']),
'client_rattachement_id': str( 'client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id']) inscription_no_client_valide_no_locked_data['_id'])
} }
}) })
# Verifier qu'il ya bien des inscriptions valides dans la session pour le client
liste_client_rattachement_id = []
liste_client_facturation_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id",
{'session_id': str(diction['session_id']),
'status': '1',
'partner_owner_recid': str(
my_partner['recid']),
"facture_client_rattachement_id": {'$ne': ''},
"invoiced": {'$ne': '1'},
"_id": {'$in': tab_my_inscription_ids_Object},
}
)
print(" ### la liste des liste_client_facturation_rattachement_id = ", liste_client_facturation_rattachement_id)
liste_client_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct(
"client_rattachement_id",
{'session_id': str(diction['session_id']),
'status': '1',
'partner_owner_recid': str(
my_partner['recid']),
"facture_client_rattachement_id": {'$ne': ''},
"invoiced": {'$ne': '1'},
"_id": {'$in': tab_my_inscription_ids_Object},
}
)
print(" ### la liste des liste_client_client_rattachement_id = ", liste_client_client_rattachement_id)
# Ajout des client de facturation
for tmp in liste_client_facturation_rattachement_id :
liste_client_rattachement_id.append(tmp)
# Ajout des client_client de facturation
for tmp in liste_client_client_rattachement_id:
liste_client_rattachement_id.append(tmp)
print(" ### la liste des liste_client_rattachement_id = ", liste_client_rattachement_id)
# Sauvegarde des fichiers joints depuis le front # Sauvegarde des fichiers joints depuis le front
tab_saved_file_full_path = [] tab_saved_file_full_path = []
@ -9882,9 +9871,27 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files,
3]) + " L'identifiant de la session est invalide ") 3]) + " L'identifiant de la session est invalide ")
return False, " L'identifiant de la session est invalide ", False return False, " L'identifiant de la session est invalide ", False
# Verifier qu'il ya bien des inscriptions valides dans la session pour le client
liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id",
{'session_id': str(diction['session_id']),
'status': '1',
'partner_owner_recid': str(
my_partner['recid']),
"facture_client_rattachement_id": {'$ne': ''},
"invoiced": {'$ne': '1'},
"_id": {
'$in': tab_my_inscription_ids_Object},
}
)
print(" ### la liste des liste_client_rattachement_id (client à facturer) : AVANT GESTION inscriptions SANS CLIENT = ", liste_client_rattachement_id)
""" """
Gestion des inscriptions n'ayant pas de client à facturer ID Gestion des inscriptions n'ayant pas de client à facturer ID
""" """
liste_inscription_no_client = MYSY_GV.dbname['inscription'].find( liste_inscription_no_client = MYSY_GV.dbname['inscription'].find(
{"$or": [{'session_id': str(diction['session_id']), {"$or": [{'session_id': str(diction['session_id']),
'status': '1', 'status': '1',
@ -9936,7 +9943,7 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files,
return False, " Facturation : L'adresse email : " + str( return False, " Facturation : L'adresse email : " + str(
local_inscription_no_client['email']) + " correspond à un client non valide ", False local_inscription_no_client['email']) + " correspond à un client non valide ", False
# Mise à jour de l'inscription avec l'_id du client # Mise à jour de l'inscription avec l'_id du nouveau client pour les champs : client_rattachement_id et facture_client_rattachement_id
inscription_no_client_valide_no_locked_data = MYSY_GV.dbname['partner_client'].find_one( inscription_no_client_valide_no_locked_data = MYSY_GV.dbname['partner_client'].find_one(
{'partner_recid': str(my_partner['recid']), {'partner_recid': str(my_partner['recid']),
'email': str(local_inscription_no_client['email']), 'email': str(local_inscription_no_client['email']),
@ -9946,10 +9953,23 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files,
MYSY_GV.dbname['inscription'].update_one({'partner_owner_recid': str(my_partner['recid']), MYSY_GV.dbname['inscription'].update_one({'partner_owner_recid': str(my_partner['recid']),
'_id': ObjectId(local_inscription_no_client['_id'])}, '_id': ObjectId(local_inscription_no_client['_id'])},
{'$set': {'client_rattachement_id': str( {'$set': {'client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id'])}}) inscription_no_client_valide_no_locked_data['_id']),
'facture_client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id'])
},
})
"""
/!\ 23/07/2024 : Ajouter ce client dans la table : "liste_client_rattachement_id'.
En fait, vu que la ligne d'inscription a maintenant un client_rattachement_id et facture_client_rattachement_id
"""
liste_client_rattachement_id.append(str(inscription_no_client_valide_no_locked_data['_id']))
# Si il n'y a pas de client associé à cette adresse email, alors on crée le client # Si il n'y a pas de client associé à cette adresse email, alors on crée le client
if (is_inscription_no_client_exist == 0): elif (is_inscription_no_client_exist == 0):
new_client_contact_data = {} new_client_contact_data = {}
new_client_data = {} new_client_data = {}
@ -10051,26 +10071,22 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files,
mycommon.myprint(str(inspect.stack()[0][3]) + " WARNING : Impossible de créer le contact " + str( mycommon.myprint(str(inspect.stack()[0][3]) + " WARNING : Impossible de créer le contact " + str(
local_add_contact_retval)) local_add_contact_retval))
# Mise à jour de l'inscription avec l'_id du client # Mise à jour de l'inscription avec l'_id du nouveau client pour les champs : client_rattachement_id et facture_client_rattachement_id
MYSY_GV.dbname['inscription'].update_one({'partner_owner_recid': str(my_partner['recid']), MYSY_GV.dbname['inscription'].update_one({'partner_owner_recid': str(my_partner['recid']),
'_id': ObjectId(local_inscription_no_client['_id'])}, '_id': ObjectId(local_inscription_no_client['_id'])},
{'$set': {'client_rattachement_id': str( {'$set': {'client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id'])}}) inscription_no_client_valide_no_locked_data['_id']),
'facture_client_rattachement_id': str(
inscription_no_client_valide_no_locked_data['_id']),
# Verifier qu'il ya bien des inscriptions valides dans la session pour le client }})
liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id",
{'session_id': str(diction['session_id']), """
'status': '1', /!\ 23/07/2024 : Ajouter ce client dans la table : "liste_client_rattachement_id'.
'partner_owner_recid': str( En fait, vu que la ligne d'inscription a maintenant un client_rattachement_id et facture_client_rattachement_id
my_partner['recid']), """
"facture_client_rattachement_id": {'$ne': ''}, liste_client_rattachement_id.append(str(inscription_no_client_valide_no_locked_data['_id']))
"invoiced": {'$ne': '1'},
"_id": {
'$in': tab_my_inscription_ids_Object},
}
)
print(" ### la liste des liste_client_rattachement_id (client à facturer) = ", liste_client_rattachement_id)
# Sauvegarde des fichiers joints depuis le front # Sauvegarde des fichiers joints depuis le front
tab_saved_file_full_path = [] tab_saved_file_full_path = []
@ -10088,7 +10104,14 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files,
tab_local_invoice_ref_interne = [] tab_local_invoice_ref_interne = []
# Envoie des factures pour les inscrits AVEC client_id (conventions d'entreprise) """
/!\ : 23/07/2024 : A présent, toutes les lignes ont un client_rattachement_id et facture_client_rattachement_id
car pour ceux qui n'en avaient pas, la creation a ete faite ci-dessus.
"""
print( " ### la liste des liste_client_rattachement_id (client à facturer) : APRES GESTION inscriptions SANS CLIENT = ",
liste_client_rattachement_id)
# Envoie des factures pour les inscrits AVEC client_id
for single_client in liste_client_rattachement_id: for single_client in liste_client_rattachement_id:
print(" Traitement du client_id (client à facturer) = ", single_client) print(" Traitement du client_id (client à facturer) = ", single_client)

View File

@ -1484,7 +1484,7 @@ def Get_Given_Session_Action_Status_By_Document(diction):
si au moins 1, on met : partiel si au moins 1, on met : partiel
la clé est : courrier_template_tracking.courrier_template_type_document_ref_interne la clé est : courrier_template_tracking.courrier_template_type_document_ref_interne
-- clé de recherhce : document a traquer (courrier_template_tracking._id) et inscription_id -- clé de recherche : document a traquer (courrier_template_tracking._id) et inscription_id
/!\ 08/05/2024 : cette logique n'est pas valable dans le cas des convention car certains partipants /!\ 08/05/2024 : cette logique n'est pas valable dans le cas des convention car certains partipants
doivent avoir une convention entreprise alors que d'autres ont un convention individuelle doivent avoir une convention entreprise alors que d'autres ont un convention individuelle
@ -1505,14 +1505,15 @@ def Get_Given_Session_Action_Status_By_Document(diction):
inscrit_with_client_count = MYSY_GV.dbname['inscription'].count_documents( inscrit_with_client_count = MYSY_GV.dbname['inscription'].count_documents(
{'session_id':str(diction['session_id']), {'session_id':str(diction['session_id']),
'status': '1', 'status': '1',
'entreprise': '1',
'partner_owner_recid': str( 'partner_owner_recid': str(
my_partner['recid']), my_partner['recid']),
"client_rattachement_id": { '$ne': ''} }
}
) )
local_nb_inscrit = inscrit_with_client_count local_nb_inscrit = inscrit_with_client_count
print(" ### NB INSC CONVENTION_STAGIAIRE_ENTREPRISE = ", inscrit_with_client_count)
for val in List_participant: for val in List_participant:
local_qry = {'partner_owner_recid': str(my_partner['recid']), local_qry = {'partner_owner_recid': str(my_partner['recid']),
@ -1539,20 +1540,15 @@ def Get_Given_Session_Action_Status_By_Document(diction):
elif( doc_a_tracker['courrier_template_type_document_ref_interne'] == "CONVENTION_STAGIAIRE_INDIVIDUELLE") : elif( doc_a_tracker['courrier_template_type_document_ref_interne'] == "CONVENTION_STAGIAIRE_INDIVIDUELLE") :
inscrit_without_client_count = MYSY_GV.dbname['inscription'].count_documents({"$or": [{'session_id': str(diction['session_id']), inscrit_without_client_count = MYSY_GV.dbname['inscription'].count_documents({'session_id': str(diction['session_id']),
'status': '1', 'status': '1',
'entreprise': {'$ne': '1'},
'partner_owner_recid': str(my_partner['recid']), 'partner_owner_recid': str(my_partner['recid']),
"client_rattachement_id": '' }
}, )
{'session_id': str(diction['session_id']),
'status': '1',
'partner_owner_recid': str(my_partner['recid']),
'client_rattachement_id': {'$exists': False}
}]
}
)
local_nb_inscrit = inscrit_without_client_count local_nb_inscrit = inscrit_without_client_count
print(" ### NB INSC CONVENTION_STAGIAIRE_INDIVIDUELLE = ", inscrit_without_client_count)
for val in List_participant: for val in List_participant:
local_qry = {'partner_owner_recid': str(my_partner['recid']), local_qry = {'partner_owner_recid': str(my_partner['recid']),