Skip to content

Commit

Permalink
Merge pull request #1614 from stevenc987/main
Browse files Browse the repository at this point in the history
Update Payment Society to match the requirements from home team#24493
  • Loading branch information
stevenc987 authored Nov 22, 2024
2 parents 3ad2532 + 1ebe33f commit 44c360c
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 53 deletions.
9 changes: 6 additions & 3 deletions api/migrations/versions/179a7b0089ce_payment_societies.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@ def upgrade():
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('nr_num', sa.String(length=10), nullable=True),
sa.Column('corp_num', sa.String(20), nullable=True),
sa.Column('request_state', sa.String(length=40), nullable=True),
sa.Column('payment_status', sa.String(length=50), nullable=True),
sa.Column('payment_date', sa.DateTime(), nullable=True),
sa.Column('payment_completion_date', sa.DateTime(), nullable=True),
sa.Column('payment_status_code', sa.String(length=30), nullable=True),
sa.Column('payment_fee_code', sa.String(length=30), nullable=True),
sa.Column('payment_type', sa.String(length=30), nullable=True),
sa.Column('payment_amount', sa.Numeric(), nullable=True),
sa.Column('payment_json', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
sa.Column('payment_action', sa.String(length=30), nullable=True),
sa.PrimaryKeyConstraint('id')
)
# ### end Alembic commands ###
Expand Down
2 changes: 1 addition & 1 deletion api/namex/VERSION.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '1.2.10'
__version__ = '1.2.11'
22 changes: 10 additions & 12 deletions api/namex/models/payment_society.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,18 @@ class PaymentSociety(db.Model):
id = db.Column(db.Integer, primary_key=True)
nrNum = db.Column('nr_num', db.String(10), unique=True)
corpNum = db.Column('corp_num', db.String(20), unique=True)
requestState = db.Column('request_state', db.String(40), unique=True)
paymentState = db.Column('payment_status', db.String(50), unique=True)
paymentDate = db.Column('payment_date', db.DateTime(timezone=True), default=datetime.utcnow)
paymentJson = db.Column('payment_json', JSONB)

paymentCompletionDate = db.Column('payment_completion_date', db.DateTime(timezone=True), default=datetime.utcnow)
paymentStatusCode = db.Column('payment_status_code', db.String(30), unique=True)
paymentFeeCode = db.Column('payment_fee_code', db.String(30), unique=True)
paymentType = db.Column('payment_type', db.String(30), unique=True)
paymentAmount = db.Column('payment_amount', db.Numeric(19, 2), unique=True)
paymentJson = db.Column('payment_json', JSONB)
paymentAction = db.Column('payment_action', db.String(30), unique=True)

def json(self):
return {"id": self.id,
"nrNum": self.nrNum,
"corpNum": self.corpNum,
"requestState": self.requestState,
"paymentState": self.paymentState,
"paymentDate": self.paymentDate,
"paymentJson": self.paymentJson
}
"nrNum": self.nrNum
}

def save_to_db(self):
db.session.add(self)
Expand Down
69 changes: 32 additions & 37 deletions api/namex/resources/payment_societies.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import copy, json
import json
from flask import request, jsonify, g, current_app, make_response
from flask_restx import Resource, Namespace, cors
import copy
from flask import request, jsonify, current_app, make_response
from flask_restx import Namespace, cors
from namex.resources.name_requests.abstract_nr_resource import AbstractNameRequestResource
from sqlalchemy.orm.exc import NoResultFound

from namex import jwt
Expand All @@ -17,7 +17,7 @@

@cors_preflight('GET')
@api.route('/<string:nr>', methods=['GET', 'OPTIONS'])
class PaymentSocietiesSearch(Resource):
class PaymentSocietiesSearch(AbstractNameRequestResource):

@staticmethod
@cors.crossdomain(origin='*')
Expand Down Expand Up @@ -56,13 +56,15 @@ def get(nr):
nr_payment_society_info['id'] = ps.id
nr_payment_society_info['nr_num'] = ps.nrNum
nr_payment_society_info['corp_num'] = ps.corpNum
nr_payment_society_info['request_state'] = ps.requestState
nr_payment_society_info['payment_state'] = ps.paymentState
nr_payment_society_info['paymentDate'] = ps.paymentDate
nr_payment_society_info['payment_completion_date'] = ps.paymentCompletionDate
nr_payment_society_info['payment_status_code'] = ps.paymentStatusCode
nr_payment_society_info['payment_fee_code'] = ps.paymentFeeCode
nr_payment_society_info['payment_type'] = ps.paymentType
nr_payment_society_info['payment_amount'] = ps.paymentAmount
nr_payment_society_info['payment_json'] = ps.paymentJson
nr_payment_society_info['payment_action'] = ps.paymentAction

