department-of-veterans-affairs/vets-website

View on GitHub
src/applications/financial-status-report/config/chapters/householdExpensesChapter.js

Summary

Maintainability
D
2 days
Test Coverage
import {
  householdExpensesChecklist,
  householdExpensesInputList,
  monthlyHousingExpenses,
  utilityBillPages,
  creditCardBills,
  installmentContracts,
  otherExpensesPages,
} from '../../pages';

import CreditCardBill from '../../components/householdExpenses/CreditCardBill';
import CreditCardBillSummary from '../../components/householdExpenses/CreditCardBillSummary';
import AddUtilityBill from '../../components/utilityBills/AddUtilityBill';
import UtilityBillSummary from '../../components/utilityBills/UtilityBillSummary';
import UtilityBillSummaryReview from '../../components/utilityBills/UtilityBillSummaryReview';
import AddOtherExpense from '../../components/otherExpenses/AddOtherExpense';
import OtherExpensesChecklist from '../../components/otherExpenses/OtherExpensesChecklist';
import OtherExpensesSummary from '../../components/otherExpenses/OtherExpensesSummary';
import OtherExpensesSummaryReview from '../../components/otherExpenses/OtherExpensesSummaryReview';
import InstallmentContract from '../../components/householdExpenses/InstallmentContract';
import InstallmentContractSummary from '../../components/householdExpenses/InstallmentContractSummary';
import HouseholdExpensesSummaryReview from '../../components/householdExpenses/HouseholdExpensesSummaryReview';
import CreditCardBillsSummaryReview from '../../components/householdExpenses/CreditCardBillsSummaryReview';
import InstallmentContractsSummaryReview from '../../components/householdExpenses/InstallmentContractsSummaryReview';
import StreamlinedExplainer from '../../components/shared/StreamlinedExplainer';
import HouseholdExpensesExplainerWidget from '../../components/householdExpenses/HouseholdExpensesExplainerWidget';
import ExpenseExplainerReview from '../../components/householdExpenses/ExpenseExplainerReview';

import {
  isStreamlinedLongForm,
  isStreamlinedShortForm,
} from '../../utils/streamlinedDepends';

