[update]: Offers Model
This commit is contained in:
@@ -13,7 +13,7 @@ class Account(db.Model):
|
|||||||
status = db.Column(db.String(20), default='active')
|
status = db.Column(db.String(20), default='active')
|
||||||
lien_amount = db.Column(db.Float, default=0.0)
|
lien_amount = db.Column(db.Float, default=0.0)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
|
|
||||||
customer = relationship(
|
customer = relationship(
|
||||||
"Customer",
|
"Customer",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class Charge(db.Model):
|
|||||||
description = db.Column(db.Text, nullable=True)
|
description = db.Column(db.Text, nullable=True)
|
||||||
due = db.Column(db.Integer, nullable=False)
|
due = db.Column(db.Integer, nullable=False)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
offer = relationship(
|
offer = relationship(
|
||||||
"Offer",
|
"Offer",
|
||||||
primaryjoin="Charge.offer_id == Offer.id",
|
primaryjoin="Charge.offer_id == Offer.id",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class Customer(db.Model):
|
|||||||
msisdn = db.Column(db.String(20), unique=True, nullable=False)
|
msisdn = db.Column(db.String(20), unique=True, nullable=False)
|
||||||
country_code = db.Column(db.String(3), nullable=False)
|
country_code = db.Column(db.String(3), nullable=False)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
accounts = relationship(
|
accounts = relationship(
|
||||||
"Account",
|
"Account",
|
||||||
primaryjoin="Customer.id == Account.customer_id",
|
primaryjoin="Customer.id == Account.customer_id",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ class Loan(db.Model):
|
|||||||
tenor = db.Column(db.Integer, nullable=True)
|
tenor = db.Column(db.Integer, nullable=True)
|
||||||
due_date = db.Column(db.DateTime, nullable=True)
|
due_date = db.Column(db.DateTime, nullable=True)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
eligible_amount = db.Column(db.Float, nullable=True, default=0.0)
|
eligible_amount = db.Column(db.Float, nullable=True, default=0.0)
|
||||||
disburse_date = db.Column(db.DateTime, nullable=True)
|
disburse_date = db.Column(db.DateTime, nullable=True)
|
||||||
disburse_verify = db.Column(db.DateTime, nullable=True)
|
disburse_verify = db.Column(db.DateTime, nullable=True)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class LoanCharge(db.Model):
|
|||||||
due = db.Column(db.Integer, nullable=False)
|
due = db.Column(db.Integer, nullable=False)
|
||||||
due_date = db.Column(db.DateTime, nullable=True)
|
due_date = db.Column(db.DateTime, nullable=True)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
loan = relationship(
|
loan = relationship(
|
||||||
"Loan",
|
"Loan",
|
||||||
primaryjoin="LoanCharge.loan_id == Loan.id",
|
primaryjoin="LoanCharge.loan_id == Loan.id",
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class LoanRepaymentSchedule(db.Model):
|
|||||||
paid_at = db.Column(db.DateTime, nullable=True)
|
paid_at = db.Column(db.DateTime, nullable=True)
|
||||||
|
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
loan = relationship(
|
loan = relationship(
|
||||||
"Loan",
|
"Loan",
|
||||||
primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id",
|
primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id",
|
||||||
|
|||||||
+5
-1
@@ -18,8 +18,12 @@ class Offer(db.Model):
|
|||||||
insurance_rate = db.Column(db.Float, default=1.0)
|
insurance_rate = db.Column(db.Float, default=1.0)
|
||||||
vat_rate = db.Column(db.Float, default=7.5)
|
vat_rate = db.Column(db.Float, default=7.5)
|
||||||
list_order = db.Column(db.Integer, nullable=True)
|
list_order = db.Column(db.Integer, nullable=True)
|
||||||
|
max_daily_loans = db.Column(db.Integer, nullable=True)
|
||||||
|
max_active_loans = db.Column(db.Integer, nullable=True)
|
||||||
|
max_life_loans = db.Column(db.Integer, nullable=True)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
|
|
||||||
charges = relationship(
|
charges = relationship(
|
||||||
"Charge",
|
"Charge",
|
||||||
primaryjoin="Offer.id == Charge.offer_id",
|
primaryjoin="Offer.id == Charge.offer_id",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class RACCheck(db.Model):
|
|||||||
account_id = db.Column(db.String, nullable=False)
|
account_id = db.Column(db.String, nullable=False)
|
||||||
rac_response = db.Column(db.JSON, nullable=False)
|
rac_response = db.Column(db.JSON, nullable=False)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_rac_check(cls, customer_id, account_id, transaction_id, data = None):
|
def add_rac_check(cls, customer_id, account_id, transaction_id, data = None):
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class Repayment(db.Model):
|
|||||||
customer_id = db.Column(db.String(50), nullable=False)
|
customer_id = db.Column(db.String(50), nullable=False)
|
||||||
product_id = db.Column(db.String(20), nullable=True)
|
product_id = db.Column(db.String(20), nullable=True)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
transaction_id = db.Column(db.String(50), nullable=True)
|
transaction_id = db.Column(db.String(50), nullable=True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class Transaction(db.Model):
|
|||||||
type = db.Column(db.String(50), nullable=False)
|
type = db.Column(db.String(50), nullable=False)
|
||||||
channel = db.Column(db.String(50), nullable=False)
|
channel = db.Column(db.String(50), nullable=False)
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'<Transaction {self.id}>'
|
return f'<Transaction {self.id}>'
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class TransactionOffer(db.Model):
|
|||||||
tenor = db.Column(db.Integer, nullable=True) # tenor in months, typically
|
tenor = db.Column(db.Integer, nullable=True) # tenor in months, typically
|
||||||
|
|
||||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||||
updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||||
customer = relationship(
|
customer = relationship(
|
||||||
"Customer",
|
"Customer",
|
||||||
primaryjoin="Customer.id == TransactionOffer.customer_id",
|
primaryjoin="Customer.id == TransactionOffer.customer_id",
|
||||||
@@ -31,7 +31,6 @@ class TransactionOffer(db.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
||||||
def is_valid_transaction_offer(cls, transaction_offer, customer_id, product_id):
|
def is_valid_transaction_offer(cls, transaction_offer, customer_id, product_id):
|
||||||
transaction_offer = cls.query.filter_by(
|
transaction_offer = cls.query.filter_by(
|
||||||
id = transaction_offer,
|
id = transaction_offer,
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
"""empty message
|
||||||
|
|
||||||
|
Revision ID: e8dd9b841ad7
|
||||||
|
Revises: 2eee4157505f
|
||||||
|
Create Date: 2025-05-19 11:46:19.204637
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = 'e8dd9b841ad7'
|
||||||
|
down_revision = '2eee4157505f'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
with op.batch_alter_table('offers', schema=None) as batch_op:
|
||||||
|
batch_op.add_column(sa.Column('max_daily_loans', sa.Integer(), nullable=True))
|
||||||
|
batch_op.add_column(sa.Column('max_active_loans', sa.Integer(), nullable=True))
|
||||||
|
batch_op.add_column(sa.Column('max_life_loans', sa.Integer(), nullable=True))
|
||||||
|
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
with op.batch_alter_table('offers', schema=None) as batch_op:
|
||||||
|
batch_op.drop_column('max_life_loans')
|
||||||
|
batch_op.drop_column('max_active_loans')
|
||||||
|
batch_op.drop_column('max_daily_loans')
|
||||||
|
|
||||||
|
# ### end Alembic commands ###
|
||||||
Reference in New Issue
Block a user