04/09/22 - 17h30
parent
305d96eb45
commit
5dd8f6acc9
|
@ -674,13 +674,35 @@ def CreateInvoice(diction):
|
||||||
"""
|
"""
|
||||||
Mise à jour de la commande avec le prochaine date de facturation """
|
Mise à jour de la commande avec le prochaine date de facturation """
|
||||||
next_invoice_date = ""
|
next_invoice_date = ""
|
||||||
if( str(diction['periodicite']).lower() == "mensuel" ):
|
if ("next_invoice_date" in diction.keys()):
|
||||||
|
if diction['next_invoice_date']:
|
||||||
|
local_status, tmp_date = mycommon.TryToDateYYYMMDD(diction['next_invoice_date'])
|
||||||
|
|
||||||
|
print(" apres conversion tmp_date = "+str(tmp_date))
|
||||||
|
|
||||||
|
if( local_status and str(diction['periodicite']).lower() == "mensuel" ):
|
||||||
|
next_invoice_date = (tmp_date + relativedelta(months=+1)).date()
|
||||||
|
print(" ### next_invoice_date = "+str(next_invoice_date))
|
||||||
|
elif (local_status is False):
|
||||||
|
print(" ### IMPOSSIBLE DE FACTURER la COMMANDE")
|
||||||
|
return False
|
||||||
|
|
||||||
|
if (local_status and str(diction['periodicite']).lower() == "annuel"):
|
||||||
|
next_invoice_date = (tmp_date + relativedelta(years=+1)).date()
|
||||||
|
print(" ### next_invoice_date = " + str(next_invoice_date))
|
||||||
|
elif (local_status is False):
|
||||||
|
print(" ### IMPOSSIBLE DE FACTURER la COMMANDE")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
elif( str(diction['periodicite']).lower() == "mensuel" ):
|
||||||
next_invoice_date = datetime.today().date() + relativedelta(months=+1)
|
next_invoice_date = datetime.today().date() + relativedelta(months=+1)
|
||||||
|
|
||||||
if (str(diction['periodicite']).lower() == "annuel"):
|
elif (str(diction['periodicite']).lower() == "annuel"):
|
||||||
next_invoice_date = datetime.today().date() + relativedelta(years=+1)
|
next_invoice_date = datetime.today().date() + relativedelta(years=+1)
|
||||||
|
|
||||||
#print(" ####### prochaine facturation de la commande : "+str(diction['order_id'])+" LE : "+str(next_invoice_date))
|
print(" ####### prochaine facturation de la commande : "+str(diction['order_id'])+" LE : "+str(next_invoice_date))
|
||||||
|
|
||||||
coll_orders = MYSY_GV.dbname['sales_order']
|
coll_orders = MYSY_GV.dbname['sales_order']
|
||||||
ret_val_order = coll_orders.find_one_and_update(
|
ret_val_order = coll_orders.find_one_and_update(
|
||||||
|
@ -904,3 +926,40 @@ def GetCustomerInvoice(diction):
|
||||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||||
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||||
return False, "KO"
|
return False, "KO"
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Cette fonction va créer toutes les facture pour les commandes
|
||||||
|
dont la date facturation est arrivée à échéance (colonne : next_invoice_date)
|
||||||
|
|
||||||
|
IMPORTANT : Meme la facturation n'est pas faire le meme jours, on qu'on a un retard de X jours, ceci
|
||||||
|
n'est pas grave tant que X < 1 mois.
|
||||||
|
|
||||||
|
Car à la facturation, la date prochaine facturation se mettra à date de dernière facture + 1 mois ou un 1 an.
|
||||||
|
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
Cette fonction créer une facture
|
||||||
|
"""
|
||||||
|
def AutoamticCreateInvoice():
|
||||||
|
try:
|
||||||
|
|
||||||
|
|
||||||
|
field_list_obligatoire = ['client_recid', 'invoice_nom', 'order_id', 'order_date', 'total_ttc','total_tva','total_ht','item_0']
|
||||||
|
coll_order = MYSY_GV.dbname['sales_order']
|
||||||
|
|
||||||
|
today = datetime.today().date()
|
||||||
|
i = 0
|
||||||
|
for diction in coll_order.find({"next_invoice_date" : { '$lte' : str(today) }},{'_id':0}):
|
||||||
|
i = i +1
|
||||||
|
print(' Facturation de la commande '+str(diction['order_id'])+" -- "+str(diction['next_invoice_date']))
|
||||||
|
|
||||||
|
CreateInvoice(diction)
|
||||||
|
|
||||||
|
return True, str(i)+" Factures ont été créées"
|
||||||
|
|
||||||
|
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 créer les factures automatiques"
|
||||||
|
|
||||||
|
|
16
main.py
16
main.py
|
@ -1354,11 +1354,23 @@ def GetCustomerInvoice(invoiceid, token):
|
||||||
payload = {}
|
payload = {}
|
||||||
payload['token'] = str(token)
|
payload['token'] = str(token)
|
||||||
payload['invoiceid'] = str(invoiceid)
|
payload['invoiceid'] = str(invoiceid)
|
||||||
|
|
||||||
print(" ### payload facture = ", str(invoiceid), " token = ",str(token))
|
print(" ### payload facture = ", str(invoiceid), " token = ",str(token))
|
||||||
|
|
||||||
return factures.GetCustomerInvoice(payload)
|
return factures.GetCustomerInvoice(payload)
|
||||||
|
|
||||||
|
"""
|
||||||
|
API de facturation automatique des commandes
|
||||||
|
"""
|
||||||
|
@app.route('/myclass/api/AutoamticCreateInvoice/', methods=['GET','POST'])
|
||||||
|
@crossdomain(origin='*')
|
||||||
|
def AutoamticCreateInvoice():
|
||||||
|
# On recupere le corps (payload) de la requete
|
||||||
|
payload = request.form.to_dict()
|
||||||
|
print(" ### payload = ", str(payload))
|
||||||
|
status, message = factures.AutoamticCreateInvoice()
|
||||||
|
return jsonify(status=status, message=message)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(" debut api")
|
print(" debut api")
|
||||||
|
|
|
@ -1696,3 +1696,14 @@ def PutClassNote():
|
||||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||||
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||||
return False, "KO"
|
return False, "KO"
|
||||||
|
|
||||||
|
"""
|
||||||
|
Cette fonction essaye de convertir une chaine en date (yyyy-mm-dd)
|
||||||
|
"""
|
||||||
|
def TryToDateYYYMMDD(mydate):
|
||||||
|
try:
|
||||||
|
datetime.strptime(mydate, '%Y-%m-%d')
|
||||||
|
return True, datetime.strptime(mydate, '%Y-%m-%d')
|
||||||
|
|
||||||
|
except ValueError:
|
||||||
|
return False, False
|
Loading…
Reference in New Issue