master
parent
fb7b0eabe1
commit
dc2d857421
|
@ -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>
|
163
Job_Cron.py
163
Job_Cron.py
|
@ -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, ""
|
||||
|
|
3087
Log/log_file.log
3087
Log/log_file.log
File diff suppressed because it is too large
Load Diff
13
main.py
13
main.py
|
@ -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()
|
||||
|
||||
|
|
Loading…
Reference in New Issue