From c7097b7596ddbd4a8541799aa199da4ed866ff8e Mon Sep 17 00:00:00 2001 From: xxcxy Date: Fri, 18 Jun 2021 19:13:14 +0800 Subject: [PATCH 1/2] fix Inconsistency in payment step between Scheduler and WorkPeriodPayment table --- scripts/demo-payment-scheduler/data.json | 8 ++++++++ scripts/demo-payment-scheduler/index.js | 2 ++ src/services/PaymentSchedulerService.js | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/demo-payment-scheduler/data.json b/scripts/demo-payment-scheduler/data.json index 5023842c..8eafffec 100644 --- a/scripts/demo-payment-scheduler/data.json +++ b/scripts/demo-payment-scheduler/data.json @@ -43,6 +43,8 @@ "startDate":"2020-09-27", "endDate":"2020-10-03", "daysWorked":4, + "daysPaid": 3, + "paymentTotal": 0, "memberRate":27.06, "customerRate":13.13, "paymentStatus":"partially-completed", @@ -59,6 +61,8 @@ "startDate":"2020-10-18", "endDate":"2020-10-24", "daysWorked":4, + "daysPaid": 3, + "paymentTotal": 0, "memberRate":4.08, "customerRate":3.89, "paymentStatus":"cancelled", @@ -75,6 +79,8 @@ "startDate":"2020-10-25", "endDate":"2020-10-31", "daysWorked":3, + "daysPaid": 3, + "paymentTotal": 0, "memberRate":15.61, "customerRate":9.76, "paymentStatus":"pending", @@ -91,6 +97,8 @@ "startDate":"2020-10-11", "endDate":"2020-10-17", "daysWorked":4, + "daysPaid": 3, + "paymentTotal": 0, "memberRate":10.82, "customerRate":30.71, "paymentStatus":"pending", diff --git a/scripts/demo-payment-scheduler/index.js b/scripts/demo-payment-scheduler/index.js index 8f76a814..5cb0a0b5 100644 --- a/scripts/demo-payment-scheduler/index.js +++ b/scripts/demo-payment-scheduler/index.js @@ -13,6 +13,8 @@ for (let i = 0; i < 1000; i++) { amount: _.round(_.random(1000, true), 2), status: 'scheduled', billingAccountId: data.ResourceBooking.billingAccountId, + memberRate: data.ResourceBooking.memberRate, + days: 4, createdBy: '57646ff9-1cd3-4d3c-88ba-eb09a395366c', updatedBy: null, createdAt: `2021-05-19T21:3${i % 10}:46.507Z`, diff --git a/src/services/PaymentSchedulerService.js b/src/services/PaymentSchedulerService.js index 5fdb903b..3f04b94d 100644 --- a/src/services/PaymentSchedulerService.js +++ b/src/services/PaymentSchedulerService.js @@ -131,7 +131,7 @@ async function processPayment (workPeriodPayment) { await postEvent(config.TAAS_WORK_PERIOD_PAYMENT_UPDATE_TOPIC, updated.toJSON(), { oldValue }) if (paymentScheduler) { - await paymentScheduler.update({ step: PaymentSchedulerStatus.CLOSE_CHALLENGE, userId: paymentScheduler.userId, status: 'failed' }) + await paymentScheduler.update({ step: _.get(err, 'step', PaymentSchedulerStatus.CLOSE_CHALLENGE), userId: paymentScheduler.userId, status: 'failed' }) } localLogger.error(`Processed workPeriodPayment ${workPeriodPayment.id} failed`, 'processPayment') return processResult.FAIL From 355c1f4581dc8d043e013d77eb63fdf429bcfa74 Mon Sep 17 00:00:00 2001 From: xxcxy Date: Fri, 18 Jun 2021 20:39:30 +0800 Subject: [PATCH 2/2] update payment-scheduler-step optional --- ...-06-18-make-payment-scheduler-step-optional.js | 15 +++++++++++++++ src/models/PaymentScheduler.js | 3 +-- src/services/PaymentSchedulerService.js | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 migrations/2021-06-18-make-payment-scheduler-step-optional.js diff --git a/migrations/2021-06-18-make-payment-scheduler-step-optional.js b/migrations/2021-06-18-make-payment-scheduler-step-optional.js new file mode 100644 index 00000000..ddcecef1 --- /dev/null +++ b/migrations/2021-06-18-make-payment-scheduler-step-optional.js @@ -0,0 +1,15 @@ +const config = require('config') +const _ = require('lodash') +const { PaymentSchedulerStatus } = require('../app-constants') +/* + * Make Job payment_schedulers step optional. + */ + +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.sequelize.query(`ALTER TABLE ${config.DB_SCHEMA_NAME}.payment_schedulers ALTER COLUMN step DROP NOT NULL`) + }, + down: async (queryInterface, Sequelize) => { + await queryInterface.sequelize.query(`ALTER TABLE ${config.DB_SCHEMA_NAME}.payment_schedulers ALTER COLUMN step SET NOT NULL`) + } +} \ No newline at end of file diff --git a/src/models/PaymentScheduler.js b/src/models/PaymentScheduler.js index f8f64dfa..c030ef04 100644 --- a/src/models/PaymentScheduler.js +++ b/src/models/PaymentScheduler.js @@ -50,8 +50,7 @@ module.exports = (sequelize) => { allowNull: false }, step: { - type: Sequelize.ENUM(_.values(PaymentSchedulerStatus)), - allowNull: false + type: Sequelize.ENUM(_.values(PaymentSchedulerStatus)) }, status: { type: Sequelize.ENUM( diff --git a/src/services/PaymentSchedulerService.js b/src/services/PaymentSchedulerService.js index 3f04b94d..b07694e4 100644 --- a/src/services/PaymentSchedulerService.js +++ b/src/services/PaymentSchedulerService.js @@ -131,7 +131,7 @@ async function processPayment (workPeriodPayment) { await postEvent(config.TAAS_WORK_PERIOD_PAYMENT_UPDATE_TOPIC, updated.toJSON(), { oldValue }) if (paymentScheduler) { - await paymentScheduler.update({ step: _.get(err, 'step', PaymentSchedulerStatus.CLOSE_CHALLENGE), userId: paymentScheduler.userId, status: 'failed' }) + await paymentScheduler.update({ step: _.get(err, 'step'), userId: paymentScheduler.userId, status: 'failed' }) } localLogger.error(`Processed workPeriodPayment ${workPeriodPayment.id} failed`, 'processPayment') return processResult.FAIL