From ee5bc2bc9f61b2afed884b1ff7d11ffebdf6be62 Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 11:52:25 -0800
Subject: [PATCH 1/7] Adding name and address fields to routing slips

---
 ...bd4_adding_name_and_address_columns_to_.py | 44 +++++++++++++++++++
 pay-api/src/pay_api/models/routing_slip.py    | 24 ++++++++++
 .../src/pay_api/services/fas/routing_slip.py  | 22 +++++++++-
 .../tests/unit/models/test_routing_slip.py    | 25 ++++++++++-
 pay-api/tests/utilities/base_test.py          | 32 ++++++++++++++
 5 files changed, 144 insertions(+), 3 deletions(-)
 create mode 100644 pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py

diff --git a/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py b/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
new file mode 100644
index 000000000..aca4b9cf5
--- /dev/null
+++ b/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
@@ -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:
+        batch_op.add_column(sa.Column('name', sa.String(length=50), nullable=False))
+        batch_op.add_column(sa.Column('street', sa.String(length=100), nullable=False))
+        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=False))
+        batch_op.add_column(sa.Column('region', sa.String(length=50), nullable=False))
+        batch_op.add_column(sa.Column('postal_code', sa.String(length=20), nullable=False))
+        batch_op.add_column(sa.Column('country', sa.String(length=50), nullable=False))
+        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('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')
diff --git a/pay-api/src/pay_api/models/routing_slip.py b/pay-api/src/pay_api/models/routing_slip.py
index fc08ed368..f4fe63602 100644
--- a/pay-api/src/pay_api/models/routing_slip.py
+++ b/pay-api/src/pay_api/models/routing_slip.py
@@ -71,6 +71,14 @@ class RoutingSlip(Audit):  # pylint: disable=too-many-instance-attributes
             "updated_by",
             "updated_name",
             "updated_on",
+            "name",
+            "street",
+            "street_additional",
+            "city",
+            "region",
+            "postal_code",
+            "country",
+            "delivery_instructions"
         ]
     }
 
