feat: add list of passable tx error codes for customer volume calculation

This commit is contained in:
Sérgio Salgado 2021-09-13 20:16:29 +01:00 committed by Josh Harvey
parent 90bae5d7ab
commit d3c5ef92f1

View file

@ -22,6 +22,8 @@ const idPhotoCardBasedir = _.get('idPhotoCardDir', options)
const frontCameraBaseDir = _.get('frontCameraDir', options)
const operatorDataDir = _.get('operatorDataDir', options)
const TX_PASSTHROUGH_ERROR_CODES = ['operatorCancel']
/**
* Add new customer
*
@ -454,7 +456,6 @@ function batch () {
* @returns {array} Array of customers with it's transactions aggregations
*/
function getCustomersList (phone = null, name = null, address = null, id = null) {
const passableErrorCodes = _.map(Pgp.as.text, TX_PASSTHROUGH_ERROR_CODES).join(',')
@ -502,6 +503,7 @@ function getCustomersList (phone = null, name = null, address = null, id = null)
* @returns {array} Array of customers with it's transactions aggregations
*/
function getCustomerById (id) {
const passableErrorCodes = _.map(Pgp.as.text, TX_PASSTHROUGH_ERROR_CODES).join(',')
const sql = `select id, authorized_override, days_suspended, is_suspended, front_camera_path, front_camera_override,
phone, sms_override, id_card_data, id_card_data_override, id_card_data_expiration,
id_card_photo_path, id_card_photo_override, us_ssn, us_ssn_override, sanctions, sanctions_at,
@ -517,15 +519,15 @@ function getCustomerById (id) {
c.sanctions_at, c.sanctions_override, t.tx_class, t.fiat, t.fiat_code, t.created,
row_number() over (partition by c.id order by t.created desc) as rn,
sum(case when t.id is not null then 1 else 0 end) over (partition by c.id) as total_txs,
sum(case when error_code is distinct from 'operatorCancel' then t.fiat else 0 end) over (partition by c.id) as total_spent
sum(case when error_code is null or error_code not in ($1^) then t.fiat else 0 end) over (partition by c.id) as total_spent
from customers c left outer join (
select 'cashIn' as tx_class, id, fiat, fiat_code, created, customer_id, error_code
from cash_in_txs where send_confirmed = true union
select 'cashOut' as tx_class, id, fiat, fiat_code, created, customer_id, error_code
from cash_out_txs where confirmed_at is not null) t on c.id = t.customer_id
where c.id = $1
where c.id = $2
) as cl where rn = 1`
return db.oneOrNone(sql, [id])
return db.oneOrNone(sql, [passableErrorCodes, id])
.then(populateOverrideUsernames)
.then(camelize)
}