Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

21909 - Capture name and address of entity for routing slips #1821

Merged
merged 8 commits into from
Nov 13, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""Adding name and address columns to routing_slips

Revision ID: 474917a13bd4
Revises: 0f02d5964a63
Create Date: 2024-11-13 09:52:24.121948

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
# Note you may see foreign keys with distribution_codes_history
# For disbursement_distribution_code_id, service_fee_distribution_code_id
# Please ignore those lines and don't include in migration.

revision = '474917a13bd4'
down_revision = '0f02d5964a63'
branch_labels = None
depends_on = None


def upgrade():
with op.batch_alter_table('routing_slips', schema=None) as batch_op:
seeker25 marked this conversation as resolved.
Show resolved Hide resolved
batch_op.add_column(sa.Column('contact_name', sa.String(length=50), nullable=True))
batch_op.add_column(sa.Column('street', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('street_additional', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('city', sa.String(length=50), nullable=True))
batch_op.add_column(sa.Column('region', sa.String(length=50), nullable=True))
batch_op.add_column(sa.Column('postal_code', sa.String(length=20), nullable=True))
batch_op.add_column(sa.Column('country', sa.String(length=50), nullable=True))
batch_op.add_column(sa.Column('delivery_instructions', sa.String(length=100), nullable=True))


def downgrade():
with op.batch_alter_table('routing_slips', schema=None) as batch_op:
batch_op.drop_column('contact_name')
batch_op.drop_column('street')
batch_op.drop_column('street_additional')
batch_op.drop_column('city')
batch_op.drop_column('region')
batch_op.drop_column('postal_code')
batch_op.drop_column('country')
batch_op.drop_column('delivery_instructions')
24 changes: 24 additions & 0 deletions pay-api/src/pay_api/models/routing_slip.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ class RoutingSlip(Audit): # pylint: disable=too-many-instance-attributes
"updated_by",
"updated_name",
"updated_on",
"contact_name",
"street",
"street_additional",
"city",
"region",
"postal_code",
"country",
"delivery_instructions",
]
}

Expand All @@ -94,6 +102,14 @@ class RoutingSlip(Audit): # pylint: disable=too-many-instance-attributes
# Allows to create a new receipt in CAS for the same routing slip number.
# Earlier versions should be adjusted to zero before increasing the cas_version_suffix.
cas_version_suffix = db.Column(db.Integer, default=1)
contact_name = db.Column(db.String(), nullable=True)
street = db.Column(db.String(), nullable=True)
street_additional = db.Column(db.String(), nullable=True)
city = db.Column(db.String(), nullable=True)
region = db.Column(db.String(), nullable=True)
postal_code = db.Column(db.String(), nullable=True)
country = db.Column(db.String(), nullable=True)
delivery_instructions = db.Column(db.String(), nullable=True)

payment_account = relationship(
PaymentAccount,
Expand Down Expand Up @@ -355,3 +371,11 @@ class Meta(BaseSchema.Meta): # pylint: disable=too-few-public-methods
refund_status = fields.String(data_key="refund_status")
parent_number = fields.String(data_key="parent_number")
total_usd = fields.Float(data_key="total_usd")
contact_name = fields.String(data_key="contact_name")
street = fields.String(data_key="street")
street_additional = fields.String(data_key="street_additional")
city = fields.String(data_key="city")
region = fields.String(data_key="region")
postal_code = fields.String(data_key="postal_code")
country = fields.String(data_key="country")
delivery_instructions = fields.String(data_key="delivery_instructions")
30 changes: 29 additions & 1 deletion pay-api/src/pay_api/services/fas/routing_slip.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,11 +284,31 @@ def find_by_number(cls, rs_number: str) -> Dict[str, any]:
routing_slip_dict: Dict[str, any] = None
routing_slip: RoutingSlipModel = RoutingSlipModel.find_by_number(rs_number)
if routing_slip:
routing_slip_schema = RoutingSlipSchema()
routing_slip_schema = RoutingSlipSchema(
exclude=(
"city",
"country",
"delivery_instructions",
"postal_code",
"region",
"street",
"street_additional",
)
)
routing_slip_dict = routing_slip_schema.dump(routing_slip)
routing_slip_dict["allowedStatuses"] = RoutingSlipStatusTransitionService.get_possible_transitions(
routing_slip
)
routing_slip_dict["mailingAddress"] = {
"city": routing_slip.city,
"country": routing_slip.country,
"deliveryInstructions": routing_slip.delivery_instructions,
"postalCode": routing_slip.postal_code,
"region": routing_slip.region,
"street": routing_slip.street,
"streetAdditional": routing_slip.street_additional,
}

return routing_slip_dict

@classmethod
Expand Down Expand Up @@ -357,6 +377,14 @@ def create(cls, request_json: Dict[str, any], **kwargs):
remaining_amount=total,
routing_slip_date=string_to_date(request_json.get("routingSlipDate")),
total_usd=total_usd,
contact_name=request_json.get("contactName"),
seeker25 marked this conversation as resolved.
Show resolved Hide resolved
street=request_json["mailingAddress"].get("street"),
street_additional=request_json["mailingAddress"].get("streetAdditional"),
city=request_json["mailingAddress"].get("city"),
region=request_json["mailingAddress"].get("region"),
postal_code=request_json["mailingAddress"].get("postalCode"),
country=request_json["mailingAddress"].get("country"),
delivery_instructions=request_json["mailingAddress"].get("deliveryInstructions"),
).flush()