@@ -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)
+    name = db.Column(db.String(), nullable=False)
+    street = db.Column(db.String(), nullable=False)
+    street_additional = db.Column(db.String(), nullable=True)
+    city = db.Column(db.String(), nullable=False)
+    region = db.Column(db.String(), nullable=False)
+    postal_code = db.Column(db.String(), nullable=False)
+    country = db.Column(db.String(), nullable=False)
+    delivery_instructions = db.Column(db.String(), nullable=True)
 
     payment_account = relationship(
         PaymentAccount,
@@ -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")
+    name = fields.String(data_key="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")
diff --git a/pay-api/src/pay_api/services/fas/routing_slip.py b/pay-api/src/pay_api/services/fas/routing_slip.py
index 24449cfff..5bd60d190 100644
--- a/pay-api/src/pay_api/services/fas/routing_slip.py
+++ b/pay-api/src/pay_api/services/fas/routing_slip.py
@@ -284,11 +284,23 @@ 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
@@ -357,6 +369,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,
+            name=request_json.get("name"),
+            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"):
diff --git a/pay-api/tests/unit/models/test_routing_slip.py b/pay-api/tests/unit/models/test_routing_slip.py
index c8d8042cd..46219678f 100644
--- a/pay-api/tests/unit/models/test_routing_slip.py
+++ b/pay-api/tests/unit/models/test_routing_slip.py
@@ -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,
+        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.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
@@ -77,7 +95,10 @@ def test_routing_slip_usd_creation(session):
     payment_account = factory_payment_account()
     payment_account.save()
 
-    rs = factory_routing_slip_usd(payment_account_id=payment_account.id, total_usd=50)
+    rs = factory_routing_slip_usd(
+        payment_account_id=payment_account.id,
+        total_usd=50
+    )
     rs.save()
     assert rs.id is not None
     assert rs.total_usd == 50
diff --git a/pay-api/tests/utilities/base_test.py b/pay-api/tests/utilities/base_test.py
index b672b3988..bb1ad533d 100644
--- a/pay-api/tests/utilities/base_test.py
+++ b/pay-api/tests/utilities/base_test.py
@@ -445,6 +445,14 @@ def factory_routing_slip(
     total: int = 0,
     remaining_amount: Decimal = 0.0,
     routing_slip_date=datetime.now(tz=timezone.utc),
+    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(
@@ -455,6 +463,14 @@ def factory_routing_slip(
         remaining_amount=Decimal(str(remaining_amount)),
         created_by="test",
         routing_slip_date=routing_slip_date,
+        name=name,
+        street=street,
+        street_additional=street_additional,
+        city=city,
+        region=region,
+        postal_code=postal_code,
+        country=country,
+        delivery_instructions=delivery_instructions,
     )
     return routing_slip
 
@@ -467,6 +483,14 @@ def factory_routing_slip_usd(
     remaining_amount: int = 0,
     routing_slip_date=datetime.now(tz=timezone.utc),
     total_usd=0,
+    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(
@@ -478,6 +502,14 @@ def factory_routing_slip_usd(
         created_by="test",
         routing_slip_date=routing_slip_date,
         total_usd=total_usd,
+        name=name,
+        street=street,
+        street_additional=street_additional,
+        city=city,
+        region=region,
+        postal_code=postal_code,
+        country=country,
+        delivery_instructions=delivery_instructions,
     )
     return routing_slip
 

From 40f86bb5f5c5591656f5a5b0444b5c37111c4ac7 Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 11:56:29 -0800
Subject: [PATCH 2/7] Linting

---
 pay-api/src/pay_api/models/routing_slip.py       |  2 +-
 pay-api/src/pay_api/services/fas/routing_slip.py | 16 ++++++++++++----
 pay-api/tests/unit/models/test_routing_slip.py   |  5 +----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/pay-api/src/pay_api/models/routing_slip.py b/pay-api/src/pay_api/models/routing_slip.py
index f4fe63602..20a96cea7 100644
--- a/pay-api/src/pay_api/models/routing_slip.py
+++ b/pay-api/src/pay_api/models/routing_slip.py
@@ -78,7 +78,7 @@ class RoutingSlip(Audit):  # pylint: disable=too-many-instance-attributes
             "region",
             "postal_code",
             "country",
-            "delivery_instructions"
+            "delivery_instructions",
         ]
     }
 
diff --git a/pay-api/src/pay_api/services/fas/routing_slip.py b/pay-api/src/pay_api/services/fas/routing_slip.py
index 5bd60d190..ea88ff1ce 100644
--- a/pay-api/src/pay_api/services/fas/routing_slip.py
+++ b/pay-api/src/pay_api/services/fas/routing_slip.py
@@ -284,8 +284,16 @@ 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(exclude=(
-                'city', 'country', 'delivery_instructions', 'postal_code', 'region', 'street', 'street_additional')
+            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(
@@ -298,7 +306,7 @@ def find_by_number(cls, rs_number: str) -> Dict[str, any]:
                 "postalCode": routing_slip.postal_code,
                 "region": routing_slip.region,
                 "street": routing_slip.street,
-                "streetAdditional": routing_slip.street_additional
+                "streetAdditional": routing_slip.street_additional,
             }
 
         return routing_slip_dict
@@ -376,7 +384,7 @@ def create(cls, request_json: Dict[str, any], **kwargs):
             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")
+            delivery_instructions=request_json["mailingAddress"].get("deliveryInstructions"),
         ).flush()
 
         for payment in request_json.get("payments"):
diff --git a/pay-api/tests/unit/models/test_routing_slip.py b/pay-api/tests/unit/models/test_routing_slip.py
index 46219678f..25a647caf 100644
--- a/pay-api/tests/unit/models/test_routing_slip.py
+++ b/pay-api/tests/unit/models/test_routing_slip.py
@@ -95,10 +95,7 @@ def test_routing_slip_usd_creation(session):
     payment_account = factory_payment_account()
     payment_account.save()
 
-    rs = factory_routing_slip_usd(
-        payment_account_id=payment_account.id,
-        total_usd=50
-    )
+    rs = factory_routing_slip_usd(payment_account_id=payment_account.id, total_usd=50)
     rs.save()
     assert rs.id is not None
     assert rs.total_usd == 50

From 1b448ae7b6e92aac8feacd5eb098ad3a5c9b8e76 Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 12:06:14 -0800
Subject: [PATCH 3/7] model and migration update

---
 ...4917a13bd4_adding_name_and_address_columns_to_.py | 12 ++++++------
 pay-api/src/pay_api/models/routing_slip.py           | 12 ++++++------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py b/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
index aca4b9cf5..e1dcc2b9c 100644
--- a/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
+++ b/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
@@ -22,13 +22,13 @@
 
 def upgrade():
     with op.batch_alter_table('routing_slips', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('name', sa.String(length=50), nullable=False))
-        batch_op.add_column(sa.Column('street', sa.String(length=100), nullable=False))
+        batch_op.add_column(sa.Column('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=False))
-        batch_op.add_column(sa.Column('region', sa.String(length=50), nullable=False))
-        batch_op.add_column(sa.Column('postal_code', sa.String(length=20), nullable=False))
-        batch_op.add_column(sa.Column('country', sa.String(length=50), nullable=False))
+        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))
 
 
diff --git a/pay-api/src/pay_api/models/routing_slip.py b/pay-api/src/pay_api/models/routing_slip.py
index 20a96cea7..cdab9175c 100644
--- a/pay-api/src/pay_api/models/routing_slip.py
+++ b/pay-api/src/pay_api/models/routing_slip.py
@@ -102,13 +102,13 @@ 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)
-    name = db.Column(db.String(), nullable=False)
-    street = db.Column(db.String(), nullable=False)
+    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=False)
-    region = db.Column(db.String(), nullable=False)
-    postal_code = db.Column(db.String(), nullable=False)
-    country = db.Column(db.String(), nullable=False)
+    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(

From 72d8e8ec580f01db90965a9c85caaf27981afeb4 Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 13:28:20 -0800
Subject: [PATCH 4/7] name to contact_name

---
 ...13_474917a13bd4_adding_name_and_address_columns_to_.py | 4 ++--
 pay-api/src/pay_api/models/routing_slip.py                | 6 +++---
 pay-api/src/pay_api/services/fas/routing_slip.py          | 2 +-
 pay-api/tests/unit/models/test_routing_slip.py            | 4 ++--
 pay-api/tests/utilities/base_test.py                      | 8 ++++----
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py b/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
index e1dcc2b9c..4db6e29ab 100644
--- a/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
+++ b/pay-api/migrations/versions/2024_11_13_474917a13bd4_adding_name_and_address_columns_to_.py
@@ -22,7 +22,7 @@
 
 def upgrade():
     with op.batch_alter_table('routing_slips', schema=None) as batch_op:
-        batch_op.add_column(sa.Column('name', sa.String(length=50), nullable=True))
+        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))
@@ -34,7 +34,7 @@ def upgrade():
 
 def downgrade():
     with op.batch_alter_table('routing_slips', schema=None) as batch_op:
