Files
MermsCoreFlask/app/models/payments.py
T
CHIEFSOFT\ameye 9cab449aaa payment session
2025-08-26 06:43:32 -04:00

63 lines
2.0 KiB
Python

from datetime import datetime, timezone
from app.extensions import db
from app.models.charge import Charge
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from sqlalchemy.exc import IntegrityError
class Payments(db.Model):
__tablename__ = 'payments'
id = db.Column(
db.Integer,
primary_key=True,
autoincrement=True,
)
uid = db.Column(db.String(150), nullable=True)
member_id = db.Column(db.Integer, nullable=False)
product_id = db.Column(db.String(25), nullable=False)
processor = db.Column(db.String(25), nullable=False)
status = db.Column(db.Integer, nullable=True, default=1)
added = db.Column(db.DateTime(timezone=True), server_default=func.now())
updated = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
@classmethod
def add_payment(cls, customer_id, account_id, transaction_id, data=None):
# Save the response
rac_check = cls(
customer_id=customer_id,
account_id=account_id,
transaction_id=transaction_id,
added=datetime.now(timezone.utc),
updated=datetime.now(timezone.utc)
)
try:
db.session.add(rac_check)
except IntegrityError as err:
raise ValueError(f"Database integrity error: {err}")
return rac_check
def to_dict(self):
return {
"offerId": self.id,
"productId": self.product_id,
"minAmount": self.min_amount,
"maxAmount": self.max_amount,
"tenor": self.tenor,
"interest_rate": self.interest_rate,
"management_rate": self.management_rate,
"insurance_rate": self.insurance_rate,
"vat_rate": self.vat_rate,
"maxDailyLoans": self.max_daily_loans,
"maxActiveLoans": self.max_active_loans,
"maxLifeLoans": self.max_life_loans
}
def __repr__(self):
return f'<LoanOffer {self.id}>'