master
cherif 2024-05-11 19:30:07 +02:00
parent fb7b0eabe1
commit dc2d857421
4 changed files with 3273 additions and 17 deletions

View File

@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="10/05/2024 - 18h30"> <list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="gdf">
<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$/Job_Cron.py" beforeDir="false" afterPath="$PROJECT_DIR$/Job_Cron.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$/partner_base_setup.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_base_setup.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_order.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_order.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" />
@ -76,13 +75,6 @@
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1680804787304</updated> <updated>1680804787304</updated>
</task> </task>
<task id="LOCAL-00244" summary="19/03/2024 - 17h30">
<created>1710866627531</created>
<option name="number" value="00244" />
<option name="presentableId" value="LOCAL-00244" />
<option name="project" value="LOCAL" />
<updated>1710866627532</updated>
</task>
<task id="LOCAL-00245" summary="20/03/2024 - 22h30"> <task id="LOCAL-00245" summary="20/03/2024 - 22h30">
<created>1710970329202</created> <created>1710970329202</created>
<option name="number" value="00245" /> <option name="number" value="00245" />
@ -419,7 +411,14 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1715358191843</updated> <updated>1715358191843</updated>
</task> </task>
<option name="localTasksCounter" value="293" /> <task id="LOCAL-00293" summary="gdf">
<created>1715422956048</created>
<option name="number" value="00293" />
<option name="presentableId" value="LOCAL-00293" />
<option name="project" value="LOCAL" />
<updated>1715422956049</updated>
</task>
<option name="localTasksCounter" value="294" />
<servers /> <servers />
</component> </component>
<component name="Vcs.Log.Tabs.Properties"> <component name="Vcs.Log.Tabs.Properties">
@ -461,7 +460,6 @@
</option> </option>
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<MESSAGE value="11/04/2024 - 17h02" />
<MESSAGE value="12/04/2024 - 15h05" /> <MESSAGE value="12/04/2024 - 15h05" />
<MESSAGE value="14/04/2024 - 23h05" /> <MESSAGE value="14/04/2024 - 23h05" />
<MESSAGE value="17/04/2024 - 21h04" /> <MESSAGE value="17/04/2024 - 21h04" />
@ -486,6 +484,7 @@
<MESSAGE value="08/05/2024 - 21h30" /> <MESSAGE value="08/05/2024 - 21h30" />
<MESSAGE value="0dfd" /> <MESSAGE value="0dfd" />
<MESSAGE value="10/05/2024 - 18h30" /> <MESSAGE value="10/05/2024 - 18h30" />
<option name="LAST_COMMIT_MESSAGE" value="10/05/2024 - 18h30" /> <MESSAGE value="gdf" />
<option name="LAST_COMMIT_MESSAGE" value="gdf" />
</component> </component>
</project> </project>

View File