-        batch_op.drop_column('name')
+        batch_op.drop_column('contact_name')
         batch_op.drop_column('street')
         batch_op.drop_column('street_additional')
         batch_op.drop_column('city')
diff --git a/pay-api/src/pay_api/models/routing_slip.py b/pay-api/src/pay_api/models/routing_slip.py
index cdab9175c..940fee714 100644
--- a/pay-api/src/pay_api/models/routing_slip.py
+++ b/pay-api/src/pay_api/models/routing_slip.py
@@ -71,7 +71,7 @@ class RoutingSlip(Audit):  # pylint: disable=too-many-instance-attributes
             "updated_by",
             "updated_name",
             "updated_on",
-            "name",
+            "contact_name",
             "street",
             "street_additional",
             "city",
@@ -102,7 +102,7 @@ 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)
-    name = db.Column(db.String(), nullable=True)
+    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)
@@ -371,7 +371,7 @@ 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")
-    name = fields.String(data_key="name")
+    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")
diff --git a/pay-api/src/pay_api/services/fas/routing_slip.py b/pay-api/src/pay_api/services/fas/routing_slip.py
index ea88ff1ce..831152751 100644
--- a/pay-api/src/pay_api/services/fas/routing_slip.py
+++ b/pay-api/src/pay_api/services/fas/routing_slip.py
@@ -377,7 +377,7 @@ 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,
-            name=request_json.get("name"),
+            contact_name=request_json.get("contactName"),
             street=request_json["mailingAddress"].get("street"),
             street_additional=request_json["mailingAddress"].get("streetAdditional"),
             city=request_json["mailingAddress"].get("city"),
