Add support for importing MemberEquityPayment from CORE-POS DB

SQL only, no API for now
This commit is contained in:
Lance Edgar 2023-09-07 17:49:28 -05:00
parent 35e24422a2
commit a57f29fe1a
8 changed files with 248 additions and 15 deletions

View file

@ -0,0 +1,57 @@
# -*- coding: utf-8; -*-
"""add MemberEquityPayment extension
Revision ID: 08d879bbe118
Revises: b025df7cf41b
Create Date: 2023-09-06 17:44:43.874500
"""
# revision identifiers, used by Alembic.
revision = '08d879bbe118'
down_revision = 'b025df7cf41b'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
import rattail.db.types
def upgrade():
# corepos_member_equity_payment
op.create_table('corepos_member_equity_payment',
sa.Column('uuid', sa.String(length=32), nullable=False),
sa.Column('corepos_card_number', sa.Integer(), nullable=False),
sa.Column('corepos_transaction_number', sa.String(length=50), nullable=True),
sa.Column('corepos_transaction_id', sa.Integer(), nullable=True),
sa.Column('corepos_department_number', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['uuid'], ['member_equity_payment.uuid'], name='corepos_member_equity_payment_fk_payment'),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('corepos_member_equity_payment_version',
sa.Column('uuid', sa.String(length=32), autoincrement=False, nullable=False),
sa.Column('corepos_card_number', sa.Integer(), autoincrement=False, nullable=True),
sa.Column('corepos_transaction_number', sa.String(length=50), autoincrement=False, nullable=True),
sa.Column('corepos_transaction_id', sa.Integer(), autoincrement=False, nullable=True),
sa.Column('corepos_department_number', sa.Integer(), autoincrement=False, nullable=True),
sa.Column('transaction_id', sa.BigInteger(), autoincrement=False, nullable=False),
sa.Column('end_transaction_id', sa.BigInteger(), nullable=True),
sa.Column('operation_type', sa.SmallInteger(), nullable=False),
sa.PrimaryKeyConstraint('uuid', 'transaction_id')
)
op.create_index(op.f('ix_corepos_member_equity_payment_version_end_transaction_id'), 'corepos_member_equity_payment_version', ['end_transaction_id'], unique=False)
op.create_index(op.f('ix_corepos_member_equity_payment_version_operation_type'), 'corepos_member_equity_payment_version', ['operation_type'], unique=False)
op.create_index(op.f('ix_corepos_member_equity_payment_version_transaction_id'), 'corepos_member_equity_payment_version', ['transaction_id'], unique=False)
def downgrade():
# corepos_member_equity_payment
op.drop_index(op.f('ix_corepos_member_equity_payment_version_transaction_id'), table_name='corepos_member_equity_payment_version')
op.drop_index(op.f('ix_corepos_member_equity_payment_version_operation_type'), table_name='corepos_member_equity_payment_version')
op.drop_index(op.f('ix_corepos_member_equity_payment_version_end_transaction_id'), table_name='corepos_member_equity_payment_version')
op.drop_table('corepos_member_equity_payment_version')
op.drop_table('corepos_member_equity_payment')

View file

@ -25,7 +25,8 @@ Database schema extensions for CORE-POS integration
"""
from .stores import CoreStore
from .people import CorePerson, CoreCustomer, CoreCustomerShopper, CoreMember
from .people import (CorePerson, CoreCustomer, CoreCustomerShopper,
CoreMember, CoreMemberEquityPayment)
from .products import (CoreDepartment, CoreSubdepartment,
CoreVendor, CoreProduct, CoreProductCost)

View file

@ -178,3 +178,54 @@ class CoreMember(model.Base):
return str(self.member)
CoreMember.make_proxy(model.Member, '_corepos', 'corepos_account_id')
class CoreMemberEquityPayment(model.Base):
"""
CORE-specific extensions to
:class:`~rattail:rattail.db.model.MemberEquityPayment`.
"""
__tablename__ = 'corepos_member_equity_payment'
__table_args__ = (
sa.ForeignKeyConstraint(['uuid'], ['member_equity_payment.uuid'],
name='corepos_member_equity_payment_fk_payment'),
)
__versioned__ = {}
uuid = model.uuid_column(default=None)
payment = orm.relationship(
model.MemberEquityPayment,
doc="""
Reference to the actual payment record, which this one extends.
""",
backref=orm.backref(
'_corepos',
uselist=False,
cascade='all, delete-orphan',
doc="""
Reference to the CORE-POS extension record for this payment.
"""))
corepos_card_number = sa.Column(sa.Integer(), nullable=False, doc="""
``stockpurchases.card_no`` value for this payment, within CORE-POS.
""")
corepos_transaction_number = sa.Column(sa.String(length=50), nullable=True, doc="""
``stockpurchases.trans_num`` value for this payment, within CORE-POS.
""")
corepos_transaction_id = sa.Column(sa.Integer(), nullable=True, doc="""
``stockpurchases.trans_id`` value for this payment, within CORE-POS.
""")
corepos_department_number = sa.Column(sa.Integer(), nullable=True, doc="""
``stockpurchases.dept`` value for this payment, within CORE-POS.
""")
def __str__(self):
return str(self.payment)
CoreMemberEquityPayment.make_proxy(model.MemberEquityPayment, '_corepos', 'corepos_card_number')
CoreMemberEquityPayment.make_proxy(model.MemberEquityPayment, '_corepos', 'corepos_transaction_number')
CoreMemberEquityPayment.make_proxy(model.MemberEquityPayment, '_corepos', 'corepos_transaction_id')
CoreMemberEquityPayment.make_proxy(model.MemberEquityPayment, '_corepos', 'corepos_department_number')