for payment in request_json.get("payments"):
Expand Down
20 changes: 19 additions & 1 deletion pay-api/tests/unit/models/test_routing_slip.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,27 @@ def test_routing_slip_find_creation(session):
payment_account = factory_payment_account()
payment_account.save()

rs = factory_routing_slip(payment_account_id=payment_account.id)
rs = factory_routing_slip(
payment_account_id=payment_account.id,
contact_name="John Doe",
street="123 Main St",
street_additional="Suite 200",
city="Victoria",
region="BC",
postal_code="V8V 3V3",
country="CA",
delivery_instructions="Leave at the door",
)
rs.save()
assert rs.id is not None
assert rs.contact_name == "John Doe"
assert rs.street == "123 Main St"
assert rs.street_additional == "Suite 200"
assert rs.city == "Victoria"
assert rs.region == "BC"
assert rs.postal_code == "V8V 3V3"
assert rs.country == "CA"
assert rs.delivery_instructions == "Leave at the door"

routing_slip = RoutingSlip()
assert routing_slip.find_by_number(rs.number) is not None
Expand Down
24 changes: 24 additions & 0 deletions pay-api/tests/unit/services/test_routing_slip_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,14 @@ def test_create_routing_slip(session, staff_user_mock):
"paidAmount": 100,
}
],
"contactName": "John Doe",
"mailingAddress": {
"street": "123 Main St",
"city": "Victoria",
"region": "BC",
"postalCode": "V8V 3V3",
"country": "CA",
},
}

rs = RoutingSlip_service.create(routing_slip_payload)
Expand Down Expand Up @@ -101,6 +109,14 @@ def test_create_routing_slip_usd_one_of_payments(session, staff_user_mock):
"paidUsdAmount": 80,
},
],
"contactName": "John Doe",
"mailingAddress": {
"street": "123 Main St",
"city": "Victoria",
"region": "BC",
"postalCode": "V8V 3V3",
"country": "CA",
},
}

rs = RoutingSlip_service.create(routing_slip_payload)
Expand Down Expand Up @@ -134,6 +150,14 @@ def test_create_routing_slip_usd_both_payments(session, staff_user_mock):
"paidUsdAmount": 80,
},
],
"contactName": "John Doe",
"mailingAddress": {
"street": "123 Main St",
"city": "Victoria",
"region": "BC",
"postalCode": "V8V 3V3",
"country": "CA",
},
}

rs = RoutingSlip_service.create(routing_slip_payload)
Expand Down
32 changes: 32 additions & 0 deletions pay-api/tests/utilities/base_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,14 @@ def factory_routing_slip(
total: int = 0,
remaining_amount: Decimal = 0.0,
routing_slip_date=datetime.now(tz=timezone.utc),
contact_name="John Doe",
street="123 Main St",
street_additional=None,
city="Victoria",
region="BC",
postal_code="V8V 3V3",
country="CA",
delivery_instructions=None,
):
"""Return Factory."""
routing_slip: RoutingSlip = RoutingSlip(
Expand All @@ -455,6 +463,14 @@ def factory_routing_slip(
remaining_amount=Decimal(str(remaining_amount)),
created_by="test",
routing_slip_date=routing_slip_date,
contact_name=contact_name,
street=street,
street_additional=street_additional,
city=city,
region=region,
postal_code=postal_code,
country=country,
delivery_instructions=delivery_instructions,
)
return routing_slip

Expand All @@ -467,6 +483,14 @@ def factory_routing_slip_usd(
remaining_amount: int = 0,
routing_slip_date=datetime.now(tz=timezone.utc),
total_usd=0,
contact_name="John Doe",
street="123 Main St",
street_additional=None,
city="Victoria",
region="BC",
postal_code="V8V 3V3",
country="CA",
delivery_instructions=None,
):
"""Return Factory."""
routing_slip: RoutingSlip = RoutingSlip(
Expand All @@ -478,6 +502,14 @@ def factory_routing_slip_usd(
created_by="test",
routing_slip_date=routing_slip_date,
total_usd=total_usd,
contact_name=contact_name,
street=street,
street_additional=street_additional,
city=city,
region=region,
postal_code=postal_code,
country=country,
delivery_instructions=delivery_instructions,
)
return routing_slip

Expand Down
Loading