diff --git a/pay-api/tests/unit/models/test_routing_slip.py b/pay-api/tests/unit/models/test_routing_slip.py
index 25a647caf..0cf0136d5 100644
--- a/pay-api/tests/unit/models/test_routing_slip.py
+++ b/pay-api/tests/unit/models/test_routing_slip.py
@@ -34,7 +34,7 @@ def test_routing_slip_find_creation(session):
 
     rs = factory_routing_slip(
         payment_account_id=payment_account.id,
-        name="John Doe",
+        contact_name="John Doe",
         street="123 Main St",
         street_additional="Suite 200",
         city="Victoria",
@@ -45,7 +45,7 @@ def test_routing_slip_find_creation(session):
     )
     rs.save()
     assert rs.id is not None
-    assert rs.name == "John Doe"
+    assert rs.contact_name == "John Doe"
     assert rs.street == "123 Main St"
     assert rs.street_additional == "Suite 200"
     assert rs.city == "Victoria"
diff --git a/pay-api/tests/utilities/base_test.py b/pay-api/tests/utilities/base_test.py
index bb1ad533d..79930d613 100644
--- a/pay-api/tests/utilities/base_test.py
+++ b/pay-api/tests/utilities/base_test.py
@@ -445,7 +445,7 @@ def factory_routing_slip(
     total: int = 0,
     remaining_amount: Decimal = 0.0,
     routing_slip_date=datetime.now(tz=timezone.utc),
-    name="John Doe",
+    contact_name="John Doe",
     street="123 Main St",
     street_additional=None,
     city="Victoria",
@@ -463,7 +463,7 @@ def factory_routing_slip(
         remaining_amount=Decimal(str(remaining_amount)),
         created_by="test",
         routing_slip_date=routing_slip_date,
-        name=name,
+        contact_name=contact_name,
         street=street,
         street_additional=street_additional,
         city=city,
@@ -483,7 +483,7 @@ def factory_routing_slip_usd(
     remaining_amount: int = 0,
     routing_slip_date=datetime.now(tz=timezone.utc),
     total_usd=0,
-    name="John Doe",
+    contact_name="John Doe",
     street="123 Main St",
     street_additional=None,
     city="Victoria",
@@ -502,7 +502,7 @@ def factory_routing_slip_usd(
         created_by="test",
         routing_slip_date=routing_slip_date,
         total_usd=total_usd,
-        name=name,
+        contact_name=contact_name,
         street=street,
         street_additional=street_additional,
         city=city,

From 100a0b47be7a76c8c5205523b74128b8ec9439d4 Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 13:49:32 -0800
Subject: [PATCH 5/7] Test fix

---
 .../services/test_routing_slip_service.py     | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/pay-api/tests/unit/services/test_routing_slip_service.py b/pay-api/tests/unit/services/test_routing_slip_service.py
index a8b0b6a49..2ac347b0c 100644
--- a/pay-api/tests/unit/services/test_routing_slip_service.py
+++ b/pay-api/tests/unit/services/test_routing_slip_service.py
@@ -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)
@@ -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)
@@ -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)

From f226f84ad2af10c70764512051f64055ade1ba7f Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 14:17:31 -0800
Subject: [PATCH 6/7] mailing address fix

---
 pay-api/src/pay_api/services/fas/routing_slip.py | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/pay-api/src/pay_api/services/fas/routing_slip.py b/pay-api/src/pay_api/services/fas/routing_slip.py
index 831152751..2e1d4ee06 100644
--- a/pay-api/src/pay_api/services/fas/routing_slip.py
+++ b/pay-api/src/pay_api/services/fas/routing_slip.py
@@ -368,6 +368,7 @@ def create(cls, request_json: Dict[str, any], **kwargs):
             sum(float(payment.get("paidUsdAmount", 0)) for payment in request_json.get("payments"))
         )
 
