Skip to content

Commit 6702c7c

Browse files
Updates
1 parent 6d493fe commit 6702c7c

File tree

6 files changed

+77
-51
lines changed

6 files changed

+77
-51
lines changed

jobs/payment-jobs/tasks/eft_statement_due_task.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,15 @@ def _update_invoice_overdue_status(cls):
160160

161161
# Only publish lock event if it is not already locked
162162
if payment_account.has_overdue_invoices is None:
163-
lock_account_event_params = {
164-
"pay_account": payment_account,
165-
"additional_emails": current_app.config.get("EFT_OVERDUE_NOTIFY_EMAILS"),
166-
"payment_method": PaymentMethod.EFT.value,
167-
"source": QueueSources.PAY_JOBS.value,
168-
"suspension_reason_code": SuspensionReasonCodes.OVERDUE_EFT.value,
169-
}
170-
AuthEvent.publish_lock_account_event(lock_account_event_params)
163+
AuthEvent.publish_lock_account_event(
164+
AuthEvent.LockAccountDetails(
165+
pay_account=payment_account,
166+
additional_emails=current_app.config.get("EFT_OVERDUE_NOTIFY_EMAILS"),
167+
payment_method=PaymentMethod.EFT.value,
168+
source=QueueSources.PAY_JOBS.value,
169+
suspension_reason_code=SuspensionReasonCodes.OVERDUE_EFT.value,
170+
)
171+
)
171172

172173
# Even if the account is locked, there is a new overdue statement that needs NSF invoices added and
173174
# set the most recent date for has_overdue_invoices

jobs/payment-jobs/tests/jobs/test_eft_statement_due_task.py

+29-21
Original file line numberDiff line numberDiff line change
@@ -232,13 +232,17 @@ def test_account_lock(setup, session):
232232
with patch("tasks.eft_statement_due_task.publish_payment_notification"):
233233
EFTStatementDueTask.process_unpaid_statements()
234234
mock_auth_event.assert_called_once()
235-
expected_calls = [call({
236-
'pay_account': account1,
237-
'additional_emails': '',
238-
'payment_method': PaymentMethod.EFT.value,
239-
'source': 'PAY-JOBS',
240-
'suspension_reason_code': 'OVERDUE_EFT'
241-
})]
235+
expected_calls = [
236+
call(
237+
{
238+
"pay_account": account1,
239+
"additional_emails": "",
240+
"payment_method": PaymentMethod.EFT.value,
241+
"source": "PAY-JOBS",
242+
"suspension_reason_code": "OVERDUE_EFT",
243+
}
244+
)
245+
]
242246
mock_auth_event.assert_has_calls(expected_calls, any_order=True)
243247
assert account1.has_overdue_invoices
244248
assert statements[0][0].overdue_notification_date
@@ -326,20 +330,24 @@ def test_multi_account_lock(setup, session):
326330
EFTStatementDueTask.process_unpaid_statements()
327331
mock_auth_event.call_count == 2
328332
expected_calls = [
329-
call({
330-
'pay_account': account1,
331-
'additional_emails': '',
332-
'payment_method': PaymentMethod.EFT.value,
333-
'source': 'PAY-JOBS',
334-
'suspension_reason_code': 'OVERDUE_EFT'
335-
}),
336-
call({
337-
'pay_account': account2,
338-
'additional_emails': '',
339-
'payment_method': PaymentMethod.EFT.value,
340-
'source': 'PAY-JOBS',
341-
'suspension_reason_code': 'OVERDUE_EFT'
342-
})
333+
call(
334+
{
335+
"pay_account": account1,
336+
"additional_emails": "",
337+
"payment_method": PaymentMethod.EFT.value,
338+
"source": "PAY-JOBS",
339+
"suspension_reason_code": "OVERDUE_EFT",
340+
}
341+
),
342+
call(
343+
{
344+
"pay_account": account2,
345+
"additional_emails": "",
346+
"payment_method": PaymentMethod.EFT.value,
347+
"source": "PAY-JOBS",
348+
"suspension_reason_code": "OVERDUE_EFT",
349+
}
350+
),
343351
]
344352
mock_auth_event.assert_has_calls(expected_calls, any_order=True)
345353
assert statements1[0][1].overdue_notification_date

pay-api/src/pay_api/utils/auth_event.py

+25-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
"""Common code that sends AUTH events."""
22

3+
from dataclasses import asdict, dataclass
4+
from typing import Any, Optional
5+
36
from flask import current_app
47
from sbc_common_components.utils.enums import QueueMessageTypes
58
from sentry_sdk import capture_message
@@ -13,17 +16,30 @@
1316
class AuthEvent:
1417
"""Publishes to the auth-queue as an auth event though PUBSUB, this message gets sent to account-mailer after."""
1518