@ -10,7 +10,9 @@ from pymongo import MongoClient
import json import json
from bson import ObjectId from bson import ObjectId
import re import re
from datetime import datetime from datetime import datetime, date, timedelta
import module_editique import module_editique
import prj_common as mycommon import prj_common as mycommon
@ -152,6 +154,9 @@ def Global_MySy_Cron_Traitement():
return False, str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno) return False, str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno)
"""
CRON fonction qui envoie les demandes d'enquete
"""
def Cron_Send_Survey(): def Cron_Send_Survey():
try: try:
for val in MYSY_GV.dbname['survey'].find({"automatique_traitement":"1", for val in MYSY_GV.dbname['survey'].find({"automatique_traitement":"1",
@ -204,6 +209,162 @@ def Cron_Send_Survey():
upsert=False, upsert=False,
) )
return True, ""
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
return False, str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno)
"""
CRON fonction qui fait les relances de devis
/!\ Algorithme :
1 - Recuperer dans la collection "base_partner_setup" les partenaires
qui ont la relance auto active : "relance_auto"
2 - Pour chaque devis du partenaire concernée "partner_owner_recid", recuperé à l'etape 1
Verifier que les devis repondent aux critères suivants (la collection : partner_order_header, order_header_type = "devis"
- devis n'a pas expiré
- devis relance_auto = 1
- devis status : En cours => valeur 1
- devis nb_relance non depassé
- on ne relance un devis que la frequence de la relance est gerée
"""
def Cron_Quotation_Relance():
try:
todays_date = str(date.today().strftime("%d/%m/%Y"))
todays_date_ISODATE = datetime.strptime(str(todays_date), '%d/%m/%Y')
for relance_setp in MYSY_GV.dbname['base_partner_setup'].find({'valide':'1',
'locked':'0',
'config_name':'relance_auto',
'config_value':'1',
'related_collection':'quotation',
'partner_owner_recid': {'$ne': 'default'},
}):
if( "partner_owner_recid" in relance_setp.keys() and relance_setp['partner_owner_recid'] ):
local_partner_owner_recid = str(relance_setp['partner_owner_recid'])
devis_qery_match = {'$and': [{'partner_owner_recid':str(local_partner_owner_recid),
'valide':'1',
'locked':'0',
'relance_auto':'1'},
{
'mysy_devis_expiration_date': {
'$gte': todays_date_ISODATE,
}
}, ]}
pipe_qry = ([
{"$addFields": {
"mysy_devis_expiration_date": {
'$dateFromString': {
'dateString': '$order_header_date_expiration',
'format': "%d/%m/%Y"
}
}
}
},
{'$match': devis_qery_match},
])
#print(" ## pipe_qry Cron_Quotation_Relance = ", pipe_qry)
for local_devis in MYSY_GV.dbname['partner_order_header'].aggregate(pipe_qry):
#print( "### local_devis a traiter = ", local_devis)
relance_done = 0
nb_limite_relance = 0
if( "nb_relance" in local_devis.keys() and local_devis['nb_relance']):
relance_done = mycommon.tryInt(str(local_devis['nb_relance']))
if ("nb_relance_auto" in local_devis.keys() and local_devis['nb_relance_auto']):
nb_limite_relance = mycommon.tryInt(str(local_devis['nb_relance_auto']))
date_derniere_relance_auto = "01/12/2099"
if( "date_dernier_relance_auto" in local_devis.keys() and local_devis['date_dernier_relance_auto'] ):
date_derniere_relance_auto = str(local_devis['date_dernier_relance_auto'])[0:10]
date_derniere_relance_auto_ISODATE = datetime.strptime(str(date_derniere_relance_auto), '%d/%m/%Y')
frequence_relance_auto = 0
if ("frequence_relance_auto" in local_devis.keys() and local_devis['frequence_relance_auto']):
frequence_relance_auto = mycommon.tryInt(str(local_devis['frequence_relance_auto']))
new_relance_date_ISODATE = date_derniere_relance_auto_ISODATE + timedelta(days=frequence_relance_auto)
print(" ### LA frequence_relance_auto ", frequence_relance_auto)
print(" ### LA dernière relance date de ", date_derniere_relance_auto)
print(" ### LA PROCHAINE RELANCE EST ", new_relance_date_ISODATE)
if( relance_done <= nb_limite_relance ):
"""
On fait le traitement, on envoie le mail
"""
"""
Une fois la relance faite, on met à jour le devis avec les infos suivant :
- liste_relance
"""
frequence_relance_auto_reached = "0"
if("list_relance" in local_devis.keys() and local_devis['list_relance']):
local_node = {}
local_node['date_relance'] = str(date.today())
local_devis['list_relance'].append(local_node)
else :
local_node = {}
local_node['date_relance'] = str(date.today())
local_devis['list_relance'] = []
local_devis['list_relance'].append(local_node)
nb_relance = str(len(local_devis['list_relance']))
local_data_update = local_devis
id_to_update = str(local_data_update['_id'])
del local_data_update['_id']
del local_data_update['mysy_devis_expiration_date']
local_data_update['nb_relance'] = str(nb_relance)
local_data_update['date_dernier_relance_auto'] = str(todays_date)
result = MYSY_GV.dbname['partner_order_header'].find_one_and_update(
{'_id': ObjectId(str(id_to_update)),
'valide': '1',
'locked': '0'},
{"$set": local_data_update},
upsert=False,
return_document=ReturnDocument.AFTER
)
else:
print(" limite relance atteint : ")
print(" limite relance_done : ", relance_done)
print(" limite nb_limite_relance : ", nb_limite_relance)
return True, "" return True, ""

File diff suppressed because it is too large Load Diff

13
main.py
View File

@ -9162,6 +9162,13 @@ def Global_MySy_Cron_Traitement():
return jsonify(status=status, message=retval) return jsonify(status=status, message=retval)
def Internal_Global_MySy_Cron_Traitement():
print(" ### CRONNN Internal_Global_MySy_Cron_Traitement : payload = ")
#localStatus, message = Stripe.Cron_Strip_Get_Customer_Abonnement_Data()
return True
if __name__ == '__main__': if __name__ == '__main__':
print(" debut api") print(" debut api")
context = SSL.Context(SSL.SSLv23_METHOD) context = SSL.Context(SSL.SSLv23_METHOD)
@ -9185,8 +9192,10 @@ if __name__ == '__main__':
""" """
scheduler = BackgroundScheduler() scheduler = BackgroundScheduler()
# Create the job # Create the job
#scheduler.add_job(func=Flask_Cron_Strip_Get_Customer_Abonnement_Data, trigger="interval", minutes=5) scheduler.add_job(func=Flask_Cron_Strip_Get_Customer_Abonnement_Data, trigger="interval", minutes=3)
scheduler.add_job(func=Global_MySy_Cron_Traitement, trigger="interval", minutes=2) scheduler.add_job(func=Internal_Global_MySy_Cron_Traitement, trigger="interval", minutes=2)
print(" ### scheduler.print_jobs() = ", scheduler.print_jobs())
# Start the scheduler # Start the scheduler
scheduler.start() scheduler.start()