Browse Source

fixed up invoice payments to include pending

master
Alan Woodman 3 months ago
parent
commit
a60c1393ee
  1. 52
      pending_fixup.py
  2. 2
      query_mysql.py
  3. 22
      test.py

52
pending_fixup.py

@ -0,0 +1,52 @@
import json
import stripe
from typing import List, Dict, Union, Any
from app import create_app, db
from models import Payments, PaymentBatch, SinglePayments, PaymentPlans
from splynx import Splynx, SPLYNX_URL, SPLYNX_KEY, SPLYNX_SECRET
from services import log_activity
from config import Config
from sqlalchemy import and_
splynx = Splynx(url=SPLYNX_URL, key=SPLYNX_KEY, secret=SPLYNX_SECRET)
api_key = Config.STRIPE_LIVE_API_KEY
stripe.api_key = api_key
def find_pay_splynx_invoices(splynx_id: int, result: dict) -> List[Dict[str, Any]]:
#result = splynx.get(url=f"/api/2.0/admin/finance/invoices?main_attributes[customer_id]={splynx_id}&main_attributes[status]=not_paid&main_attributes[status]=pending")
invoice_pay = {
"status": "paid"
}
for pay in result:
res = splynx.put(url=f"/api/2.0/admin/finance/invoices/{pay['id']}", params=invoice_pay)
if __name__ == "__main__":
app = create_app()
i = 1
#cust_bill = splynx.get(url=f"/api/2.0/admin/customers/customer-billing/31")
#print(json.dumps(cust_bill,indent=2))
with app.app_context():
custs = db.session.query(PaymentBatch,Payments)\
.join(Payments, Payments.PaymentBatch_ID == PaymentBatch.id)\
.filter(and_(PaymentBatch.id.in_((102,103)), Payments.Success == True))\
.all()
print(len(custs))
for cust in custs:
cust_bill = splynx.get(url=f"/api/2.0/admin/customers/customer-billing/{cust.Payments.Splynx_ID}")
print(f"{i}/{len(custs)}")
if cust_bill['deposit'] == 0:
result = splynx.get(url=f"/api/2.0/admin/finance/invoices?main_attributes[customer_id]={cust.Payments.Splynx_ID}&main_attributes[status]=pending")
#print(json.dumps(result,indent=2))
if len(result) > 0:
print(f"\t{cust.Payments.Splynx_ID} - Has unpaid invoices")
find_pay_splynx_invoices(splynx_id=cust.Payments.Splynx_ID, result=result)
i += 1

2
query_mysql.py

@ -153,7 +153,7 @@ def create_customer_friendly_message(payment_data: dict, error_details: str) ->
def find_pay_splynx_invoices(splynx_id: int) -> List[Dict[str, Any]]: def find_pay_splynx_invoices(splynx_id: int) -> List[Dict[str, Any]]:
result = splynx.get(url=f"/api/2.0/admin/finance/invoices?main_attributes[customer_id]={splynx_id}&main_attributes[status]=not_paid") result = splynx.get(url=f"/api/2.0/admin/finance/invoices?main_attributes[customer_id]={splynx_id}&main_attributes[status]=not_paid&main_attributes[status]=pending")
invoice_pay = { invoice_pay = {
"status": "paid" "status": "paid"

22
test.py

@ -17,23 +17,7 @@ stripe.api_key = api_key
if __name__ == "__main__": if __name__ == "__main__":
customers = stripe.Customer.search(query="email:'tom.bj@icloud.com'") splynx_id = 1218789
print(customers) result = splynx.get(url=f"/api/2.0/admin/finance/invoices?main_attributes[customer_id]={splynx_id}&main_attributes[status]=not_paid&main_attributes[status]=pending")
cust = splynx.Customer(31) print(json.dumps(result,indent=2))
print(f"cust: {json.dumps(cust,indent=2)}")
params = {
'additional_attributes': {
'stripe_customer_id': customers['data'][-1]['id']
}
}
update_cust = splynx.put(url=f"/api/2.0/admin/customers/customer/31", params=params)
print(f"update_cust: {update_cust}")
cust = splynx.Customer(31)
print(f"cust: {json.dumps(cust,indent=2)}")
print(cust['additional_attributes']['stripe_customer_id'])
Loading…
Cancel
Save