Good progression

This commit is contained in:
2025-09-18 13:02:14 -04:00
parent 908100514f
commit 8c146d24f6
5 changed files with 71 additions and 8 deletions

View File

@@ -9,7 +9,7 @@ class Transaction(db.Model):
id = Column(Integer, primary_key=True, index=True)
preauthorize_amount = Column(Numeric(10, 2), nullable=True) # Amount preauthorized (for auth transactions)
charge_amount = Column(Numeric(10, 2), nullable=True) # Final charge amount (for charge/capture transactions)
transaction_type = Column(Integer) # 0 = charge, 1 = auth, 3 = capture
transaction_type = Column(Integer) # 0 = charge, 1 = auth, 2 = capture
status = Column(Integer) # 0 = approved, 1 = declined
auth_net_transaction_id = Column(String, unique=True, index=True, nullable=True)
customer_id = Column(Integer)

View File

@@ -617,16 +617,18 @@ def create_a_delivery(user_id):
# 0 = cash only
# 1 = credit only
# 1 = CC - Tiger (Physical)
# 11 = CC - Authorize (API)
# 2 = credit /cash
# 3 = check
# 4 = other
# 5 = unknown
if cash_payment is True:
delivery_payment_method = 0
if card_payment is True:
delivery_payment_method = 1
# Check if Authorize.net API should be used (type 11) vs physical (type 1)
# This logic can be enhanced to check user preferences or other criteria
delivery_payment_method = 1 # Default to Tiger physical machine
if check_payment is True:
delivery_payment_method = 3
if other_payment is True:

View File

@@ -4,6 +4,7 @@ from app import db
from app.classes.customer import Customer_Customer
from app.classes.cards import Card_Card, Card_Card_schema
from app.classes.transactions import Transaction
from app.classes.delivery import Delivery_Delivery
@@ -316,6 +317,59 @@ def get_authorize_transactions(page):
return jsonify({"ok": False, "error": str(e)}), 500
@payment.route("/authorize/<int:delivery_id>", methods=["PUT"])
def update_delivery_payment_authorize(delivery_id):
"""
Update a delivery's payment_type to 11 (CC - Authorize API) after successful preauthorization
"""
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.id == delivery_id)
.first())
if not get_delivery:
return jsonify({"ok": False, "error": "Delivery not found"}), 404
get_delivery.payment_type = 11
db.session.add(get_delivery)
db.session.commit()
return jsonify({"ok": True}), 200
@payment.route("/transaction/delivery/<int:delivery_id>", methods=["GET"])
def get_transaction_by_delivery(delivery_id):
"""
Get a single transaction by delivery_id for Authorize.net payments
"""
transaction = (db.session
.query(Transaction)
.filter(Transaction.delivery_id == delivery_id)
.first())
if not transaction:
return jsonify({"ok": False, "error": "Transaction not found"}), 404
# Convert to dict-like format for frontend
return jsonify({
"ok": True,
"transaction": {
"id": transaction.id,
"preauthorize_amount": float(transaction.preauthorize_amount or 0),
"charge_amount": float(transaction.charge_amount or 0),
"transaction_type": transaction.transaction_type,
"status": transaction.status,
"auth_net_transaction_id": transaction.auth_net_transaction_id,
"delivery_id": transaction.delivery_id,
"customer_id": transaction.customer_id,
"service_id": transaction.service_id,
"card_id": transaction.card_id,
"created_at": transaction.created_at.isoformat() if transaction.created_at else None
}
})
@payment.route("/transactions/customer/<int:customer_id>/<int:page>", methods=["GET"])
def get_customer_transactions(customer_id, page):
"""
@@ -327,8 +381,7 @@ def get_customer_transactions(customer_id, page):
query = (
db.session
.query(Transaction, Customer_Customer)
.join(Customer_Customer, Transaction.customer_id == Customer_Customer.id)
.query(Transaction)
.filter(Transaction.customer_id == customer_id)
.order_by(Transaction.created_at.desc())
.offset(offset)
@@ -338,14 +391,13 @@ def get_customer_transactions(customer_id, page):
results = query.all()
transactions_data = []
for transaction, customer in results:
for transaction in results:
transactions_data.append({
"id": transaction.id,
"preauthorize_amount": transaction.preauthorize_amount,
"charge_amount": transaction.charge_amount,
"transaction_type": transaction.transaction_type,
"status": transaction.status,
"customer_name": f"{customer.customer_first_name} {customer.customer_last_name}",
"created_at": transaction.created_at.isoformat(),
"auth_net_transaction_id": transaction.auth_net_transaction_id,
"rejection_reason": transaction.rejection_reason,

View File

@@ -0,0 +1 @@
# 0 = charge, 1 = auth, 3 = capture

View File

@@ -2,4 +2,12 @@
1: CC
2: Cash/CC
3: Check
4: Other
0: Cash
1: CC - Tiger
11: CC - Authorize
2: Cash/CC
3: Check
4: Other