diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7ddcb18..0ec9a1f 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,11 +1,10 @@ - + - @@ -461,7 +460,6 @@ - @@ -486,6 +484,7 @@ - \ No newline at end of file diff --git a/Session_Formation.py b/Session_Formation.py index 694c76d..3fad205 100644 --- a/Session_Formation.py +++ b/Session_Formation.py @@ -1138,7 +1138,7 @@ def GetActiveSession_Cities_And_Distance_Formation_List(diction): RetObject = [] - print(" ### GetActiveSessionFormation_List myquery = ", myquery) + print(" ### GetActiveSession_Cities_And_Distance_Formation_List myquery = ", myquery) for retval in coll_session.find(myquery): local_tmp = retval @@ -1147,8 +1147,12 @@ def GetActiveSession_Cities_And_Distance_Formation_List(diction): tmp_debut_inscritp = str(local_tmp['date_debut_inscription']).strip().split(" ") tmp_fin_inscritp = str(local_tmp['date_fin_inscription']).strip().split(" ") - debut_inscr = datetime.strptime(str(tmp_debut_inscritp[0]).strip(), '%d/%m/%Y') - fin_inscr = datetime.strptime(str(tmp_fin_inscritp[0]).strip(), '%d/%m/%Y') + local_status_tmp_debut_inscritp = mycommon.CheckisDate(str(tmp_debut_inscritp[0])) + local_status_tmp_fin_inscritp = mycommon.CheckisDate(str(tmp_fin_inscritp[0])) + + if( local_status_tmp_debut_inscritp and local_status_tmp_fin_inscritp ): + debut_inscr = datetime.strptime(str(tmp_debut_inscritp[0]).strip(), '%d/%m/%Y') + fin_inscr = datetime.strptime(str(tmp_fin_inscritp[0]).strip(), '%d/%m/%Y') #print(" #### date_debut_inscription = ", debut_inscr, " date_fin_inscription = ", fin_inscr, " NOW = ",datetime.now()) if(debut_inscr <= datetime.now() and fin_inscr >= datetime.now()): @@ -1539,6 +1543,7 @@ def GetAllValideSessionPartner_List(diction): RetObject.append(mycommon.JSONEncoder().encode(val)) + return True, RetObject @@ -4215,12 +4220,26 @@ def Delete_SessionFormation(diction): # Verifier qu'il n'y a pas d'incription valide inscription_count_qry = {'session_id':str(session_id), 'status':{'$in':['0', '1', '2']} , 'partner_owner_recid':str(partner_recid)} - print(" #### inscription_count_qry aa =", inscription_count_qry) + #print(" #### inscription_count_qry aa =", inscription_count_qry) inscription_count = MYSY_GV.dbname['inscription'].count_documents(inscription_count_qry) if( inscription_count > 0 ): mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de supprimer la session. Vous avez "+str(inscription_count)+" inscription(s) associée(s) ") return False, "Impossible de supprimer la session. Vous avez "+str(inscription_count)+" inscription(s) associée(s)" + + """ + Verifier que l'inscription n'est pas utilisée dans un devis : 'partner_order_line' + """ + is_session_in_partner_order_line_count = MYSY_GV.dbname['partner_order_line'].count_documents({'order_line_session_id':str(session_id), + 'partner_owner_recid':str(partner_recid)}) + + if( is_session_in_partner_order_line_count > 0 ): + mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de supprimer la session. Vous avez " + str( + is_session_in_partner_order_line_count) + " devis ou commandes (s) associé(s) ") + return False, "Impossible de supprimer la session. Vous avez " + str( + is_session_in_partner_order_line_count) + " devis ou commandes (s) associé(s) " + + # Suppression des insciption eventuellement annulées MYSY_GV.dbname['inscription'].delete_many({'session_id':str(session_id)}) @@ -4316,9 +4335,25 @@ def Delete_List_SessionFormation(diction): inscription_count = MYSY_GV.dbname['inscription'].count_documents(inscription_count_qry) if( inscription_count > 0 ): session_formation_data = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(session_id)), 'partner_owner_recid':str(partner_recid)}) - mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées.Suppression en masse annulée ") + mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées.Suppression en masse annulée ") return False, "Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées. Suppression en masse annulée" + """ + Verifier que l'inscription n'est pas utilisée dans un devis : 'partner_order_line' + """ + is_session_in_partner_order_line_count = MYSY_GV.dbname['partner_order_line'].count_documents( + {'order_line_session_id': str(session_id), + 'partner_owner_recid': str(partner_recid)}) + + if (is_session_in_partner_order_line_count > 0): + session_formation_data = MYSY_GV.dbname['session_formation'].find_one( + {'_id': ObjectId(str(session_id)), 'partner_owner_recid': str(partner_recid)}) + + mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez " + str( + is_session_in_partner_order_line_count) + " devis ou commandes (s) associé(s) ") + return False, "Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez " + str( + is_session_in_partner_order_line_count) + " devis ou commandes (s) associé(s) " + # Suppression des insciption eventuellement annulées MYSY_GV.dbname['inscription'].delete_many({'session_id':{'$in':list_session_id}}) @@ -12540,7 +12575,7 @@ def Add_SessionFormation_From_Quotation_Line(diction): 'lms_class_code', 'session_ondemande', 'source', 'session_etape', 'pays', 'formateur_id', 'titre', 'location_type', 'is_bpf', 'site_formation_id', 'price_by', - 'quotation_line_id'] + 'quotation_line_id', 'resa_inscrit'] incom_keys = diction.keys() for val in incom_keys: @@ -12553,7 +12588,7 @@ def Add_SessionFormation_From_Quotation_Line(diction): Verification de la liste des champs obligatoires """ field_list_obligatoire = ['token', 'date_debut', 'date_fin', 'nb_participant', - 'class_id','code_session', 'quotation_line_id' ] + 'class_id','code_session', 'quotation_line_id', 'resa_inscrit' ] for val in field_list_obligatoire: if val not in diction: @@ -12610,10 +12645,17 @@ def Add_SessionFormation_From_Quotation_Line(diction): str(inspect.stack()[0][3]) + " Le devis n'est pas valide ") return False, " Le devis n'est pas valide " + + + local_resa_inscrit = diction['resa_inscrit'] + local_line_qotation_qty = diction['nb_participant'] + local_quotation_line_id = diction['quotation_line_id'] + + mydata = diction - - del diction['token'] + del diction['resa_inscrit'] + del diction['quotation_line_id'] @@ -12628,6 +12670,9 @@ def Add_SessionFormation_From_Quotation_Line(diction): mydata['price_by'] = "persession" mydata['session_status'] = "1" + mydata['date_debut_inscription'] = str(mydata['date_debut']) + mydata['date_fin_inscription'] = str(mydata['date_fin']) + mydata['date_update'] = str(datetime.now()) mydata['update_by'] = str(my_partner['_id']) mydata['partner_owner_recid'] = str(my_partner['recid']) @@ -12687,7 +12732,7 @@ def Add_SessionFormation_From_Quotation_Line(diction): Apres la creation de la session, on met à jour la ligne du devis en ajoutant l'id de la session """ update_quotation_line_id = MYSY_GV.dbname['partner_order_line'].find_one_and_update( - {'_id': ObjectId(str(diction['quotation_line_id'])), + {'_id': ObjectId(str(local_quotation_line_id)), 'partner_owner_recid': str(my_partner['recid']), 'valide': '1', 'locked': '0'}, @@ -12697,6 +12742,71 @@ def Add_SessionFormation_From_Quotation_Line(diction): ) + """ + Si l'option de reservation des inscrit est activée alors on reserve les places + + """ + if( local_resa_inscrit == "1"): + cpt = 0 + line_qotation_qty = mycommon.tryInt(local_line_qotation_qty ) + + quotation_line_data = MYSY_GV.dbname['partner_order_line'].find_one( + {'_id': ObjectId(str(local_quotation_line_id)), + 'valide': '1', + 'locked': '0', + 'partner_owner_recid': str(my_partner['recid']), + 'order_line_type': 'devis', + + }) + + + quotation_header_data = MYSY_GV.dbname['partner_order_header'].find_one( + {'_id':ObjectId(str(quotation_line_data['order_header_id'])), + 'order_header_ref_interne':str(quotation_line_data['order_header_ref_interne']), + 'valide': '1', + 'locked': '0', + 'partner_owner_recid': str(my_partner['recid']), + + }) + + nb_resa_line = 0 + while (cpt < line_qotation_qty): + cpt = cpt + 1 + + new_data = {} + new_data['nom'] = str(quotation_header_data['order_header_ref_interne']) + "_Reservation_Nom_" + str(cpt) + new_data['prenom'] = str(quotation_header_data['order_header_ref_interne']) + "_Reservation_Prenom_" + str(cpt) + new_data['email'] = str(quotation_header_data['order_header_ref_interne']) + "_Reservation_mail_" + str( cpt) + "@mail.com" + new_data['telephone'] = "01010101" + new_data['modefinancement'] = "" + new_data['class_internal_url'] = str(class_id_data['internal_url']) + new_data['session_id'] = str(local_inserted_id) + + new_data['client_rattachement_id'] = str(quotation_header_data['order_header_client_id']) + new_data['civilite'] = "neutre" + new_data['quotation_id'] = str(quotation_line_data['order_header_id']) + new_data['status'] = "0" + + """ + /!\ + 22/04/2024 :On a besoin du token pour utiliser la fonction standard. + On va aller recuperer le token du compte principale du partner + /!\ + """ + main_account_data = MYSY_GV.dbname['partnair_account'].find_one( + {'recid': str(diction['partner_owner_recid']), + 'active': '1', 'is_partner_admin_account': '1'}) + new_data['token'] = str(main_account_data['token']) + + local_insert_status, local_insert_retval = Inscription_mgt.AddStagiairetoClass(new_data) + + if (local_insert_status is False): + is_warning = "1" + warning_msg = warning_msg + "\n" + str(local_insert_retval) + + else: + nb_resa_line = nb_resa_line + 1 + return True, " La session de formation à bien été créée" diff --git a/partner_order.py b/partner_order.py index 066b0cf..f882dac 100644 --- a/partner_order.py +++ b/partner_order.py @@ -2268,7 +2268,11 @@ def Add_Update_Partner_Order_Line(diction): return False, " L'identifiant de session de formation "+str(diction['order_line_session_id'])+" n'est pas valide " order_line_session_id = str(diction['order_line_session_id']) - data['order_line_session_id'] = order_line_session_id + + """ + /!\ : Il peut arrivé qu'on souhaite supprimer la session du devis ou la commande, alors on autorise la mise à jour meme si vide + """ + data['order_line_session_id'] = order_line_session_id order_line_type = "" @@ -3359,7 +3363,7 @@ def Get_Given_Partner_Order_Lines(diction): user['valide'] = retval['valide'] user['locked'] = retval['locked'] - if( "order_line_session_id" in retval.keys() ): + if( "order_line_session_id" in retval.keys() and retval['order_line_session_id']): user['order_line_session_id'] = retval['order_line_session_id'] # Recuperation du code de la session @@ -3521,7 +3525,7 @@ def Get_Given_Partner_Order_Lines(diction): user['valide'] = retval['valide'] user['locked'] = retval['locked'] - if ("order_line_session_id" in retval.keys()): + if ("order_line_session_id" in retval.keys() and retval['order_line_session_id']): user['order_line_session_id'] = retval['order_line_session_id'] # Recuperation du code de la session @@ -4515,7 +4519,7 @@ def Get_Given_Line_Of_Partner_Order_Lines(diction): user['order_header_id'] = retval['order_header_id'] user['order_header_ref_interne'] = retval['order_header_ref_interne'] - if ("order_line_session_id" in retval.keys()): + if ("order_line_session_id" in retval.keys() and retval['order_line_session_id']): user['order_line_session_id'] = retval['order_line_session_id'] # Recuperation du code de la session @@ -4680,7 +4684,7 @@ def Get_Given_Line_Of_Partner_Order_Lines(diction): user['valide'] = retval['valide'] user['locked'] = retval['locked'] - if ("order_line_session_id" in retval.keys()): + if ("order_line_session_id" in retval.keys() and retval['order_line_session_id']): user['order_line_session_id'] = retval['order_line_session_id'] # Recuperation du code de la session @@ -4830,7 +4834,7 @@ def Compute_Order_Header(diction): partner_taux_tva = IsInt_retval - print(" ### COMPUTE : le taux de TVA = ", str(partner_taux_tva)) + #print(" ### COMPUTE : le taux de TVA = ", str(partner_taux_tva)) # Verification de la validité de l'order qry = {'_id':ObjectId(str(diction['_id'])), 'valide':'1', 'locked':'0', 'partner_owner_recid':str(my_partner['recid'])}