From 4f53470491a789c33df403e5e6a2885403614737 Mon Sep 17 00:00:00 2001 From: Sumesh Punakkal Kariyil <sumesh.pk@aot-technologies.com> Date: Wed, 15 Sep 2021 15:33:10 -0700 Subject: [PATCH] Fixes on reconciliation --- jobs/payment-jobs/requirements.txt | 12 +++++------- jobs/payment-jobs/tasks/cfs_create_invoice_task.py | 2 +- pay-api/src/pay_api/services/bcol_service.py | 2 +- .../src/reconciliations/payment_reconciliations.py | 6 ++++++ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/jobs/payment-jobs/requirements.txt b/jobs/payment-jobs/requirements.txt index bdc6fff22..860d26f17 100644 --- a/jobs/payment-jobs/requirements.txt +++ b/jobs/payment-jobs/requirements.txt @@ -1,5 +1,5 @@ -e git+https://github.com/bcgov/sbc-common-components.git@a7c5c1c589a958a78697288c240d38d5e1c352c0#egg=sbc_common_components&subdirectory=python --e git+https://github.com/bcgov/sbc-pay.git@d735a9db20d6c9a6b67d4891eaec957dd5a6c711#egg=pay_api&subdirectory=pay-api +-e git+https://github.com/bcgov/sbc-pay.git@01f1390e8929d9416f3ea396b0b31f6db8f65635#egg=pay_api&subdirectory=pay-api Flask-Caching==1.10.1 Flask-Migrate==2.7.0 Flask-Moment==1.0.2 @@ -25,27 +25,26 @@ blinker==1.4 cachelib==0.3.0 certifi==2021.5.30 cffi==1.14.6 -charset-normalizer==2.0.4 +charset-normalizer==2.0.5 click==7.1.2 croniter==1.0.15 cryptography==3.4.8 -dpath==2.0.2 +dpath==2.0.5 ecdsa==0.17.0 flask-jwt-oidc==0.3.0 flask-marshmallow==0.11.0 flask-restx==0.5.1 gunicorn==20.1.0 idna==3.2 -importlib-resources==5.2.2 itsdangerous==1.1.0 -jaeger-client==4.6.1 +jaeger-client==4.8.0 jsonschema==3.2.0 marshmallow-sqlalchemy==0.25.0 marshmallow==3.13.0 minio==7.1.0 opentracing==2.4.0 paramiko==2.7.2 -protobuf==3.17.3 +protobuf==3.18.0 psycopg2-binary==2.9.1 pyasn1==0.4.8 pycparser==2.20 @@ -63,4 +62,3 @@ threadloop==1.0.2 thrift==0.13.0 tornado==6.1 urllib3==1.26.6 -zipp==3.5.0 diff --git a/jobs/payment-jobs/tasks/cfs_create_invoice_task.py b/jobs/payment-jobs/tasks/cfs_create_invoice_task.py index 3e1ba2e1a..212c6d39a 100644 --- a/jobs/payment-jobs/tasks/cfs_create_invoice_task.py +++ b/jobs/payment-jobs/tasks/cfs_create_invoice_task.py @@ -109,7 +109,7 @@ def _create_pad_invoices(cls): # pylint: disable=too-many-locals try: # Get the first invoice id as the trx number for CFS - invoice_response = CFSService.create_account_invoice(transaction_number=account_invoices[0].id, + invoice_response = CFSService.create_account_invoice(transaction_number=account_invoices[-1].id, line_items=lines, cfs_account=cfs_account) except Exception as e: # NOQA # pylint: disable=broad-except diff --git a/pay-api/src/pay_api/services/bcol_service.py b/pay-api/src/pay_api/services/bcol_service.py index b91e1113f..65aea46e5 100644 --- a/pay-api/src/pay_api/services/bcol_service.py +++ b/pay-api/src/pay_api/services/bcol_service.py @@ -71,7 +71,7 @@ def create_invoice(self, payment_account: PaymentAccount, # pylint: disable=too payload['userId'] = user.user_name_with_no_idp if user.is_staff() else current_app.config[ 'BCOL_USERNAME_FOR_SERVICE_ACCOUNT_PAYMENTS'] payload['accountNumber'] = invoice.bcol_account - payload['formNumber'] = invoice.dat_number + payload['formNumber'] = invoice.dat_number or '' payload['reduntantFlag'] = 'Y' payload['rateType'] = 'C' diff --git a/queue_services/payment-reconciliations/src/reconciliations/payment_reconciliations.py b/queue_services/payment-reconciliations/src/reconciliations/payment_reconciliations.py index 114b2e92f..1741bc427 100644 --- a/queue_services/payment-reconciliations/src/reconciliations/payment_reconciliations.py +++ b/queue_services/payment-reconciliations/src/reconciliations/payment_reconciliations.py @@ -237,10 +237,16 @@ async def _process_consolidated_invoices(row): filter(InvoiceReferenceModel.status_code == InvoiceReferenceStatus.ACTIVE.value). \ filter(InvoiceReferenceModel.invoice_number == inv_number). \ all() + payment_account: PaymentAccountModel = _get_payment_account(row) if target_txn_status.lower() == Status.PAID.value.lower(): logger.debug('Fully PAID payment.') + if not inv_references: + logger.error('No invoice found for %s in the system, and cannot process %s.', inv_number, row) + capture_message('No invoice found for {invoice_number} in the system, and cannot process {row}.' + .format(invoice_number=inv_number, row=row), level='error') + return await _process_paid_invoices(inv_references, row) await _publish_mailer_events('PAD.PaymentSuccess', payment_account, row) elif target_txn_status.lower() == Status.NOT_PAID.value.lower() \