payment_society_txn_history.insert(0, copy.deepcopy(nr_payment_society_info))

if len(payment_society_txn_history) == 0:
return make_response(jsonify({ 'message': f'No valid payment societies for {nr} found'}), 404)

Expand All @@ -76,59 +78,52 @@ def get(nr):

@cors_preflight('POST')
@api.route('', methods=['POST', 'OPTIONS'])
class PaymentSocieties(Resource):

@staticmethod
class PaymentSocieties(AbstractNameRequestResource):
@cors.crossdomain(origin='*')
@jwt.has_one_of_roles([User.APPROVER, User.EDITOR, User.SYSTEM])
def post(*args, **kwargs):
def post(self):
# do the cheap check first before the more expensive ones

try:
json_input = request.get_json()
if not json_input:
return make_response(jsonify({'message': 'No input data provided'}), 400)
current_app.logger.debug(json_input)
current_app.logger.debug(f'Request Json: {json_input}')

nr_num = json_input.get('nrNum', None)
if not nr_num:
return make_response(jsonify({"message": "nr_num not set in json input"}), 406)

paymentStateType = json_input.get('paymentStateType', None)
if not paymentStateType:
return make_response(jsonify({"message": "paymentStateType not set in json input"}), 406)

payment_json = json_input.get('payment', None)
if not payment_json:
return make_response(jsonify({"message": "payment not set in json input"}), 406)

paymentDate = payment_json.get('paymentDate', None)
if not paymentDate:
return make_response(jsonify({"message": "paymentDate not set in json input"}), 406)

nrd = RequestDAO.find_by_nr(nr_num)
if not nrd:
return make_response(jsonify({"message": "Request: {} not found in requests table".format(nr_num)}), 404)

# replacing temp NR number to a formal NR number if needed.
nrd = self.add_new_nr_number(nrd, False)
current_app.logger.debug(f'Formal NR nubmer is: {nrd.nrNum}')
except NoResultFound as nrf:
# not an error we need to track in the log
return make_response(jsonify({"message": "Request: {} not found".format(nr_num)}), 404)
except Exception as err:
current_app.logger.error("Error when posting NR: {0} Err:{1} Please double check the json input file format".format(nr_num, err))
return make_response(jsonify({"message": "NR had an internal error. Please double check the json input file format"}), 404)

user = User.find_by_jwtToken(g.jwt_oidc_token_info)
if user is None:
return make_response(jsonify({'message': 'No User'}), 404)

ps_instance = PaymentSocietyDAO()
ps_instance.nrNum = nr_num
ps_instance.corpNum = nrd.corpNum
ps_instance.requestState = nrd.stateCd
ps_instance.paymentState = paymentStateType
ps_instance.paymentDate = paymentDate
ps_instance.paymentJson = json.dumps(json_input)
ps_instance.nrNum = nrd.nrNum
ps_instance.corpNum = json_input.get('corpNum', None)
ps_instance.paymentCompletionDate = json_input.get('paymentCompletionDate', None)
ps_instance.paymentStatusCode = json_input.get('paymentStatusCode', None)
ps_instance.paymentFeeCode = json_input.get('paymentFeeCode', None)
ps_instance.paymentType = json_input.get('paymentType', None)
ps_instance.paymentAmount = json_input.get('paymentAmount', None)
ps_instance.paymentJson = json_input.get('paymentJson', None)
ps_instance.paymentAction = json_input.get('paymentAction', None)

ps_instance.save_to_db()
current_app.logger.debug(f'ps_instance saved...')

if nrd.nrNum !=nr_num:
nrd.save_to_db()
current_app.logger.debug(f'nrd saved...')

return make_response(jsonify(ps_instance.json()), 200)

Expand Down

0 comments on commit 44c360c

Please sign in to comment.