ca-mfe-page-scoring-ui
Version:
This is a react shell for the SPGI Platform MFE implementation
134 lines (118 loc) • 5.39 kB
text/typescript
import {
periodTypeConstants,
restatementType,
dataSourceConstants,
platforms,
financialQuarter
} from '@root/constants';
import getPeriodDate from '@utils/periodDate';
export const getPrivateorPublicPeriodType = (selectedValues, isPrivateCompany) => selectedValues.periodType
? selectedValues.periodType
: isPrivateCompany
? periodTypeConstants[0]
: periodTypeConstants[1];
export const getCurrencyObject = (currency, companyMetaData) => {
const currencyData = companyMetaData.currencies;
const currencyValue = currencyData?.find(c => c.code === currency);
if (currencyValue) {
return {
value: currencyValue.code,
label: currencyValue.name + '[' + currencyValue.code + ']'
};
}
return currencyValue;
};
export const selectValue = (val, defaultItem) => {
const returnVal = val && Object.keys(val).length > 0 ? val : defaultItem;
return returnVal;
};
export const getPeriodTypeConstants = (isPrivate, extractedData) => {
let periodType = isPrivate ? periodTypeConstants[0] : periodTypeConstants[1];
const isExtractedPeriodType = extractedData?.instances?.length && extractedData.instances[0]?.Period;
if (isExtractedPeriodType) {
periodType = extractedData.instances[0].Period === 'FY' ? periodTypeConstants[0] : periodTypeConstants[1];
}
return periodType;
};
export const getFinancialStatementOptions = financialStatementList =>
financialStatementList.map((c, index) => ({
value: c.periodType === 'FY' ? c.fiscalYear.toString() : c.periodDate,
label: c.periodType === 'FY' ? c.fiscalYear.toString() : c.periodDate,
isProp: c.restatementType === restatementType.LP,
currencyCode: c?.currencyIso,
id: index,
fiscalQuarter: c.fiscalQuarter,
fiscalYear: c.fiscalYear,
periodDate: c.newDate ? c.newDate : c.periodDate,
periodType: c.periodType,
restatementType: c.restatementType
}));
export const getSelectPeriodOptions = selectPeriodList =>
selectPeriodList.map((c, index) => ({
label: `FY ${c.fiscalYear}`,
value: c.fiscalYear,
currencyCode: c?.currencyIso,
restatementType: c?.restatementType,
id: index,
isProp: c.restatementType === restatementType.LP,
periodDate: c?.periodDate,
fiscalQuarter: c?.fiscalQuarter
}));
export const companyDatesPayload = ({
csCompanyId, isPropDataSource, isUnlinkCompany, isUnlinkPropCompany, companyId, latestStmtDate = '', ...rest
}) => ({
...rest,
...(csCompanyId && { csCompanyId }),
...(isPropDataSource ? { datasource: platforms.CIQPROP, companyId }
: ((isUnlinkCompany || isUnlinkPropCompany)
? { datasource: platforms.CIQUNLINK, ...(latestStmtDate && { pdfnStartDate: latestStmtDate }) }
: { datasource: platforms.CIQ, companyId }))
});
const removeExtarctedDataSource = dataSourceConstants.filter(item => item.label !== 'Extracted');
export const getDataSourceOptions = (isPropCompany = false, isUnlinkPropCompany = false, isExtractedData = false
, isRVLinkedCompany = false) =>
(isPropCompany && !isUnlinkPropCompany && !isExtractedData)
? [dataSourceConstants[1]]
: (isExtractedData ? (isRVLinkedCompany ? removeExtarctedDataSource : dataSourceConstants)
: removeExtarctedDataSource);
export const getDataSourceText = (t, isUnlinkCompany = false, isExtractedData = false,
isRVunLinkedCompany = false, unlinkedSource = false ) => isUnlinkCompany
? dataSourceConstants[0].label
: (isExtractedData
? (isRVunLinkedCompany
? (unlinkedSource
? t('scoringui:companyInput:datasourceExpand')
: t('scoringui:companyInput:datasourceCapital'))
: t('scoringui:companyInput:datasourceExtract'))
: t('scoringui:companyInput:none'));
export const checkExtractedStmt = (dataSource, extractedData) =>
(dataSource === dataSourceConstants[2].value) && extractedData?.instances?.length;
export const getExtractedStatements = ({ extractedData, selectedValues, isLTMperiodType }) => {
const statement = extractedData?.instances;
const extractedStatementList = [];
statement.forEach(st => {
if (selectedValues.periodType.label === st.Period) {
const fiscalQuarter = Number(st.FQ);
const currencyIso = extractedData?.currencyName.replace(/(^.*\[|\].*$)/g, '');
const restatementType = 'LC';
const fiscalYear = Number(st.FY);
const newDate = getPeriodDate({
newQtr: fiscalQuarter, periodTp: st.Period, newYr: fiscalYear })?.newStmtDate;
let periodDate = newDate;
if (isLTMperiodType) {
const addedQuarter = financialQuarter.find(item => Number(item.value) === fiscalQuarter);
periodDate = `${addedQuarter.label} ${fiscalYear}`;
}
extractedStatementList.push({
periodDate,
currencyIso,
restatementType,
fiscalYear,
fiscalQuarter,
periodType: st.Period,
newDate
});
}
});
return extractedStatementList;
};