subscription generative

This commit is contained in:
CHIEFSOFT\ameye
2025-09-05 22:48:32 -04:00
parent 4888d58112
commit f992bc8bfe
4 changed files with 131 additions and 27 deletions
+2 -19
View File
@@ -1,16 +1,4 @@
# from .customer import Customer
from .account import Account
# from .loan import Loan
# from .transaction import Transaction
# from .repayment import Repayment
# from .loan_charge import LoanCharge
# from .offer import Offer
# from .charge import Charge
# from .rac_checks import RACCheck
# from .loan_repayment_schedule import LoanRepaymentSchedule
# from .transaction_offers import TransactionOffer
# from .repayments_data import RepaymentsData
# from .salary import Salary
from .members import Members
from .products import Products
from .members_products import MembersProducts
@@ -27,17 +15,12 @@ from .subscription_options_items import SubscriptionOptionsItems
from .products_templates import ProductsTemplates
from .payments_session import PaymentsSession
from .payments import Payments
from .subscription_generative import SubscriptionGenerative
__all__ = ['Members', 'Account', 'Products',
'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails',
'ProvisionActions', 'MembersProductsRefresh','MembersProductsSettings',
'PasswordReset','MembersProfile','SubscriptionOptions','SubscriptionOptionsItems',
'ProductsTemplates','Payments','PaymentsSession']
'ProductsTemplates','Payments','PaymentsSession','SubscriptionGenerative']
# 'Loan', 'Transaction', 'Repayment', 'Customer',
# 'LoanCharge', 'Offer', 'Charge', 'RACCheck', 'LoanRepaymentSchedule',
# 'TransactionOffer', 'RepaymentsData', 'Salary'
+95
View File
@@ -0,0 +1,95 @@
from datetime import datetime, timezone, timedelta
from itertools import product
from app.extensions import db
from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm import relationship
from dateutil.relativedelta import relativedelta
from datetime import timedelta
import logging
from sqlalchemy import and_, or_, not_
from sqlalchemy.sql import func
import uuid
logger = logging.getLogger(__name__)
class SubscriptionGenerative(db.Model):
__tablename__ = 'subscription_generative'
id = db.Column(
db.Integer,
primary_key=True,
autoincrement=True,
)
uid = db.Column(db.String(150), nullable=False)
member_id = db.Column(db.Integer, nullable=False)
practice = db.Column(db.String(100), nullable=False)
specialization = db.Column(db.String(100), nullable=False)
subscription_uid = db.Column(db.String(3500), nullable=True)
status = db.Column(db.Integer, nullable=True, default=0)
added = db.Column(db.DateTime(timezone=True), server_default=func.now())
@classmethod
def get_subscription_generative_by_subscription_uid(cls, subscription_uid):
subscription_generative = cls.query.filter_by(subscription_uid=str(subscription_uid)).first()
if not subscription_generative:
return None
return subscription_generative
@classmethod
def get_subscription_generative_list_by_status(cls, subscription_uid, status):
subscription_generative = cls.query.filter_by(subscription_uid=str(subscription_uid)).all()
if not subscription_generative:
return None
return subscription_generative
@classmethod
def update_subscription_generative_status(cls, subscription_uid, status):
# Retrieve Reset
subscription_generative = cls.query.filter_by(subscription_uid=str(subscription_uid)).first()
if not subscription_generative:
raise ValueError(f"SubscriptionGenerative with Sub UID {subscription_uid} does not exist.")
subscription_generative.status =status
@classmethod
def create_subscription_generative(cls, member_id ,practice,specialization,subscription_uid):
logger.info(f"SubscriptionGenerative Data {member_id} ,{practice} ,{specialization}, {subscription_uid} ")
subscription_generative_data = cls(
uid=str(uuid.uuid4()),
member_id=member_id,
practice=practice,
specialization=specialization,
subscription_uid=subscription_uid,
added=datetime.now(timezone.utc)
)
try:
logger.info(f" About to Insert Subscription_Generative Data {subscription_generative_data.member_id} ")
db.session.add(subscription_generative_data)
db.session.flush()
except IntegrityError as err:
logger.error(f" Error inserting Subscription_Generative data {err} -- ")
raise ValueError(f"Database integrity error: {err}")
return subscription_generative_data
def to_dict(self):
"""
Convert the Loan object to a dictionary format for JSON serialization.
"""
return {
'id': self.id,
'uid': self.uid,
'member_id': self.member_id,
'practice': self.practice,
'specialization': self.specialization,
'subscription_uid': self.subscription_uid,
'added': self.added,
'status': self.status
}
def __repr__(self):
return f'<SubscriptionGenerative {self.id}>'