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"?>
<project version="4">
<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$/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$/partner_base_setup.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_base_setup.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_order.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_order.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -76,13 +75,6 @@
<option name="presentableId" value="Default" />
<updated>1680804787304</updated>
</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">
<created>1710970329202</created>
<option name="number" value="00245" />
@ -419,7 +411,14 @@
<option name="project" value="LOCAL" />
<updated>1715358191843</updated>
</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 />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -461,7 +460,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="11/04/2024 - 17h02" />
<MESSAGE value="12/04/2024 - 15h05" />
<MESSAGE value="14/04/2024 - 23h05" />
<MESSAGE value="17/04/2024 - 21h04" />
@ -486,6 +484,7 @@
<MESSAGE value="08/05/2024 - 21h30" />
<MESSAGE value="0dfd" />
<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>
</project>

View File

@ -10,7 +10,9 @@ from pymongo import MongoClient
import json
from bson import ObjectId
import re
from datetime import datetime
from datetime import datetime, date, timedelta
import module_editique
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)
"""
CRON fonction qui envoie les demandes d'enquete
"""
def Cron_Send_Survey():
try:
for val in MYSY_GV.dbname['survey'].find({"automatique_traitement":"1",
@ -204,6 +209,162 @@ def Cron_Send_Survey():
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, ""

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)
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__':
print(" debut api")
context = SSL.Context(SSL.SSLv23_METHOD)
@ -9185,8 +9192,10 @@ if __name__ == '__main__':
"""
scheduler = BackgroundScheduler()
# Create the job
#scheduler.add_job(func=Flask_Cron_Strip_Get_Customer_Abonnement_Data, trigger="interval", minutes=5)
scheduler.add_job(func=Global_MySy_Cron_Traitement, trigger="interval", minutes=2)
scheduler.add_job(func=Flask_Cron_Strip_Get_Customer_Abonnement_Data, trigger="interval", minutes=3)
scheduler.add_job(func=Internal_Global_MySy_Cron_Traitement, trigger="interval", minutes=2)
print(" ### scheduler.print_jobs() = ", scheduler.print_jobs())
# Start the scheduler
scheduler.start()