19+
@dataclass
20+
class LockAccountDetails:
21+
"""Lock account details."""
22+
23+
pay_account: Any
24+
additional_emails: str = ""
25+
payment_method: Optional[str] = None
26+
source: Optional[str] = None
27+
suspension_reason_code: Optional[str] = None
28+
outstanding_amount: Optional[float] = None
29+
original_amount: Optional[float] = None
30+
amount: Optional[float] = None
31+
1632
@staticmethod
17-
def publish_lock_account_event(params: dict):
33+
def publish_lock_account_event(params: LockAccountDetails):
1834
"""Publish NSF lock account event to the auth queue."""
19-
pay_account = params.get("pay_account")
20-
additional_emails = params.get("additional_emails", "")
21-
payment_method = params.get("payment_method", None)
22-
source = params.get("source", None)
23-
suspension_reason_code = params.get("suspension_reason_code", None)
24-
outstanding_amount = params.get("outstanding_amount", None)
25-
original_amount = params.get("original_amount", None)
26-
amount = params.get("amount", None)
35+
pay_account = params.pay_account
36+
additional_emails = params.additional_emails
37+
payment_method = params.payment_method
38+
source = params.source
39+
suspension_reason_code = params.suspension_reason_code
40+
outstanding_amount = params.outstanding_amount
41+
original_amount = params.original_amount
42+
amount = params.amount
2743
try:
2844
lock_payload = {
2945
"accountId": pay_account.auth_account_id,

pay-queue/devops/vaults.gcp.env

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ PAY_CONNECTOR_AUTH="op://relationship/$APP_ENV/pay-api/PAY_CONNECTOR_AUTH"
3434
EFT_TDI17_LOCATION_ID="op://relationship/$APP_ENV/pay-queue/EFT_TDI17_LOCATION_ID"
3535
EFT_WIRE_PATTERNS="op://relationship/$APP_ENV/pay-queue/EFT_WIRE_PATTERNS"
3636
EFT_PATTERNS="op://relationship/$APP_ENV/pay-queue/EFT_PATTERNS"
37-
PAD_OVERDUE_NOTIFY_EMAILS="op://relationship/$APP_ENV/pay-queue/PAD_OVERDUE_NOTIFY_EMAILS"
37+
PAD_NSF_NOTIFY_EMAILS="op://relationship/$APP_ENV/pay-queue/PAD_NSF_NOTIFY_EMAILS"

pay-queue/src/pay_queue/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class _Config: # pylint: disable=too-few-public-methods,protected-access
102102
EFT_PATTERNS = get_comma_delimited_string_as_tuple(os.getenv("EFT_PATTERNS", ""))
103103

104104
# PAD Config
105-
PAD_OVERDUE_NOTIFY_EMAILS = os.getenv("PAD_OVERDUE_NOTIFY_EMAILS", "")
105+
PAD_NSF_NOTIFY_EMAILS = os.getenv("PAD_NSF_NOTIFY_EMAILS", "")
106106

107107
# Secret key for encrypting bank account
108108
ACCOUNT_SECRET_KEY = os.getenv("ACCOUNT_SECRET_KEY")

pay-queue/src/pay_queue/services/payment_reconciliations.py

+12-11
Original file line numberDiff line numberDiff line change
@@ -394,17 +394,18 @@ def _process_consolidated_invoices(row, error_messages: List[Dict[str, any]]) ->
394394
# NSF Condition. Publish to account events for NSF.
395395
if _process_failed_payments(row):
396396
# Send mailer and account events to update status and send email notification
397-
lock_account_event_params = {
398-
"pay_account": payment_account,
399-
"additional_emails": current_app.config.get("PAD_OVERDUE_NOTIFY_EMAILS"),
400-
"payment_method": _convert_payment_method(_get_row_value(row, Column.SOURCE_TXN)),
401-
"source": QueueSources.PAY_QUEUE.value,
402-
"suspension_reason_code": SuspensionReasonCodes.OVERDUE_EFT.value,
403-
"outstanding_amount": _get_row_value(row, Column.TARGET_TXN_OUTSTANDING),
404-
"original_amount": _get_row_value(row, Column.TARGET_TXN_ORIGINAL),
405-
"amount": _get_row_value(row, Column.APP_AMOUNT),
406-
}
407-
AuthEvent.publish_lock_account_event(lock_account_event_params)
397+
AuthEvent.publish_lock_account_event(
398+
AuthEvent.LockAccountDetails(
399+
pay_account=payment_account,
400+
additional_emails=current_app.config.get("PAD_OVERDUE_NOTIFY_EMAILS"),
401+
payment_method=_convert_payment_method(_get_row_value(row, Column.SOURCE_TXN)),
402+
source=QueueSources.PAY_QUEUE.value,
403+
suspension_reason_code=SuspensionReasonCodes.OVERDUE_EFT.value,
404+
outstanding_amount=_get_row_value(row, Column.TARGET_TXN_OUTSTANDING),
405+
original_amount=_get_row_value(row, Column.TARGET_TXN_ORIGINAL),
406+
amount=_get_row_value(row, Column.APP_AMOUNT),
407+
)
408+
)
408409
else:
409410
error_msg = f"Target Transaction Type is received as {target_txn} for PAD, and cannot process {row}."
410411
has_errors = True

0 commit comments

Comments
 (0)