05/06/23 - 15h
parent
e87572aa8d
commit
40ccd19f0a
|
@ -3,11 +3,13 @@
|
|||
<component name="ChangeListManager">
|
||||
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="02/06/23 - 22h">
|
||||
<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$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Template/MySy_Invoice_tpl.html" beforeDir="false" afterPath="$PROJECT_DIR$/Template/MySy_Invoice_tpl.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Template/MySy_Sales_Order_tpl.html" beforeDir="false" afterPath="$PROJECT_DIR$/Template/MySy_Sales_Order_tpl.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Template/invoice.html" beforeDir="false" afterPath="$PROJECT_DIR$/Template/invoice.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code_promo_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/code_promo_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/ela_factures_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/ela_factures_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/email_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/email_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/strype_payement.py" beforeDir="false" afterPath="$PROJECT_DIR$/strype_payement.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
1817
Log/log_file.log
1817
Log/log_file.log
File diff suppressed because one or more lines are too long
|
@ -179,12 +179,24 @@
|
|||
<table style="font-size:smaller; margin-left: auto;">
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
{% if params.discount_code is defined and
|
||||
params.discount_code|length > 2 %}
|
||||
<tr>
|
||||
<td>Remise </td>
|
||||
<td>{{params.discount_display_text}}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Montant Remise </td>
|
||||
<td>{{params.discount_montant_remise}}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Total HT</td>
|
||||
<td>{{params.total_ht}}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>TVA</td>
|
||||
<td>{{params.tva}} € </td>
|
||||
|
@ -201,57 +213,57 @@
|
|||
|
||||
<p> </p>
|
||||
<p
|
||||
style="font-size: 13px;margin-top: 1rem; line-height: normal; margin-bottom: 1rem; text-align: left;line-height: 1.6rem;">
|
||||
Cordialement<br /> <br/>
|
||||
<b>MySy Training Technology</b><br />
|
||||
Téléphone : +331 77 00 38 57<br />
|
||||
Email : contact@mysy-training.com<br />
|
||||
Site : https://www.mysy-training.com/
|
||||
</p>
|
||||
style="font-size: 13px;margin-top: 1rem; line-height: normal; margin-bottom: 1rem; text-align: left;line-height: 1.6rem;">
|
||||
Cordialement<br /> <br />
|
||||
<b>MySy Training Technology</b><br />
|
||||
Téléphone : +331 77 00 38 57<br />
|
||||
Email : contact@mysy-training.com<br />
|
||||
Site : https://www.mysy-training.com/
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#F9F9FF" style="height:30px;" width="600">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#F9F9FF" style="height:30px;" width="600">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#104277" width="600">
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="middle" width="600">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#104277" width="600">
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="middle" width="600">
|
||||
|
||||
<div style="
|
||||
<div style="
|
||||
padding: 10px 20px;
|
||||
|
||||
margin-bottom: 1rem;
|
||||
color: #F9F9FF;
|
||||
"><br />
|
||||
|
||||
<br />
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -15,7 +15,7 @@
|
|||
<style>
|
||||
html,
|
||||
body {
|
||||
font-family: 'Helvetica','sans-serif';
|
||||
font-family: 'Helvetica', 'sans-serif';
|
||||
}
|
||||
</style>
|
||||
|
||||
|
@ -154,7 +154,7 @@
|
|||
<tr>
|
||||
<td colspan="4" style="padding-top: 1rem;">
|
||||
{{params.detail_packs}}</td>
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
|
@ -171,12 +171,24 @@
|
|||
<table style="font-size:smaller; margin-left: auto;">
|
||||
|
||||
<tbody>
|
||||
|
||||
{% if params.discount_code is defined and
|
||||
params.discount_code|length > 2 %}
|
||||
<tr>
|
||||
<td>Remise </td>
|
||||
<td>{{params.discount_display_text}}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Montant Remise </td>
|
||||
<td>{{params.discount_montant_remise}}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Total HT</td>
|
||||
<td>{{params.total_ht}}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>TVA</td>
|
||||
<td>{{params.tva}} € </td>
|
||||
|
@ -195,7 +207,7 @@
|
|||
|
||||
<p
|
||||
style="font-size: 13px;margin-top: 1rem; line-height: normal; margin-bottom: 1rem; text-align: left;line-height: 1.6rem;">
|
||||
Cordialement<br /> <br/>
|
||||
Cordialement<br /> <br />
|
||||
<b>MySy Training Technology</b><br />
|
||||
Téléphone : +331 77 00 38 57<br />
|
||||
Email : contact@mysy-training.com<br />
|
||||
|
|
|
@ -75,13 +75,32 @@
|
|||
</div>
|
||||
|
||||
<table style="width:100%;padding: 5px;float:right;padding:0px;">
|
||||
<tr style="padding: 0px; padding-top:5px;font-size:0.9rem;">
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:center;">Montant HT: </td>
|
||||
<td style="text-align:center;">{{json_data.total_ht}}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
{% if json_data.discount_code is defined and json_data.discount_code|length > 2 %}
|
||||
|
||||
<tr style="padding:0px; padding-top:5px;font-size:0.9rem;">
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:center;">Remise : </td>
|
||||
<td style="text-align:center;">{{json_data.discount_display_text}}</td>
|
||||
</tr>
|
||||
|
||||
<tr style="padding:0px; padding-top:5px;font-size:0.9rem;">
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:center;">Montant Remise : </td>
|
||||
<td style="text-align:center;">{{json_data.discount_montant_remise}}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr style="padding: 0px; padding-top:5px;font-size:0.9rem;">
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:center;">Montant HT: </td>
|
||||
<td style="text-align:center;">{{json_data.total_ht}}</td>
|
||||
</tr>
|
||||
|
||||
<tr style="padding:0px; padding-top:5px;font-size:0.9rem;">
|
||||
<td style="text-align:left;"> </td>
|
||||
<td style="text-align:left;"> </td>
|
||||
|
|
|
@ -22,6 +22,7 @@ import ela_index_bdd_classes as eibdd
|
|||
import email_mgt as email
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Cette fonction créer un code promo
|
||||
Elle verifie que ce code n'existe pas deja
|
||||
|
@ -526,3 +527,74 @@ def Get_Given_Code_Promo(diction):
|
|||
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||
return False, "Impossible de recuperer le code promo"
|
||||
|
||||
"""
|
||||
Cette fonction verifie si un code promo est valide
|
||||
"""
|
||||
def Is_Valide_Code_Promo(diction):
|
||||
try:
|
||||
diction = mycommon.strip_dictionary(diction)
|
||||
|
||||
field_list = ['token','code_promo']
|
||||
incom_keys = diction.keys()
|
||||
for val in incom_keys:
|
||||
if val not in field_list:
|
||||
mycommon.myprint(str(inspect.stack()[0][
|
||||
3]) + " - Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée")
|
||||
return False, "Toutes les informations fournies ne sont pas valables"
|
||||
|
||||
"""
|
||||
Verification de la liste des champs obligatoires
|
||||
"""
|
||||
field_list_obligatoire = ['token','code_promo']
|
||||
for val in field_list_obligatoire:
|
||||
if val not in diction:
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ")
|
||||
return False, "Toutes les informations necessaires n'ont pas été fournies"
|
||||
|
||||
# Recuperation du recid du partner
|
||||
mydata = {}
|
||||
mytoken = ""
|
||||
if ("token" in diction.keys()):
|
||||
if diction['token']:
|
||||
mytoken = diction['token']
|
||||
|
||||
code_promo = ""
|
||||
if ("code_promo" in diction.keys()):
|
||||
if diction['code_promo']:
|
||||
code_promo = diction['code_promo']
|
||||
|
||||
|
||||
partner_recid = mycommon.get_parnter_recid_from_token(mytoken)
|
||||
if (partner_recid is False):
|
||||
mycommon.myprint(str(inspect.stack()[0][3]) + " - partner_recid est KO. Les données de connexion sont incorrectes ")
|
||||
return False, " Les données de connexion sont incorrectes "
|
||||
|
||||
coll_session = MYSY_GV.dbname['code_promo']
|
||||
myquery = {}
|
||||
myquery['valide'] = "1"
|
||||
myquery['locked'] = "0"
|
||||
|
||||
myquery['code'] = code_promo
|
||||
|
||||
RetObject = []
|
||||
nb_val = 0
|
||||
for retval in coll_session.find(myquery):
|
||||
debut_debut = datetime.strptime(str(retval['date_debut']).strip(), '%d/%m/%Y')
|
||||
date_fin = datetime.strptime(str(retval['date_fin']).strip(), '%d/%m/%Y')
|
||||
if (debut_debut <= datetime.now() and date_fin >= datetime.now() and retval['type'] in ['fix', 'percent'] ):
|
||||
RetObject.append(mycommon.JSONEncoder().encode(retval))
|
||||
nb_val = nb_val + 1
|
||||
|
||||
# Si aucun code valide trouvé, on retourne false aussi.
|
||||
if( nb_val == 0 ):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) + " - Le code promo '"+str(code_promo)+"' n'est pas valide ")
|
||||
return False, " - Le code promo '"+str(code_promo)+"' n'est pas valide "
|
||||
|
||||
return True, "- Le code promo '"+str(code_promo)+"' est valide "
|
||||
|
||||
except Exception as e:
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||
return False, " Impossible de verifier la validité du code le code promo"
|
|
@ -28,7 +28,7 @@ from flask import send_file
|
|||
from dateutil.relativedelta import relativedelta
|
||||
import class_mgt as class_mgt
|
||||
import strype_payement as Stripe
|
||||
|
||||
import code_promo_mgt as code_promo_mgt
|
||||
|
||||
class JSONEncoder(json.JSONEncoder):
|
||||
def default(self, o):
|
||||
|
@ -453,14 +453,15 @@ def createOrder(diction):
|
|||
nb_line = 0
|
||||
|
||||
num_facture = ""
|
||||
'''field_list = ['token', 'nb_product']
|
||||
|
||||
'''
|
||||
field_list = ['token', 'nb_product', 'periodicite', 'discount_code', 'discount_type', 'discount_valeur', 'discount_qty']
|
||||
incom_keys = diction.keys()
|
||||
for val in incom_keys:
|
||||
if val not in field_list:
|
||||
mycommon.myprint(str(inspect.stack()[0][
|
||||
3]) + " - Le champ '" + val + "' n'existe pas, Creation formation annulée")
|
||||
return False, " Impossible de créer la facture"
|
||||
3]) + " - Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée")
|
||||
return False, "Toutes les informations fournies ne sont pas valables", False
|
||||
|
||||
'''
|
||||
'''
|
||||
Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente,
|
||||
|
@ -482,6 +483,26 @@ def createOrder(diction):
|
|||
if diction['token']:
|
||||
my_token = diction['token']
|
||||
|
||||
discount_code = ""
|
||||
if ("discount_code" in diction.keys()):
|
||||
if diction['discount_code']:
|
||||
discount_code = diction['discount_code']
|
||||
|
||||
discount_type = ""
|
||||
if ("discount_type" in diction.keys()):
|
||||
if diction['discount_type']:
|
||||
discount_type = diction['discount_type']
|
||||
|
||||
discount_valeur = ""
|
||||
if ("discount_valeur" in diction.keys()):
|
||||
if diction['discount_valeur']:
|
||||
discount_valeur = diction['discount_valeur']
|
||||
|
||||
discount_qty = ""
|
||||
if ("discount_qty" in diction.keys()):
|
||||
if diction['discount_qty']:
|
||||
discount_qty = diction['discount_qty']
|
||||
|
||||
user_recid = "None"
|
||||
# Verification de la validité du token/mail dans le cas des user en mode connecté
|
||||
if (len(str(my_token)) > 0):
|
||||
|
@ -556,11 +577,68 @@ def createOrder(diction):
|
|||
row = "item_"+str(i)
|
||||
new_data[str(row)] = new_data_item
|
||||
|
||||
|
||||
|
||||
i = i + 1
|
||||
|
||||
|
||||
"""
|
||||
Recalcul du HT en incluant les remise, si remise
|
||||
"""
|
||||
montant_remise = 0
|
||||
if( discount_code ) :
|
||||
|
||||
local_status, local_discount_valeur = mycommon.IsFloat(discount_valeur)
|
||||
if( local_status is False):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][
|
||||
3]) + " la valeur du remise n'est pas correcte ")
|
||||
return False, "la valeur du remise n'est pas correcte ", None
|
||||
|
||||
local_status, local_discount_qty = mycommon.IsInt(discount_qty)
|
||||
if (local_status is False):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][
|
||||
3]) + " la valeur de 'discount_qty' n'est pas correcte ")
|
||||
return False, "la valeur de 'discount_qty' n'est pas correcte ", None
|
||||
|
||||
|
||||
|
||||
local_my_data = {}
|
||||
local_my_data['token'] = my_token
|
||||
local_my_data['code_promo'] = discount_code
|
||||
local_status, isValide_code_promo = code_promo_mgt.Is_Valide_Code_Promo(local_my_data)
|
||||
if (local_status is False):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][
|
||||
3]) + " Le code remise est invalide ")
|
||||
return False, " Le code remise est invalide ", None
|
||||
|
||||
|
||||
# Si le type de promo est 'percent'
|
||||
if( discount_type == 'percent'):
|
||||
tmp_val1 = mycommon.tryFloat(str(discount_valeur))/100
|
||||
|
||||
montant_remise = mycommon.tryFloat(str(total_ht)) * mycommon.tryFloat(tmp_val1)
|
||||
total_ht = str(mycommon.tryFloat(str(total_ht)) - mycommon.tryFloat(str(montant_remise)))
|
||||
#print(" #### percent : montant_remise = ", montant_remise)
|
||||
#print(" #### percent : total_ht = ", total_ht)
|
||||
|
||||
elif( discount_type == "fix"):
|
||||
montant_remise = mycommon.tryFloat(str(discount_valeur))
|
||||
total_ht = str(mycommon.tryFloat(str(total_ht)) - mycommon.tryFloat(str(montant_remise)))
|
||||
#print(" #### fix : montant_remise = ", montant_remise)
|
||||
#print(" #### fix : total_ht = ", total_ht)
|
||||
|
||||
if(mycommon.tryFloat(str(total_ht)) <= 0 ):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][
|
||||
3]) + " La remise est supérieure au montant HT. ")
|
||||
return False, " La remise est supérieure au montant HT ", None
|
||||
|
||||
new_data['discount_code'] = str(discount_code)
|
||||
new_data['discount_type'] = str(discount_type)
|
||||
new_data['discount_valeur'] = str(discount_valeur)
|
||||
new_data['discount_montant_remise'] = str(montant_remise)
|
||||
|
||||
new_data['total_ht'] = total_ht
|
||||
new_data['total_tva'] = mycommon.tryFloat(str(total_ht)) * MYSY_GV.TVA_TAUX
|
||||
new_data['total_ttc'] = mycommon.tryFloat(str(total_ht)) + mycommon.tryFloat(str(new_data['total_tva']))
|
||||
|
@ -730,7 +808,7 @@ def createOrder(diction):
|
|||
|
||||
new_data['order_id'] = "MySy_00"+str(mycommon.create_order_id())
|
||||
|
||||
#print(" la line à facturer est ::::: "+str(new_data))
|
||||
print(" ### la line à facturer est ::::: "+str(new_data))
|
||||
|
||||
# Enregistrement de la commande dans la systeme
|
||||
|
||||
|
@ -759,7 +837,7 @@ def createOrder(diction):
|
|||
return_document=ReturnDocument.AFTER
|
||||
)
|
||||
|
||||
# Apres la creation du nouvelle abonnement, il faut aller cloturer l'ancien abonnement actif
|
||||
# Apres la creation du nouvel abonnement, il faut aller cloturer l'ancien abonnement actif
|
||||
today_tmp = datetime.today().date()
|
||||
ret_val_cloture = coll_order.update_many({'order_id': {'$ne' : str(new_data['order_id'])}, 'valide': '1',
|
||||
'client_recid':str(user_recid)},
|
||||
|
@ -768,7 +846,7 @@ def createOrder(diction):
|
|||
|
||||
|
||||
# Facturation de la commande
|
||||
#print(" ######## lancement de la facturation total_ttc_float = " + str(total_ttc_float))
|
||||
print(" ######## lancement de la facturation total_ttc_float = " + str(total_ttc_float))
|
||||
if (total_ttc_float > 0):
|
||||
CreateInvoice(new_data)
|
||||
|
||||
|
@ -948,7 +1026,8 @@ def PrintAndSendInvoices(invoice_id=None):
|
|||
def convertHtmlToPdf(diction):
|
||||
try:
|
||||
field_list_obligatoire =['invoice_nom', 'invoice_adr_street', 'invoice_adr_zip', 'invoice_adr_city',
|
||||
'invoice_adr_country', 'invoice_id', 'invoice_date', 'due_date', 'order_id', 'item_0', 'total_ht', 'total_tva', 'total_ttc',]
|
||||
'invoice_adr_country', 'invoice_id', 'invoice_date', 'due_date', 'order_id', 'item_0',
|
||||
'total_ht', 'total_tva', 'total_ttc',]
|
||||
|
||||
for val in field_list_obligatoire:
|
||||
if val not in diction:
|
||||
|
@ -956,6 +1035,33 @@ def convertHtmlToPdf(diction):
|
|||
str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
|
||||
return False, " Impossible d'imprimer les factures"
|
||||
|
||||
#print(" ### convertHtmlToPdf diction =", diction)
|
||||
discount_code = ""
|
||||
if ("discount_code" in diction.keys()):
|
||||
if diction['discount_code']:
|
||||
discount_code = diction['discount_code']
|
||||
|
||||
discount_type = ""
|
||||
if ("discount_type" in diction.keys()):
|
||||
if diction['discount_type']:
|
||||
discount_type = diction['discount_type']
|
||||
|
||||
discount_valeur = ""
|
||||
if ("discount_valeur" in diction.keys()):
|
||||
if diction['discount_valeur']:
|
||||
discount_valeur = diction['discount_valeur']
|
||||
|
||||
discount_montant_remise = ""
|
||||
if ("discount_montant_remise" in diction.keys()):
|
||||
if diction['discount_montant_remise']:
|
||||
discount_montant_remise = diction['discount_montant_remise']
|
||||
|
||||
discount_display_text = ""
|
||||
if (discount_type == "fix"):
|
||||
discount_display_text = " -" + str(discount_valeur) + " €"
|
||||
elif (discount_type == "percent"):
|
||||
discount_display_text = " -" + str(discount_valeur) + " %"
|
||||
|
||||
|
||||
templateLoader = jinja2.FileSystemLoader(searchpath="./")
|
||||
templateEnv = jinja2.Environment(loader=templateLoader)
|
||||
|
@ -979,9 +1085,15 @@ def convertHtmlToPdf(diction):
|
|||
"total_ht": str(diction['total_ht']),
|
||||
"tva": str(diction['total_tva']),
|
||||
"total_ttc": str(diction['total_ttc']),
|
||||
"discount_montant_remise": discount_montant_remise,
|
||||
"discount_code": discount_code,
|
||||
"discount_type": discount_type,
|
||||
"discount_valeur": discount_valeur,
|
||||
"discount_display_text": discount_display_text,
|
||||
}
|
||||
}
|
||||
|
||||
#print(" ### body = ", body)
|
||||
sourceHtml = template.render(json_data=body["data"])
|
||||
orig_file_name = "invoice_"+str(diction['invoice_id'])+".pdf"
|
||||
outputFilename = str(MYSY_GV.INVOICE_DIRECTORY)+str(orig_file_name)
|
||||
|
@ -1030,6 +1142,9 @@ def convertHtmlToPdf(diction):
|
|||
except Exception as e:
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) +"Exception when calling SMTPApi->send_transac_email: %s\n" % e)
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||
|
||||
return False
|
||||
|
||||
|
||||
|
|
76
email_mgt.py
76
email_mgt.py
|
@ -955,6 +955,14 @@ Cette fonction envoie l'email de confirmation de la commande de vente
|
|||
'''
|
||||
def SalesOrderConfirmationEmail(account_mail, diction):
|
||||
try:
|
||||
|
||||
"""
|
||||
Liste des champs autorisés
|
||||
"""
|
||||
field_list= ['invoice_nom', 'periodicite', 'total_ht', 'total_tva', 'total_ttc',
|
||||
'order_id', 'date_update', 'nb_product', 'order_date',
|
||||
'discount_code', 'discount_type', 'discount_valeur', 'discount_montant_remise']
|
||||
|
||||
'''
|
||||
Verification des données obligatoires
|
||||
'''
|
||||
|
@ -984,6 +992,28 @@ def SalesOrderConfirmationEmail(account_mail, diction):
|
|||
client_pays = diction['invoice_adr_country']
|
||||
order_id = diction['order_id']
|
||||
date_order = diction['order_date']
|
||||
|
||||
discount_code = ""
|
||||
if ("discount_code" in diction.keys()):
|
||||
if diction['discount_code']:
|
||||
discount_code = diction['discount_code']
|
||||
|
||||
discount_type = ""
|
||||
if ("discount_type" in diction.keys()):
|
||||
if diction['discount_type']:
|
||||
discount_type = diction['discount_type']
|
||||
|
||||
discount_valeur = ""
|
||||
if ("discount_valeur" in diction.keys()):
|
||||
if diction['discount_valeur']:
|
||||
discount_valeur = diction['discount_valeur']
|
||||
|
||||
discount_montant_remise = ""
|
||||
if ("discount_montant_remise" in diction.keys()):
|
||||
if diction['discount_montant_remise']:
|
||||
discount_montant_remise = diction['discount_montant_remise']
|
||||
|
||||
|
||||
my_end_date = ""
|
||||
|
||||
if ("end_date" in diction.keys()):
|
||||
|
@ -1047,6 +1077,12 @@ def SalesOrderConfirmationEmail(account_mail, diction):
|
|||
print("debut envoi mail de test ")
|
||||
# on rentre les renseignements pris sur le site du fournisseur
|
||||
|
||||
discount_display_text = ""
|
||||
if( discount_type == "fix"):
|
||||
discount_display_text = " -"+str(discount_valeur)+" €"
|
||||
elif( discount_type == "percent"):
|
||||
discount_display_text = " -"+str(discount_valeur)+" %"
|
||||
|
||||
# msg = MIMEMultipart("alternative")
|
||||
msg = EmailMessage()
|
||||
|
||||
|
@ -1073,6 +1109,12 @@ def SalesOrderConfirmationEmail(account_mail, diction):
|
|||
"unit_price": unit_price,
|
||||
"montant": montant,
|
||||
"end_date": my_end_date,
|
||||
"discount_montant_remise": discount_montant_remise,
|
||||
"discount_code": discount_code,
|
||||
"discount_type": discount_type,
|
||||
"discount_valeur": discount_valeur,
|
||||
"discount_display_text": discount_display_text,
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
|
@ -1545,12 +1587,33 @@ def SendInvoiceEmail(account_mail, diction):
|
|||
tva = str(diction['total_tva'])
|
||||
total_ttc = str(diction['total_ttc'])
|
||||
|
||||
my_end_date = ""
|
||||
|
||||
my_end_date = ""
|
||||
if ("end_date" in diction.keys()):
|
||||
if diction.keys():
|
||||
my_end_date = "*Offre valable jusqu'au "+str(diction['end_date'])
|
||||
|
||||
discount_code = ""
|
||||
if ("discount_code" in diction.keys()):
|
||||
if diction['discount_code']:
|
||||
discount_code = diction['discount_code']
|
||||
|
||||
discount_type = ""
|
||||
if ("discount_type" in diction.keys()):
|
||||
if diction['discount_type']:
|
||||
discount_type = diction['discount_type']
|
||||
|
||||
discount_valeur = ""
|
||||
if ("discount_valeur" in diction.keys()):
|
||||
if diction['discount_valeur']:
|
||||
discount_valeur = diction['discount_valeur']
|
||||
|
||||
discount_montant_remise = ""
|
||||
if ("discount_montant_remise" in diction.keys()):
|
||||
if diction['discount_montant_remise']:
|
||||
discount_montant_remise = diction['discount_montant_remise']
|
||||
|
||||
|
||||
nb_line = mycommon.tryInt(diction['nb_product'])
|
||||
|
||||
if( nb_line == 0 ):
|
||||
|
@ -1622,6 +1685,12 @@ def SendInvoiceEmail(account_mail, diction):
|
|||
# msg = MIMEMultipart("alternative")
|
||||
msg = EmailMessage()
|
||||
|
||||
discount_display_text = ""
|
||||
if( discount_type == "fix"):
|
||||
discount_display_text = " -"+str(discount_valeur)+" €"
|
||||
elif( discount_type == "percent"):
|
||||
discount_display_text = " -"+str(discount_valeur)+" %"
|
||||
|
||||
# JINJA2
|
||||
templateLoader = jinja2.FileSystemLoader(searchpath="./")
|
||||
templateEnv = jinja2.Environment(loader=templateLoader)
|
||||
|
@ -1647,6 +1716,11 @@ def SendInvoiceEmail(account_mail, diction):
|
|||
"invoice_date": invoice_date,
|
||||
"due_date": due_date,
|
||||
"orign_order": orign_order,
|
||||
"discount_montant_remise": discount_montant_remise,
|
||||
"discount_code": discount_code,
|
||||
"discount_type": discount_type,
|
||||
"discount_valeur": discount_valeur,
|
||||
"discount_display_text": discount_display_text,
|
||||
}
|
||||
}
|
||||
sourceHtml = template.render(params=body["params"])
|
||||
|
|
|
@ -883,27 +883,37 @@ def strip_update_subscription_qty(diction):
|
|||
if local_ret_val['pack_service']:
|
||||
pack = local_ret_val['pack_service']
|
||||
|
||||
discount = ""
|
||||
if ("discount" in diction.keys()):
|
||||
if diction['discount']:
|
||||
discount = diction['discount']
|
||||
discount_code = ""
|
||||
if ("discount_code" in diction.keys()):
|
||||
if diction['discount_code']:
|
||||
discount_code = diction['discount_code']
|
||||
|
||||
discount_type = ""
|
||||
if ("discount_type" in diction.keys()):
|
||||
if diction['discount_type']:
|
||||
discount_type = diction['discount_type']
|
||||
|
||||
discount_valeur = ""
|
||||
if ("discount_valeur" in diction.keys()):
|
||||
if diction['discount_valeur']:
|
||||
discount_valeur = diction['discount_valeur']
|
||||
|
||||
price_id = ""
|
||||
if (str(pack).lower() == "gold"):
|
||||
price_id = MYSY_GV.STRIPE_GOLD_PRICE_ID
|
||||
# On ecrase la valeur celle du discount si il existe une discount
|
||||
if (str(discount) == "50"):
|
||||
if (str(discount_valeur) == "50" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_GOLD_PRICE_ID_50_OFF
|
||||
elif (str(discount) == "100"):
|
||||
elif (str(discount_valeur) == "100" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_GOLD_PRICE_ID_100_OFF
|
||||
|
||||
|
||||
elif (str(pack).lower() == "standard"):
|
||||
elif (str(pack).lower() == "standard" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_STANDARD_PRICE_ID
|
||||
# On ecrase la valeur celle du discount si il existe une discount
|
||||
if (str(discount) == "50"):
|
||||
if (str(discount_valeur) == "50" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_STANDARD_PRICE_ID_50_OFF
|
||||
elif (str(discount) == "100"):
|
||||
elif (str(discount_valeur) == "100" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_STANDARD_PRICE_ID_100_OFF
|
||||
|
||||
elif (str(pack).lower() == "test"):
|
||||
|
@ -1038,34 +1048,44 @@ def strip_update_subscription_plan(diction):
|
|||
qty = local_ret_val['nb_formation']
|
||||
"""
|
||||
|
||||
discount = ""
|
||||
if ("discount" in diction.keys()):
|
||||
if diction['discount']:
|
||||
discount = diction['discount']
|
||||
discount_code = ""
|
||||
if ("discount_code" in diction.keys()):
|
||||
if diction['discount_code']:
|
||||
discount_code = diction['discount_code']
|
||||
|
||||
discount_type = ""
|
||||
if ("discount_type" in diction.keys()):
|
||||
if diction['discount_type']:
|
||||
discount_type = diction['discount_type']
|
||||
|
||||
discount_valeur = ""
|
||||
if ("discount_valeur" in diction.keys()):
|
||||
if diction['discount_valeur']:
|
||||
discount_valeur = diction['discount_valeur']
|
||||
|
||||
price_id = ""
|
||||
if (str(pack).lower() == "gold"):
|
||||
price_id = MYSY_GV.STRIPE_GOLD_PRICE_ID
|
||||
# On ecrase la valeur celle du discount si il existe une discount
|
||||
if (str(discount) == "50"):
|
||||
if (str(discount_valeur) == "50" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_GOLD_PRICE_ID_50_OFF
|
||||
elif (str(discount) == "100"):
|
||||
elif (str(discount_valeur) == "100" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_GOLD_PRICE_ID_100_OFF
|
||||
|
||||
elif (str(pack).lower() == "standard"):
|
||||
price_id = MYSY_GV.STRIPE_STANDARD_PRICE_ID
|
||||
# On ecrase la valeur celle du discount si il existe une discount
|
||||
if (str(discount) == "50"):
|
||||
if (str(discount_valeur) == "50" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_STANDARD_PRICE_ID_50_OFF
|
||||
elif (str(discount) == "100"):
|
||||
elif (str(discount_valeur) == "100" and str(discount_type) == "percent"):
|
||||
price_id = MYSY_GV.STRIPE_STANDARD_PRICE_ID_100_OFF
|
||||
|
||||
elif (str(pack).lower() == "test"):
|
||||
price_id = MYSY_GV.STRIPE_TEST_PRICE_ID
|
||||
|
||||
|
||||
print(" ### pack = ", pack, " ## price_id = ", price_id)
|
||||
print(" #### str(local_ret_val['stripe_subscription_id']) = ", str(local_ret_val['stripe_subscription_id']))
|
||||
#print(" ### pack = ", pack, " ## price_id = ", price_id)
|
||||
#print(" #### str(local_ret_val['stripe_subscription_id']) = ", str(local_ret_val['stripe_subscription_id']))
|
||||
|
||||
current_subscription = stripe.Subscription.retrieve(str(local_ret_val['stripe_subscription_id']))
|
||||
|
||||
|
|
Loading…
Reference in New Issue