UNPKG

viam-projectv-scan

Version:

ViaCheck deposit application

429 lines (362 loc) 11.7 kB
const CheckCommonRules = require('./checkCommonRules'); const ESCANEADO = 'Escaneado'; const VERIFICADO = 'Verificado'; const BLOCK_LIST = 'Lista de bloqueados'; const INVALID_SIGNATURE = 'Firma Inválida'; const DUPLICATED = 'Duplicado'; const REJECTED = 'Rechazado'; const INVALID_ROUTING = 'Ruta inválida'; const INVALID_ACCOUNT = 'Cuenta inválida'; const INVALID_NUMBER = 'Número de cheque inválido'; const INVALID_AMOUNT = 'Valor inválido ó supera el máximo configurado por cheque'; const RISK = 'Riesgo Identificado'; const REVIEW = 'Algunos cambios requieren su verificación manual, por favor revisar los datos'; const RED = 'RED'; const GREEN = 'GREEN'; const YELLOW = 'YELLOW'; // OJO esta duplicado const validateCheckinRemoveOption = checkElement => { let isCheckRemove = false; if ( (checkElement.validFields.blockList || // !checkElement.validFields.signature || !checkElement.validFields.routing || !checkElement.validFields.account || !checkElement.validFields.checkNumber || // !checkElement.validFields.date || checkElement.validFields.duplicated || !checkElement.validFields.amount || (checkElement.isVerify && checkElement.colorVerify === RED)) && checkElement.isOcr ) { isCheckRemove = true; } return isCheckRemove; }; const isCheckRemove = check => { let isRemove = false; if ( (check.validFields.blockList || // (!check.validFields.signature && !check.validFields.isNetworkError) || !check.validFields.routing || check.validFields.duplicated || !check.validFields.amount || !check.validFields.account || !check.validFields.checkNumber || // !check.validFields.date || (check.isVerify && check.colorVerify === RED)) && check.isOcr ) { isRemove = true; } return isRemove; }; const isCheckReview = check => { let isReview = false; if ( (check.scoreFields.mircLine === 0 || (!check.validFields.signature || check.scoreFields.mircLine < check.limitRoutingScore || check.scoreFields.mircLine < check.limitAccountScore || (check.scoreFields.amount === 0 || check.scoreFields.amount < check.limitAmountScore) || (check.scoreFields.checkNumber === 0 || check.scoreFields.checkNumber < check.limitCheckNumberScore) || // (check.scoreFields.checkDate === 0 || // check.scoreFields.checkDate < check.limitDateScore || (check.isVerify && check.colorVerify === YELLOW))) && check.isOcr && !validateCheckinRemoveOption(check) ) { isReview = true; } return isReview; }; export const revertChecksStatus = checksArray => { const newChecksArray = checksArray; let quantityRemove = 0; let quantityReview = 0; newChecksArray.forEach(check => { const newCheck = check; newCheck.isVisible = true; if (isCheckReview(newCheck)) quantityReview += 1; else if (isCheckRemove(newCheck)) quantityRemove += 1; }); const checks = { checksArray: newChecksArray, qreview: quantityReview, qremove: quantityRemove }; return checks; }; export const revertChecksToReview = checksArray => { const newChecksArray = checksArray; newChecksArray.forEach(check => { const newCheck = check; if (!isCheckReview(newCheck)) { newCheck.isVisible = true; } }); const reviewArray = { checksArray: newChecksArray }; return reviewArray; }; export const revertChecksToRemove = checksArray => { const newChecksArray = checksArray; newChecksArray.forEach(check => { const newCheck = check; if (!isCheckRemove(check)) { newCheck.isVisible = true; } }); const removeArray = { checksArray: newChecksArray }; return removeArray; }; export const checksToRemoveReview = checksArray => { const newChecksArray = checksArray; let quantityReview = 0; let quantityRemove = 0; newChecksArray.forEach(check => { const newCheck = check; if (isCheckReview(newCheck) || isCheckRemove(newCheck)) { newCheck.isVisible = true; if (isCheckReview(newCheck)) quantityReview += 1; else if (isCheckRemove(newCheck)) quantityRemove += 1; } else { newCheck.isVisible = false; } }); const checks = { checksArray: newChecksArray, qreview: quantityReview, qremove: quantityRemove }; return checks; }; export const checksToReview = (checksArray, updateVisible) => { const newChecksArray = checksArray; let quantityReview = 0; newChecksArray.forEach(check => { const newCheck = check; if (!isCheckReview(newCheck)) { if (updateVisible) newCheck.isVisible = false; } else { quantityReview += 1; } }); const reviewArray = { checksArray: newChecksArray, qreview: quantityReview }; return reviewArray; }; export const checksToRemove = (checksArray, updateVisible) => { const newChecksArray = checksArray; let quantityRemove = 0; newChecksArray.forEach(check => { const newCheck = check; if (!isCheckRemove(newCheck)) { if (updateVisible) newCheck.isVisible = false; } else { quantityRemove += 1; } }); const removeArray = { checksArray: newChecksArray, qremove: quantityRemove }; return removeArray; }; const getRemoveStatus = checkElement => { let checkStatus = ''; if (checkElement.validFields.blockList) { checkStatus = `- ${BLOCK_LIST} `; } if (checkElement.validFields.duplicated) { checkStatus += `- ${DUPLICATED} `; } if (checkElement.isVerify && checkElement.colorVerify === RED) { checkStatus += `- ${REJECTED} `; } if (!checkElement.validFields.routing) { checkStatus += `- ${INVALID_ROUTING} `; } if (!checkElement.validFields.account) { checkStatus += `- ${INVALID_ACCOUNT} `; } if (!checkElement.validFields.checkNumber) { checkStatus += `- ${INVALID_NUMBER} `; } if (!checkElement.validFields.amount) { checkStatus += `- ${INVALID_AMOUNT} `; } return checkStatus; }; const getCheckStatus = checkElement => { let checkStatus = getRemoveStatus(checkElement); if (checkStatus === '') { if ( (checkElement.scoreFields.mircLine === 0 || checkElement.scoreFields.mircLine < checkElement.limitRoutingScore || (checkElement.scoreFields.amount === 0 || checkElement.scoreFields.amount < checkElement.limitAmountScore) || (checkElement.scoreFields.checkNumber === 0 || checkElement.scoreFields.checkNumber < checkElement.limitCheckNumberScore)) && checkElement.isOcr ) { checkStatus = `- ${REVIEW} `; } if ( checkElement.isVerify && checkElement.colorVerify === YELLOW && checkElement.isOcr ) { checkStatus = `- ${RISK} `; } if (!checkElement.validFields.signature) { checkStatus += `- ${INVALID_SIGNATURE} `; } return checkStatus; // Validate the review status } return checkStatus; }; export const getStatusCheckDetail = checkSelected => { let checkStatus = ''; if (checkSelected !== undefined && checkSelected !== null) { checkStatus = checkSelected.isVerify ? `${VERIFICADO} ${getCheckStatus(checkSelected)}` : `${getCheckStatus(checkSelected)}`; if (checkStatus === '') { checkStatus = ESCANEADO; } else if (checkStatus.substring(0, 1) === '-') { checkStatus = checkStatus.substring(1, checkStatus.length - 1); } } else { checkStatus = checkSelected.isVerify ? `${VERIFICADO}` : `${ESCANEADO}`; } return checkStatus; }; export const getDisableVerifyButton = checkSelected => { let isVerifyDisable = true; if (checkSelected !== undefined && checkSelected !== null) { if (checkSelected.length !== 0) { isVerifyDisable = checkSelected.isVerify; } } return isVerifyDisable; }; export const getClassNameGVerify = color => { let className = ''; if (color === GREEN) { className = 'rounded-circle verify checked'; } else { className = color === RED ? 'rounded-circle verify error' : 'rounded-circle verify issue'; } return className; }; export const getCheckVerifyCheck = checkElement => { const checkList = []; checkList.push({ scanOrder: checkElement.scanOrder, account: checkElement.account, routing: checkElement.routing, checkNumber: checkElement.checkNumber, accountType: 0, amount: checkElement.amount.toString() }); return checkList; }; const getStyleChecksToReview = checkElement => { let sytleReview = ''; if ( (checkElement.scoreFields.mircLine === 0 || checkElement.scoreFields.mircLine < checkElement.limitRoutingScore || !checkElement.validFields.signature || (checkElement.scoreFields.amount === 0 || checkElement.scoreFields.amount < checkElement.limitAmountScore) || (checkElement.scoreFields.checkNumber === 0 || checkElement.scoreFields.checkNumber < checkElement.limitCheckNumberScore) || (checkElement.isVerify && checkElement.colorVerify === YELLOW)) && checkElement.isOcr && !validateCheckinRemoveOption(checkElement) ) { sytleReview += 'alert-check'; } return sytleReview; }; const getStyleChecksToRemove = check => { let sytleRemove = ''; if ( (check.validFields.blockList || check.validFields.duplicated || !check.validFields.routing || (check.isVerify && check.colorVerify === RED) || !check.validFields.amount || !check.validFields.checkNumber || !check.validFields.account) && check.isOcr === true ) { sytleRemove += 'error-check'; } return sytleRemove; }; export const getStyleCheck = (checkElement, checkSelected) => { let style = 'check-item '; const sytleRemove = getStyleChecksToRemove(checkElement); if (sytleRemove !== '') { style += sytleRemove; } else { const styleReview = getStyleChecksToReview(checkElement); style += styleReview; } if (checkSelected !== null) { if (checkSelected.scanOrder === checkElement.scanOrder) style += ' check-item-selected'; } if (!checkElement.isVisible) style += ' hide'; return style; }; export const getCheckVerifyItems = checksArray => { const checksList = []; checksArray.forEach(check => { if (check.selected === true && check.isVerify === false) { checksList.push({ scanOrder: check.scanOrder, account: check.account, routing: check.routing, checkNumber: check.checkNumber, accountType: 0, amount: check.amount.toString() }); } }); return checksList; }; export const setCheckVerifyItems = (checksList, checksArray) => { const newChecksArray = checksArray; checksList.forEach(check => { const index = CheckCommonRules.getCheckArrayIndex(newChecksArray, check); if (index !== -1) { newChecksArray[index].isVerify = true; newChecksArray[index].colorVerify = check.colorVerificationResponse; } }); return newChecksArray; }; export const setStatusEnableValidations = check => { const newCheck = check; newCheck.disableCell = false; newCheck.isOcr = true; return newCheck; };