+        mailing_address = request_json['mailingAddress', {}]
         # Create a routing slip record.
         routing_slip: RoutingSlipModel = RoutingSlipModel(
             number=rs_number,
@@ -378,13 +379,13 @@ def create(cls, request_json: Dict[str, any], **kwargs):
             routing_slip_date=string_to_date(request_json.get("routingSlipDate")),
             total_usd=total_usd,
             contact_name=request_json.get("contactName"),
-            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"),
+            street=mailing_address.get("street"),
+            street_additional=mailing_address.get("streetAdditional"),
+            city=mailing_address.get("city"),
+            region=mailing_address.get("region"),
+            postal_code=mailing_address.get("postalCode"),
+            country=mailing_address.get("country"),
+            delivery_instructions=mailing_address.get("deliveryInstructions"),
         ).flush()
 
         for payment in request_json.get("payments"):

From 31f6e9e7ad3de24f9f2e39a56c16e9e077a51e28 Mon Sep 17 00:00:00 2001
From: Rodrigo Barraza <hello@rod.dev>
Date: Wed, 13 Nov 2024 14:24:54 -0800
Subject: [PATCH 7/7] test fix

---
 pay-api/src/pay_api/services/fas/routing_slip.py | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/pay-api/src/pay_api/services/fas/routing_slip.py b/pay-api/src/pay_api/services/fas/routing_slip.py
index 2e1d4ee06..1f5f7005f 100644
--- a/pay-api/src/pay_api/services/fas/routing_slip.py
+++ b/pay-api/src/pay_api/services/fas/routing_slip.py
@@ -368,7 +368,7 @@ def create(cls, request_json: Dict[str, any], **kwargs):
             sum(float(payment.get("paidUsdAmount", 0)) for payment in request_json.get("payments"))
         )
 
-        mailing_address = request_json['mailingAddress', {}]
+        mailing_address = request_json.get('mailingAddress', {})
         # Create a routing slip record.
         routing_slip: RoutingSlipModel = RoutingSlipModel(
             number=rs_number,
@@ -379,13 +379,13 @@ def create(cls, request_json: Dict[str, any], **kwargs):
             routing_slip_date=string_to_date(request_json.get("routingSlipDate")),
             total_usd=total_usd,
             contact_name=request_json.get("contactName"),
-            street=mailing_address.get("street"),
-            street_additional=mailing_address.get("streetAdditional"),
-            city=mailing_address.get("city"),
-            region=mailing_address.get("region"),
-            postal_code=mailing_address.get("postalCode"),
-            country=mailing_address.get("country"),
-            delivery_instructions=mailing_address.get("deliveryInstructions"),
+            street=mailing_address.get("street", ""),
+            street_additional=mailing_address.get("streetAdditional", ""),
+            city=mailing_address.get("city", ""),
+            region=mailing_address.get("region", ""),
+            postal_code=mailing_address.get("postalCode", ""),
+            country=mailing_address.get("country", ""),
+            delivery_instructions=mailing_address.get("deliveryInstructions", ""),
         ).flush()
 
         for payment in request_json.get("payments"):