viam-projectv-scan
Version:
ViaCheck deposit application
429 lines (362 loc) • 11.7 kB
JavaScript
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;
};