export default {
  householdExpensesChapter: {
    title: 'Household expenses',
    depends: formData => !isStreamlinedShortForm(formData),
    pages: {
      expensesExplainer: {
        path: 'expenses-explainer',
        title: 'Household expenses explainer',
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        CustomPage: HouseholdExpensesExplainerWidget,
        CustomPageReview: ExpenseExplainerReview,
        depends: formData =>
          formData['view:enhancedFinancialStatusReport'] &&
          !isStreamlinedShortForm(formData),
      },
      householdExpensesChecklist: {
        path: 'household-expenses-checklist',
        title: 'Household expenses checklist',
        uiSchema: householdExpensesChecklist.uiSchema,
        schema: householdExpensesChecklist.schema,
        depends: formData =>
          !isStreamlinedShortForm(formData) &&
          !formData['view:showUpdatedExpensePages'],
      },
      householdExpensesInputList: {
        path: 'household-expenses-values',
        title: 'Household expenses values',
        uiSchema: householdExpensesInputList.uiSchema,
        schema: householdExpensesInputList.schema,
        CustomPageReview: HouseholdExpensesSummaryReview,
        depends: formData =>
          formData.expenses?.expenseRecords?.length > 0 &&
          !isStreamlinedShortForm(formData) &&
          !formData['view:showUpdatedExpensePages'],
      },
      monthlyHousingExpenses: {
        path: 'monthly-housing-expenses',
        title: 'Monthly housing expenses',
        schema: monthlyHousingExpenses.schema,
        uiSchema: monthlyHousingExpenses.uiSchema,
        depends: formData =>
          !isStreamlinedShortForm(formData) &&
          formData['view:showUpdatedExpensePages'],
      },
      // Enhanced Utility Bills
      utilityBillChecklist: {
        path: 'utility-bill-checklist',
        title: 'Utility bill options',
        uiSchema: utilityBillPages.utilityBillChecklist.uiSchema,
        schema: utilityBillPages.utilityBillChecklist.schema,
        depends: formData => !isStreamlinedShortForm(formData),
      },
      utilityBillValues: {
        path: 'utility-bill-values',
        title: 'Utility bill values',
        uiSchema: utilityBillPages.utilityBillValues.uiSchema,
        schema: utilityBillPages.utilityBillValues.schema,
        depends: formData =>
          !!formData.utilityRecords?.length &&
          !isStreamlinedShortForm(formData),
      },
      utilityBillSummary: {
        path: 'utility-bill-summary',
        title: 'Utility bills summary',
        CustomPage: UtilityBillSummary,
        CustomPageReview: UtilityBillSummaryReview,
        editModeOnReviewPage: true,
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          !!formData.utilityRecords?.length &&
          !isStreamlinedShortForm(formData),
      },
      addUtilityBill: {
        path: 'add-utility-bill',
        title: 'Add your utility bills',
        CustomPage: AddUtilityBill,
        CustomPageReview: null,
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: () => false, // accessed from utilityBillSummary
      },
      creditCardBills: {
        path: 'credit-card-bills',
        title: 'Credit card bills',
        uiSchema: creditCardBills.uiSchema,
        schema: creditCardBills.schema,
        depends: formData => !isStreamlinedShortForm(formData),
      },
      addEditCreditCardBills: {
        path: 'your-credit-card-bills',
        title: 'Add your credit card bill',
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          formData.questions.hasCreditCardBills &&
          !formData.expenses?.creditCardBills?.length &&
          !isStreamlinedShortForm(formData),
        editModeOnReviewPage: true,
        CustomPage: CreditCardBill,
        CustomPageReview: null,
      },
      creditCardBillSummary: {
        path: 'credit-card-bills-summary',
        title: 'Credit card bills summary',
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          formData.questions.hasCreditCardBills &&
          !isStreamlinedShortForm(formData),
        editModeOnReviewPage: true,
        CustomPage: CreditCardBillSummary,
        CustomPageReview: CreditCardBillsSummaryReview,
      },
      installmentContracts: {
        path: 'installment-contracts',
        title: 'Installment contracts',
        uiSchema: installmentContracts.uiSchema,
        schema: installmentContracts.schema,
        depends: formData => !isStreamlinedShortForm(formData),
      },
      addEditInstallmentContract: {
        path: 'your-installment-contracts',
        title: 'Installment contracts details',
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          formData.questions.hasRepayments &&
          !formData?.installmentContracts?.length &&
          !isStreamlinedShortForm(formData),
        editModeOnReviewPage: true,
        CustomPage: InstallmentContract,
        CustomPageReview: null,
      },
      installmentContractSummary: {
        path: 'installment-contracts-summary',
        title: 'Installment contracts summary',
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          formData.questions.hasRepayments && !isStreamlinedShortForm(formData),
        editModeOnReviewPage: true,
        CustomPage: InstallmentContractSummary,
        CustomPageReview: InstallmentContractsSummaryReview,
      },
      // Start Other Living Expenses
      otherExpensesChecklist: {
        path: 'other-expenses-checklist',
        title: 'Other expense options',
        CustomPage: OtherExpensesChecklist,
        CustomPageReview: null,
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData => !isStreamlinedShortForm(formData),
      },
      otherExpensesValues: {
        path: 'other-expenses-values',
        title: 'Other expense values',
        uiSchema: otherExpensesPages.otherExpensesValues.uiSchema,
        schema: otherExpensesPages.otherExpensesValues.schema,
        depends: formData =>
          !!formData.otherExpenses?.length && !isStreamlinedShortForm(formData),
      },
      otherExpensesSummary: {
        path: 'other-expenses-summary',
        title: 'Other living expenses',
        CustomPage: OtherExpensesSummary,
        CustomPageReview: OtherExpensesSummaryReview,
        editModeOnReviewPage: true,
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          !!formData.otherExpenses?.length && !isStreamlinedShortForm(formData),
      },
      addOtherExpenses: {
        path: 'add-other-expense',
        title: 'Add your additional expense',
        CustomPage: AddOtherExpense,
        CustomPageReview: null,
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: () => false, // accessed from otherExpensesSummary
        returnUrl: 'other-expenses-summary',
      },
      // End Other Living Expenses
      streamlinedLongTransitionPage: {
        // Transition page - streamlined long form only
        path: 'skip-questions-explainer',
        title: 'You can skip questions on this form',
        CustomPage: StreamlinedExplainer,
        CustomPageReview: null,
        uiSchema: {},
        schema: { type: 'object', properties: {} },
        depends: formData =>
          formData?.gmtData?.isEligibleForStreamlined &&
          isStreamlinedLongForm(formData),
      },
    },
  },
};