{"version":3,"sources":["webpack://gatsby-starter-hello-world/./src/newcar/core/store/simulationManagerStore.ts"],"names":["calcVehiclePrice","grade","term","SUPPORT_FEE","StoreUtil","NEWCAR_CONST","leasingFee132","supportFee132","onlineDiscountFee132","leasingFee120","supportFee120","onlineDiscountFee120","leasingFee108","supportFee108","onlineDiscountFee108","leasingFee96","supportFee96","onlineDiscountFee96","leasingFee84","supportFee84","onlineDiscountFee84","leasingFee72","supportFee72","onlineDiscountFee72","leasingFee60","supportFee60","onlineDiscountFee60","leasingFee48","supportFee48","onlineDiscountFee48","leasingFee36","supportFee36","onlineDiscountFee36","leasingFee24","supportFee24","onlineDiscountFee24","leasingFee12","supportFee12","onlineDiscountFee12","calcVehicleBasePrice","listupGradeName","allGrades","nowCar","grades","engine","filter","kudou","mission","getMissionType","nameList","targetGrade","targetName","name","undefined","indexOf","push","result","nameGrade","sort","a","b","is2WDA","is2WDB","capacityA","capacity","capacityB","isMTA","isMTB","hasSafetySystemA","removedSafetySystem","hasSafetySystemB","compareGradeNameInner","calcPrice","add","price","powerSlideDoor","keylessEntry","smartKey","cruiseControl","automaticBrake","pedalSupport","laneDepartureAlert","defaultGrade","bodyColorList","selectedGradeBodyColorList","getDefaultGrade","list","length","createNewCarCollection","id","type","nowMaintenanceType","isAvailableWantCar","newCar","CustomerSelection","masterNumber","searchCarStore","hasGas","find","hasHybrid","hasTurbo","has2WD","hasAT","gradeId","gradeName","orderName","bodyColorId","carNavi","etc","backCamera","floorMat","doorVisor","wantNo","wantCar","options","targetOption","nowOptions","option","optionInfoId","optionType","maintenancePlan","carnaviList","optionList","isStandard","etcList","backCameraList","doorViserlist","dontHaveDoorVisor","floorMatList","watNoList","nowGrades","nowGrade","i","targetOoptions","nowFees","optionFee","optionFeeId","notId","targetIsChecked","notid","thumbnailFileName","description","isChecked","checkedTerm","checkedBodyColorId","bodyColors","targetBodyColor","nowColors","bodyColor","bodyColorInfoId","leasingFee","supportFee","bodyColorName","colorCode1","colorCode2","calcRgb","comparePop","colorcode","c","split","substring","parseInt","nowSelection","selection","optionStr","substr","selectedOptionStr","replace","selectedBodyColor","color","maintenance","isNotApplicable","nowSelectPrice","isExcluteDiscount","g","sumPrice","targetBodyColorId","checkOptions","targetCheckId","getFreeTransferDiffLeasingFeeTaxedPrice","targetGradeId","bodyColr","targetBodyColorInfo","includes","simulationManagerStore","store","setIsShowSimulateAlert","isShow","this","isShowSimulateAlert","saveEntryBreakdown","plan","defaultCarNavi","memo","hasDoorVisor","defaultTerm","simplePlanSelect","recommendPlanSelect","richPlanSelect","referrerType","carCondition","carSelectStatus","planDetails","entryBreakdownManagerStore","field","payload","carNaviFee","item","carNaviOptionInfo","bodyColorInfo","bodyColorFee","car","id__normalized","toString","lastEntryId","carNaviOption","etcOption","etcFee","etcOptionInfo","defaultOption","optionInfo","info","backCameraOption","backCameraFee","backCameraOptionInfo","floorMatOption","floorMatFee","floorMatOptionInfo","wantNoOption","wantNoFee","wantNoOptionInfo","doorVisorOption","doorVisorFee","doorVisorOptionInfo","termId","WantCarBreakdown","isNaN","Number","NEWCAR_DEFINE","changeId","setId","hasOld","userSelect","resultCarDigest","digest","maintenanceType","resultCar","vehicleGrades","recommendSPPlanSelect","hasWantCar","startSimulation","setStart","changeTerm","setTerm","isResetMaintenance","Log","incrementTerm","incrementTermData","decrementTerm","decrementTermData","setGrade","newNowCar","setEngine","kudouList","map","setKudou","missionTypeList","setMission","newGrade","changeBodyColor","setBodyColor","isResetBodyColor","changeSimpleBodyColor","setSimpleBodyColor","changeRecommendBodyColor","setRecommendBodyColor","changeRichBodyColor","setRichBodyColor","changeCarNavi","optionId","setCarNavi","isResetOption","setCarNaviByGradeId","changeSimpleCarNavi","setSimpleCarNavi","changeRecommendCarNavi","setRecommendCarNavi","changeRichCarNavi","setRichCarNavi","changeETC","setETC","changeSimpleETC","setSimpleETC","changeRecommendETC","setRecommendETC","changeRichETC","setRichETC","changeBackCamera","setBackCamera","changeSimpleBackCamera","setSimpleBackCamera","changeRecommendBackCamera","setRecommendBackCamera","changeRichBackCamera","setRichBackCamera","changeFloorMat","setFloorMat","changeSimpleFloorMat","setSimpleFloorMat","changeRecommendFloorMat","setRecommendFloorMat","changeRichFloorMat","setRichFloorMat","changeDoorVisor","setDoorVisor","changeSimpleDoorVisor","setSimpleDoorVisor","changeRecommendDoorVisor","setRecommendDoorVisor","changeRichDoorVisor","setRichDoorVisor","changeWantNo","setWantNo","changeSimpleWantNo","setSimpleWantNo","changeRecommendWantNo","setRecommendWantNo","changeRichWantNo","setRichWantNo","changeWantCar","setWantCar","changeSimpleWantCar","setSimpleWantCar","changeRecommendWantCar","setRecommendWantCar","changeRichWantCar","setRichWantCar","changeMaintenance","setMaintenance","clearSelection","clearSelectionData","clearCar","changeUserSelect","newSelection","setUserSelect","nowUserSelect","changeGrade","setGrades","changeUserSelectFromParam","data","params","t","e","b2","f","d","d2","w","w2","m","m2","nowCarToUndefined","createCampaignBreakdownFromQuery","query","KINTONE_MAX_LENGTH","from","condition","carSelect","carselect","plandetails","cta","isQuickDelivery","optionTypes","カーナビ","バックカメラ","ETC","フロアマット","希望ナンバー","ドアバイザー","carId","carid","carGrades","miraesGrade","vehicleGrade","carGrade","Error","fee","subList","sub","join","sumPrice11","term11SelectPrice","sumPrice10","term10SelectPrice","sumPrice9","term9SelectPrice","sumPrice8","term8SelectPrice","sumPrice7","term7SelectPrice","sumPrice6","term6SelectPrice","sumPrice5","term5SelectPrice","sumPrice4","term4SelectPrice","sumPrice3","term3SelectPrice","sumPrice2","term2SelectPrice","sumPrice1","term1SelectPrice","isSelected","label","value","disabled","target","nowSelectTerm","plans","count","observable","action","computed"],"mappings":"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M,4HAWAA,M,0IAWAA,M,wIAWAA,M,yHAUAA,M,0HAcAA,M,wIAcAA,M,sIAcAA,M,uHAaAA,M,wHAWAA,M,sIAWAA,M,oIAWAA,M,oHAUAA,M,oHAWAA,M,kIAWAA,M,gIAWAA,M,oHAUAA,M,wHAMAA,M,sIAOAA,M,oIAOAA,M,6HAMAA,M,gIA+BAA,M,qHAQAA,M,yGAUAA,M,qHAOAA,M,iHAgCAD,M,kGAWAA,M,yGAsCAA,M,4GAMAA,M,uGAeAA,M,sGAMAA,M,yGAsBAA,M,mHAKAA,M,mHA2BAA,M,mHAMAA,M,8GA4BAA,M,sGAsBAA,M,sGA4BAA,M,uGAaAA,M,8GAaAA,M,gHAMAA,M,sHAUAA,M,4HAMAA,M,+HASAA,M,kIAMAA,M,6HASAA,M,wHAMAA,M,kHAUAA,M,4GAMAA,M,kHASAA,M,2HAgBAA,M,wHAMAA,M,2HAUAA,M,8HAMAA,M,yHAUAA,M,oHAMAA,M,4GAUAA,M,oGAMAA,M,0GAWAA,M,gHAMAA,M,mHAUAA,M,sHAMAA,M,iHAUAA,M,4GAMAA,M,+GAUAA,M,kHAMAA,M,wHAWAA,M,8HAMAA,M,iIAUAA,M,oIAMAA,M,+HAUAA,M,0HAMAA,M,oHAUAA,M,8GAMAA,M,oHAWAA,M,0HAMAA,M,6HAUAA,M,gIAMAA,M,2HAUAA,M,sHAMAA,M,mHAUAA,M,gHAMAA,M,sHAWAA,M,4HAMAA,M,+HAUAA,M,kIAMAA,M,6HAUAA,M,wHAMAA,M,iHAUAA,M,0GAMAA,M,gHAWAA,M,sHAMAA,M,yHAUAA,M,4HAMAA,M,uHAUAA,M,kHAMAA,M,+GAUAA,M,4GAMAA,M,kHAWAA,M,wHAMAA,M,2HAUAA,M,8HAMAA,M,yHAUAA,M,oHAMAA,M,oHAUAA,M,oHAMAA,M,iHAWAA,M,qHAMAA,M,uHAiCAA,M,kHAMAA,M,iHA6BAC,M,6GAMAA,M,yGA0BAD,M,yGAMAA,M,uHAeAA,M,+HAiHAA,M,sIAMAA,M","file":"26c2dc02-754a6ce894ef512a8383.js","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable prefer-destructuring */\n/* eslint-disable no-continue */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n/* eslint-disable no-loop-func */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable max-len */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable no-bitwise */\n/* eslint-disable eqeqeq */\nimport { store } from '@/common/core/store/decorator';\nimport { observable, action, computed } from 'mobx';\nimport NEWCAR_CONST from '@/newcar/util/const';\nimport CarDigest from '@/common/core/model/carDigest';\nimport VehicleGrade from '@/common/core/model/catalog/vehicleGrade';\nimport OptionFee from '@/common/core/model/catalog/optionFee';\nimport OptionInfo from '@/common/core/model/catalog/optionInfo';\nimport BodyColor from '@/common/core/model/catalog/bodyColor';\nimport BodyColorInfo from '@/common/core/model/catalog/bodyColorInfo';\nimport Option from '@/common/core/model/catalog/option';\nimport NEWCAR_DEFINE from '@/newcar/util/define';\nimport { WantCarBreakdown } from '@/newcar/core/store//dataset/entryBreakdown';\nimport { searchCarStore } from '@/newcar/core/store/searchCarStore';\nimport { entryBreakdownManagerStore } from '@/newcar/core/store/entryBreakdownManagerStore';\nimport StoreUtil from '@/common/util/util';\nimport CustomerSelection from '@/newcar/core/store/dataset/customerSelection';\nimport { SelectBodyColor, SelectOption } from '@/newcar/core/store/dataset/simulationResult';\nimport Log from '@/common/util/log';\nimport { IMaintenancePlan } from '@/newcar/core/store/dataset/maintenance';\n\nexport interface IGradeNameList {\n name: string;\n price: number;\n powerSlideDoor: NEWCAR_CONST.POWER_SLIDE_DOOR.ID;\n keylessEntry: NEWCAR_CONST.COMMON_OPTIONS.ID;\n smartKey: NEWCAR_CONST.COMMON_OPTIONS.ID;\n cruiseControl: NEWCAR_CONST.COMMON_OPTIONS.ID;\n automaticBrake: NEWCAR_CONST.COMMON_OPTIONS.ID;\n pedalSupport: NEWCAR_CONST.COMMON_OPTIONS.ID;\n laneDepartureAlert: NEWCAR_CONST.COMMON_OPTIONS.ID;\n defaultGrade: VehicleGrade;\n bodyColorList?: Array;\n}\n\n// 指定グレードの車両本体価格(税込) // todo storeUtilに引っ越し\nfunction calcVehiclePrice(grade: VehicleGrade, term: NEWCAR_CONST.TERM.ID): number {\n const SUPPORT_FEE = StoreUtil.calcTAX(100);\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11) { return StoreUtil.calcTAX(grade.leasingFee132) + StoreUtil.calcTAX(grade.supportFee132) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee132); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_10) { return StoreUtil.calcTAX(grade.leasingFee120) + StoreUtil.calcTAX(grade.supportFee120) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee120); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_9) { return StoreUtil.calcTAX(grade.leasingFee108) + StoreUtil.calcTAX(grade.supportFee108) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee108); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_8) { return StoreUtil.calcTAX(grade.leasingFee96) + StoreUtil.calcTAX(grade.supportFee96) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee96); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_7) { return StoreUtil.calcTAX(grade.leasingFee84) + StoreUtil.calcTAX(grade.supportFee84) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee84); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_6) { return StoreUtil.calcTAX(grade.leasingFee72) + StoreUtil.calcTAX(grade.supportFee72) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee72); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_5) { return StoreUtil.calcTAX(grade.leasingFee60) + StoreUtil.calcTAX(grade.supportFee60) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee60); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_4) { return StoreUtil.calcTAX(grade.leasingFee48) + StoreUtil.calcTAX(grade.supportFee48) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee48); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_3) { return StoreUtil.calcTAX(grade.leasingFee36) + StoreUtil.calcTAX(grade.supportFee36) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee36); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_2) { return StoreUtil.calcTAX(grade.leasingFee24) + StoreUtil.calcTAX(grade.supportFee24) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee24); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_1) { return StoreUtil.calcTAX(grade.leasingFee12) + StoreUtil.calcTAX(grade.supportFee12) + SUPPORT_FEE + StoreUtil.calcTAX(grade.onlineDiscountFee12); }\n return 0;\n}\n\n// 指定グレードの車両本体価格(税込)、ネット割なし\nfunction calcVehicleBasePrice(grade: VehicleGrade, term: NEWCAR_CONST.TERM.ID): number {\n const SUPPORT_FEE = StoreUtil.calcTAX(100);\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11) { return StoreUtil.calcTAX(grade.leasingFee132) + StoreUtil.calcTAX(grade.supportFee132) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_10) { return StoreUtil.calcTAX(grade.leasingFee120) + StoreUtil.calcTAX(grade.supportFee120) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_9) { return StoreUtil.calcTAX(grade.leasingFee108) + StoreUtil.calcTAX(grade.supportFee108) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_8) { return StoreUtil.calcTAX(grade.leasingFee96) + StoreUtil.calcTAX(grade.supportFee96) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_7) { return StoreUtil.calcTAX(grade.leasingFee84) + StoreUtil.calcTAX(grade.supportFee84) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_6) { return StoreUtil.calcTAX(grade.leasingFee72) + StoreUtil.calcTAX(grade.supportFee72) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_5) { return StoreUtil.calcTAX(grade.leasingFee60) + StoreUtil.calcTAX(grade.supportFee60) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_4) { return StoreUtil.calcTAX(grade.leasingFee48) + StoreUtil.calcTAX(grade.supportFee48) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_3) { return StoreUtil.calcTAX(grade.leasingFee36) + StoreUtil.calcTAX(grade.supportFee36) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_2) { return StoreUtil.calcTAX(grade.leasingFee24) + StoreUtil.calcTAX(grade.supportFee24) + SUPPORT_FEE; }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_1) { return StoreUtil.calcTAX(grade.leasingFee12) + StoreUtil.calcTAX(grade.supportFee12) + SUPPORT_FEE; }\n return 0;\n}\n\nfunction listupGradeName(allGrades: VehicleGrade[], nowCar?: CustomerSelection): IGradeNameList[] {\n let grades = allGrades;\n\n // エンジンで絞り込み\n if (nowCar?.engine) {\n grades = grades.filter((grade) => (grade.engine || 'ガソリン') === NEWCAR_CONST.ENGINE.NAME[nowCar.engine!]);\n }\n\n // 駆動で絞り込み\n if (nowCar?.kudou) {\n grades = grades.filter((grade) => grade.kudou === NEWCAR_CONST.KUDOU.NAME[nowCar.kudou!]);\n }\n\n // ミッションで絞り込み\n if (nowCar?.mission) {\n grades = grades.filter((grade) => getMissionType(grade.mission) === nowCar.mission);\n }\n\n // 名称だけで重複除去\n const nameList: string[] = [];\n for (const targetGrade of grades) {\n let targetName = targetGrade.name;\n // アルトワークスのようにグレードが無い車種対策\n if (targetName === undefined) {\n targetName = '';\n targetGrade.name = '';\n }\n if (nameList.indexOf(targetName) < 0) {\n nameList.push(targetName);\n }\n }\n\n // 名前でのデフォルトの値段と各オプション状況を算出\n const result: IGradeNameList[] = [];\n for (const targetName of nameList) {\n // 同一名称で抽出\n const nameGrade: VehicleGrade[] = grades.filter((grade) => grade.name == targetName);\n // デフォルトを決めるために並び替え\n nameGrade.sort((a: VehicleGrade, b: VehicleGrade) => compareGradeNameInner(a, b));\n // 並び替え後の先頭1件がデフォルトのグレード\n const calcPrice = calcVehiclePrice(nameGrade[0], nowCar?.term || NEWCAR_CONST.TERM.ID.YEAR_11);\n const add: IGradeNameList = {\n name: targetName,\n price: calcPrice,\n powerSlideDoor: NEWCAR_CONST.POWER_SLIDE_DOOR.NAME_TO_ID(nameGrade[0].powerSlideDoor),\n keylessEntry: NEWCAR_CONST.COMMON_OPTIONS.NAME_TO_ID(nameGrade[0].keylessEntry),\n smartKey: NEWCAR_CONST.COMMON_OPTIONS.NAME_TO_ID(nameGrade[0].smartKey),\n cruiseControl: NEWCAR_CONST.COMMON_OPTIONS.NAME_TO_ID(nameGrade[0].cruiseControl),\n automaticBrake: NEWCAR_CONST.COMMON_OPTIONS.NAME_TO_ID(nameGrade[0].automaticBrake),\n pedalSupport: NEWCAR_CONST.COMMON_OPTIONS.NAME_TO_ID(nameGrade[0].pedalSupport),\n laneDepartureAlert: NEWCAR_CONST.COMMON_OPTIONS.NAME_TO_ID(nameGrade[0].laneDepartureAlert),\n defaultGrade: nameGrade[0],\n bodyColorList: selectedGradeBodyColorList(nameGrade[0], nowCar?.term || NEWCAR_CONST.TERM.ID.YEAR_11),\n };\n result.push(add);\n }\n\n // 価格の安い順に並び替え\n result.sort((a: IGradeNameList, b: IGradeNameList) => (a.price > b.price ? 1 : -1));\n return result;\n}\n\nfunction getDefaultGrade(allGrades: VehicleGrade[], nowCar?: CustomerSelection): VehicleGrade | null {\n const list = listupGradeName(allGrades, nowCar);\n if (list.length === 1) {\n return list[0].defaultGrade;\n } if (list.length > 1) {\n return list[1].defaultGrade;\n }\n return null;\n}\n\nfunction getRichGrade(allGrades: VehicleGrade[], nowCar?: CustomerSelection): VehicleGrade | null {\n const list = listupGradeName(allGrades, nowCar);\n if (list.length === 1) {\n return list[0].defaultGrade;\n } if (list.length > 1) {\n return list[list.length - 2].defaultGrade;\n }\n return null;\n}\n\n// 同一名称内でデフォルトを決めるための並び替え\nfunction compareGradeNameInner(a: VehicleGrade, b: VehicleGrade): number {\n // 駆動 2WD > 4WD\n const is2WDA = (a.kudou && a.kudou === NEWCAR_CONST.KUDOU.NAME[NEWCAR_CONST.KUDOU.ID.IS_2WD]);\n const is2WDB = (b.kudou && b.kudou === NEWCAR_CONST.KUDOU.NAME[NEWCAR_CONST.KUDOU.ID.IS_2WD]);\n if (is2WDA != is2WDB) {\n // どちらかだけが2WDの場合、そちらを優先\n return (is2WDA ? -1 : 1);\n }\n // 定員 多い > 少ない\n const capacityA = (a.capacity) ? a.capacity : 0;\n const capacityB = (b.capacity) ? b.capacity : 0;\n if (a.capacity != b.capacity) {\n // 定員に差がある場合、定員が多いほうを優先\n return (capacityA > capacityB ? -1 : 1);\n }\n // ミッション オートマ系 > マニュアル系\n const isMTA = (a.mission && (a.mission === NEWCAR_CONST.MISSION.NAME[NEWCAR_CONST.MISSION.ID.IS_5FMT]\n || a.mission === NEWCAR_CONST.MISSION.NAME[NEWCAR_CONST.MISSION.ID.IS_6FMT]));\n const isMTB = (b.mission && (b.mission === NEWCAR_CONST.MISSION.NAME[NEWCAR_CONST.MISSION.ID.IS_5FMT]\n || b.mission === NEWCAR_CONST.MISSION.NAME[NEWCAR_CONST.MISSION.ID.IS_6FMT]));\n if (isMTA != isMTB) {\n // どちらかだけがMT車の場合、オートマ優先\n return (isMTA ? 1 : -1);\n }\n // 先進安全 通常装備 > 除去\n const hasSafetySystemA = (a.removedSafetySystem === undefined);\n const hasSafetySystemB = (b.removedSafetySystem === undefined);\n if (hasSafetySystemA != hasSafetySystemB) {\n // どちらかだけが先進安全装置除去の場合、除去していないほうを優先\n return (hasSafetySystemA ? -1 : 1);\n }\n\n return 0;\n}\n\n// 料金シミュレーションの初期値を作成する\nfunction createNewCarCollection(id: string, type: NEWCAR_CONST.SIMULATION_PLAN.ID, grades: VehicleGrade[], nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE, isAvailableWantCar?: boolean, targetGrade?: VehicleGrade): CustomerSelection {\n const newCar: CustomerSelection = new CustomerSelection();\n\n newCar.id = id;\n newCar.masterNumber = searchCarStore.masterNumber;\n\n // 期間\n newCar.term = NEWCAR_CONST.TERM.ID.YEAR_11;\n\n // エンジン種別の保持状況\n const hasGas = (grades.find((grade) => (grade.engine == undefined)));\n const hasHybrid = (grades.find((grade) => (grade.engine === NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_HYBRID])));\n const hasTurbo = (grades.find((grade) => (grade.engine === NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_TURBO])));\n\n // グレード\n let defaultGrade: VehicleGrade | null = null;\n if (type == NEWCAR_CONST.SIMULATION_PLAN.ID.RICH) {\n // よくばりプランのグレード選定\n // ハイブリット>ターボ>ガソリンの優先度で絞り、上から2番目のグレード\n\n if (hasHybrid != undefined) {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_HYBRID;\n } else if (hasTurbo != undefined) {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_TURBO;\n } else if (hasGas != undefined) {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_GAS;\n } else {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_GAS;\n }\n\n defaultGrade = getRichGrade(grades, newCar);\n } else {\n // シンプル・おすすめ・オリジナルプラン、通常の料金シミュレーションのグレード選定\n // 2WD>4WDの優先度で絞り、AT>MTの優先度で絞り、下から2番目のグレード\n\n // 駆動\n const has2WD = grades.find((grade) => grade.kudou === '2WD');\n newCar.kudou = has2WD ? NEWCAR_CONST.KUDOU.ID.IS_2WD : NEWCAR_CONST.KUDOU.ID.IS_4WD;\n\n // ミッション\n const hasAT = grades.find((grade) => getMissionType(grade.mission) === 'AT');\n newCar.mission = hasAT ? 'AT' : 'MT';\n\n if (type == NEWCAR_CONST.SIMULATION_PLAN.ID.ORIGINAL) {\n // オリジナルプランのシミュレーション用初期値\n\n // ガソリン>ハイブリット>ターボ\n if (hasGas != undefined) {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_GAS;\n } else if (hasHybrid != undefined) {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_HYBRID;\n } else if (hasTurbo != undefined) {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_TURBO;\n } else {\n newCar.engine = NEWCAR_CONST.ENGINE.ID.IS_GAS;\n }\n\n // エンジンタイプで絞ってグレードが無い場合、駆動形式を変更\n if (!getDefaultGrade(grades, newCar)) {\n const has4WD = grades.find((grade) => grade.kudou === '4WD');\n if (has4WD) {\n newCar.kudou = NEWCAR_CONST.KUDOU.ID.IS_4WD;\n }\n }\n // エンジンタイプ・駆動形式で絞ってグレードが無い場合、ミッションを変更\n if (!getDefaultGrade(grades, newCar)) {\n const hasMT = grades.find((grade) => getMissionType(grade.mission) === 'MT');\n if (hasMT) {\n newCar.mission = 'MT';\n }\n }\n }\n\n defaultGrade = getDefaultGrade(grades, newCar);\n }\n if (targetGrade) {\n defaultGrade = targetGrade;\n }\n newCar.gradeId = defaultGrade?.id;\n newCar.gradeName = defaultGrade?.name;\n newCar.orderName = defaultGrade?.orderName;\n\n // ボディカラー、シート地の初期値なし\n newCar.bodyColorId = undefined;\n\n if (type == NEWCAR_CONST.SIMULATION_PLAN.ID.SIMPLE) {\n // シンプルプランはオプション全てなし\n newCar.carNavi = '100001';\n newCar.etc = '100003';\n newCar.backCamera = '100002';\n newCar.floorMat = '100004';\n newCar.doorVisor = '100006';\n newCar.wantNo = '100005';\n newCar.wantCar = 'yes';\n } else if (type == NEWCAR_CONST.SIMULATION_PLAN.ID.RICH) {\n // よくばりプランはすべてのオプションがつく\n if (defaultGrade?.options && searchCarStore.allOptionInfoList) {\n for (const targetOption of defaultGrade.options) {\n const nowOptions = (searchCarStore.allOptionInfoList.find((option) => (option.id == targetOption.optionInfoId)));\n\n if (nowOptions && nowOptions.optionType === 'カーナビ') {\n newCar.carNavi = targetOption.id;\n continue;\n }\n if (nowOptions && nowOptions.optionType === 'ETC') {\n newCar.etc = targetOption.id;\n continue;\n }\n if (nowOptions && nowOptions.optionType === 'バックカメラ') {\n newCar.backCamera = targetOption.id;\n continue;\n }\n if (nowOptions && nowOptions.optionType === 'フロアマット') {\n newCar.floorMat = targetOption.id;\n continue;\n }\n if (nowOptions && nowOptions.optionType === 'ドアバイザー') {\n newCar.doorVisor = targetOption.id;\n continue;\n }\n if (nowOptions && nowOptions.optionType === '希望ナンバー') {\n newCar.wantNo = targetOption.id;\n continue;\n }\n }\n }\n if (isAvailableWantCar) {\n newCar.wantCar = 'yes';\n }\n } else {\n // おすすめ・オリジナルプラン・通常の料金シミュレーションはカーナビがデフォルトでつく、他はつかない\n if (defaultGrade && defaultGrade.options && searchCarStore.allOptionInfoList) {\n for (const targetOption of defaultGrade.options) {\n const nowOptions = (searchCarStore.allOptionInfoList.find((option) => (option.id == targetOption.optionInfoId)));\n if (nowOptions && nowOptions.optionType === 'カーナビ') {\n newCar.carNavi = targetOption.id;\n break;\n }\n }\n }\n newCar.etc = '100003';\n newCar.backCamera = '100002';\n newCar.floorMat = '100004';\n newCar.doorVisor = '100006';\n newCar.wantNo = '100005';\n newCar.wantCar = 'yes';\n }\n\n // メンテナンスプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR || nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD) {\n if (type == NEWCAR_CONST.SIMULATION_PLAN.ID.SIMPLE || type == NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND_SP) {\n newCar.maintenancePlan = NEWCAR_CONST.MAINTENANCE.PLAN.NONE;\n } else if (type == NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND || type == NEWCAR_CONST.SIMULATION_PLAN.ID.RICH) {\n newCar.maintenancePlan = NEWCAR_CONST.MAINTENANCE.PLAN.GOLD;\n } else {\n newCar.maintenancePlan = NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED;\n }\n }\n\n // 標準装備がないか確認する\n const carnaviList = optionList(newCar.term, 'カーナビ', newCar, grades);\n if (newCar && carnaviList.length === 1 && carnaviList[0].isStandard === true) {\n newCar.carNavi = carnaviList[0].id;\n }\n const etcList = optionList(newCar.term, 'ETC', newCar, grades);\n if (newCar && etcList.length === 1 && etcList[0].isStandard === true) {\n newCar.etc = etcList[0].id;\n }\n const backCameraList = optionList(newCar.term, 'バックカメラ', newCar, grades);\n if (newCar && backCameraList.length === 1 && backCameraList[0].isStandard === true) {\n newCar.backCamera = backCameraList[0].id;\n }\n const doorViserlist = optionList(newCar.term, 'ドアバイザー', newCar, grades);\n if (newCar) {\n newCar.dontHaveDoorVisor = (doorViserlist.length === 0);\n if (doorViserlist.length === 1 && doorViserlist[0].isStandard === true) {\n newCar.doorVisor = doorViserlist[0].id;\n }\n }\n const floorMatList = optionList(newCar.term, 'フロアマット', newCar, grades);\n if (newCar && floorMatList.length === 1 && floorMatList[0].isStandard === true) {\n newCar.floorMat = floorMatList[0].id;\n }\n const watNoList = optionList(newCar.term, '希望ナンバー', newCar, grades);\n if (newCar && watNoList.length === 1 && watNoList[0].isStandard === true) {\n newCar.wantNo = watNoList[0].id;\n }\n\n return newCar;\n}\n\nfunction optionList(term: NEWCAR_CONST.TERM.ID, optionType: string, nowCar?: CustomerSelection, nowGrades?: VehicleGrade[]) {\n const result: Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> = [];\n if (nowCar && nowGrades) {\n const nowGrade = (nowGrades.find((grade) => (grade.id == nowCar.gradeId)));\n if (nowGrade && nowGrade.options && searchCarStore.allOptionInfoList && searchCarStore.allOptionFeeList) {\n for (let i = 0; i < nowGrade.options.length; i += 1) {\n const targetOoptions: Option = nowGrade.options[i];\n if (nowGrade.options) {\n const nowOptions = (searchCarStore.allOptionInfoList.find((option) => (option.id == targetOoptions.optionInfoId)));\n if (nowOptions && nowOptions.optionType === optionType) {\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == targetOoptions.optionFeeId)));\n let notId = '';\n let targetIsChecked = false;\n if (optionType === 'カーナビ') {\n notId = '100001';\n if (nowCar.carNavi && notId != nowCar.carNavi) { targetIsChecked = true; }\n } else if (optionType === 'バックカメラ') {\n notId = '100002';\n if (nowCar.backCamera && notId != nowCar.backCamera) { targetIsChecked = true; }\n } else if (optionType === 'ETC') {\n notId = '100003';\n if (nowCar.etc && notId != nowCar.etc) { targetIsChecked = true; }\n } else if (optionType === 'フロアマット') {\n notId = '100004';\n if (nowCar.floorMat && notId != nowCar.floorMat) { targetIsChecked = true; }\n } else if (optionType === '希望ナンバー') {\n notId = '100005';\n if (nowCar.wantNo && notId != nowCar.wantNo) { targetIsChecked = true; }\n } else if (optionType === 'ドアバイザー') {\n notId = '100006';\n if (nowCar.doorVisor && notId != nowCar.doorVisor) { targetIsChecked = true; }\n }\n if (targetOoptions.id && (targetOoptions.isStandard != undefined) && targetOoptions.optionInfoId && nowOptions && nowFees) {\n let price = 0;\n // 期間に合わせて変動\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11) { price = StoreUtil.calcTAX(nowFees.leasingFee132) + StoreUtil.calcTAX(nowFees.supportFee132); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_10) { price = StoreUtil.calcTAX(nowFees.leasingFee120) + StoreUtil.calcTAX(nowFees.supportFee120); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_9) { price = StoreUtil.calcTAX(nowFees.leasingFee108) + StoreUtil.calcTAX(nowFees.supportFee108); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_8) { price = StoreUtil.calcTAX(nowFees.leasingFee96) + StoreUtil.calcTAX(nowFees.supportFee96); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_7) { price = StoreUtil.calcTAX(nowFees.leasingFee84) + StoreUtil.calcTAX(nowFees.supportFee84); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_6) { price = StoreUtil.calcTAX(nowFees.leasingFee72) + StoreUtil.calcTAX(nowFees.supportFee72); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_5) { price = StoreUtil.calcTAX(nowFees.leasingFee60) + StoreUtil.calcTAX(nowFees.supportFee60); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_4) { price = StoreUtil.calcTAX(nowFees.leasingFee48) + StoreUtil.calcTAX(nowFees.supportFee48); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_3) { price = StoreUtil.calcTAX(nowFees.leasingFee36) + StoreUtil.calcTAX(nowFees.supportFee36); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_2) { price = StoreUtil.calcTAX(nowFees.leasingFee24) + StoreUtil.calcTAX(nowFees.supportFee24); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_1) { price = StoreUtil.calcTAX(nowFees.leasingFee12) + StoreUtil.calcTAX(nowFees.supportFee12); }\n\n result.push({\n id: targetOoptions.id,\n notid: notId,\n isStandard: targetOoptions.isStandard,\n optionInfoId: targetOoptions.optionInfoId,\n thumbnailFileName: nowOptions.thumbnailFileName,\n name: nowOptions.name,\n description: nowOptions.description,\n optionType: nowOptions.optionType,\n price,\n isChecked: targetIsChecked,\n });\n }\n }\n }\n }\n }\n }\n return result;\n}\n\n// 指定したグレードのボディカラーリストを返却する\nfunction selectedGradeBodyColorList(grade: VehicleGrade | undefined,\n checkedTerm?: NEWCAR_CONST.TERM.ID,\n checkedBodyColorId?: string): Array<{\n id: string, bodyColorInfoId: string,\n bodyColorName?: string,\n colorCode1?: string,\n colorCode2?: string,\n price?: number,\n leasingFee?: number,\n supportFee?: number,\n isChecked?: boolean }> {\n const result: Array<{\n id: string, bodyColorInfoId: string,\n bodyColorName?: string,\n colorCode1?: string,\n colorCode2?: string,\n price?: number,\n leasingFee?: number,\n supportFee?: number,\n isChecked?: boolean }> = [];\n if (grade && grade.bodyColors\n && searchCarStore.allBodyColorList\n && searchCarStore.allOptionFeeList) {\n for (let i = 0; i < grade.bodyColors.length; i += 1) {\n const targetBodyColor: BodyColor = grade.bodyColors[i];\n if (grade.bodyColors) {\n const nowColors = searchCarStore.allBodyColorList.find(\n (bodyColor) => (bodyColor.id == targetBodyColor.bodyColorInfoId),\n );\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => (optionFee.id == targetBodyColor.optionFeeId),\n );\n if (targetBodyColor.id && targetBodyColor.bodyColorInfoId && nowColors && nowFees) {\n let isChecked = false;\n if (checkedBodyColorId === targetBodyColor.id) {\n isChecked = true;\n }\n // 期間に合わせて変動\n let price = 0;\n let leasingFee = 0;\n let supportFee = 0;\n const term = (checkedTerm) || NEWCAR_CONST.TERM.ID.YEAR_11;\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11) {\n price = StoreUtil.calcTAX(nowFees.leasingFee132)\n + StoreUtil.calcTAX(nowFees.supportFee132);\n leasingFee = (nowFees.leasingFee132) ? nowFees.leasingFee132 : 0;\n supportFee = (nowFees.supportFee132) ? nowFees.supportFee132 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_10) {\n price = StoreUtil.calcTAX(nowFees.leasingFee120)\n + StoreUtil.calcTAX(nowFees.supportFee120);\n leasingFee = (nowFees.leasingFee120) ? nowFees.leasingFee120 : 0;\n supportFee = (nowFees.supportFee120) ? nowFees.supportFee120 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_9) {\n price = StoreUtil.calcTAX(nowFees.leasingFee108)\n + StoreUtil.calcTAX(nowFees.supportFee108);\n leasingFee = (nowFees.leasingFee108) ? nowFees.leasingFee108 : 0;\n supportFee = (nowFees.supportFee108) ? nowFees.supportFee108 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_8) {\n price = StoreUtil.calcTAX(nowFees.leasingFee96)\n + StoreUtil.calcTAX(nowFees.supportFee96);\n leasingFee = (nowFees.leasingFee96) ? nowFees.leasingFee96 : 0;\n supportFee = (nowFees.supportFee96) ? nowFees.supportFee96 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_7) {\n price = StoreUtil.calcTAX(nowFees.leasingFee84)\n + StoreUtil.calcTAX(nowFees.supportFee84);\n leasingFee = (nowFees.leasingFee84) ? nowFees.leasingFee84 : 0;\n supportFee = (nowFees.supportFee84) ? nowFees.supportFee84 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_6) {\n price = StoreUtil.calcTAX(nowFees.leasingFee72)\n + StoreUtil.calcTAX(nowFees.supportFee72);\n leasingFee = (nowFees.leasingFee72) ? nowFees.leasingFee72 : 0;\n supportFee = (nowFees.supportFee72) ? nowFees.supportFee72 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_5) {\n price = StoreUtil.calcTAX(nowFees.leasingFee60)\n + StoreUtil.calcTAX(nowFees.supportFee60);\n leasingFee = (nowFees.leasingFee60) ? nowFees.leasingFee60 : 0;\n supportFee = (nowFees.supportFee60) ? nowFees.supportFee60 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_4) {\n price = StoreUtil.calcTAX(nowFees.leasingFee48)\n + StoreUtil.calcTAX(nowFees.supportFee48);\n leasingFee = (nowFees.leasingFee48) ? nowFees.leasingFee48 : 0;\n supportFee = (nowFees.supportFee48) ? nowFees.supportFee48 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_3) {\n price = StoreUtil.calcTAX(nowFees.leasingFee36)\n + StoreUtil.calcTAX(nowFees.supportFee36);\n leasingFee = (nowFees.leasingFee36) ? nowFees.leasingFee36 : 0;\n supportFee = (nowFees.supportFee36) ? nowFees.supportFee36 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_2) {\n price = StoreUtil.calcTAX(nowFees.leasingFee24)\n + StoreUtil.calcTAX(nowFees.supportFee24);\n leasingFee = (nowFees.leasingFee24) ? nowFees.leasingFee24 : 0;\n supportFee = (nowFees.supportFee24) ? nowFees.supportFee24 : 0;\n }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_1) {\n price = StoreUtil.calcTAX(nowFees.leasingFee12)\n + StoreUtil.calcTAX(nowFees.supportFee12);\n leasingFee = (nowFees.leasingFee12) ? nowFees.leasingFee12 : 0;\n supportFee = (nowFees.supportFee12) ? nowFees.supportFee12 : 0;\n }\n\n result.push({\n id: targetBodyColor.id,\n bodyColorInfoId: targetBodyColor.bodyColorInfoId,\n bodyColorName: nowColors.bodyColorName,\n colorCode1: nowColors.colorCode1,\n colorCode2: nowColors.colorCode2,\n price,\n leasingFee,\n supportFee,\n isChecked,\n });\n }\n }\n }\n }\n\n function comparePop(\n a: { id: string,\n bodyColorInfoId: string,\n bodyColorName?: string,\n colorCode1?: string,\n colorCode2?: string,\n price?: number,\n isChecked?: boolean },\n b: { id: string,\n bodyColorInfoId: string,\n bodyColorName?: string,\n colorCode1?: string,\n colorCode2?: string,\n price?: number,\n isChecked?: boolean },\n ): number {\n if (a.price === b.price) {\n if (a.colorCode2 && !b.colorCode2) {\n // 単一色優先\n return 1;\n } if (!a.colorCode2 && b.colorCode2) {\n return -1;\n }\n // 両方単一、ないし二色の場合、彩度で。\n return (calcRgb(a.colorCode1) < calcRgb(b.colorCode1) ? 1 : -1);\n }\n const aPrice = (a.price === undefined) ? 0 : a.price;\n const bPrice = (b.price === undefined) ? 0 : b.price;\n return (aPrice > bPrice) ? 1 : -1;\n }\n\n // 並び替え\n result.sort((\n a: {\n id: string,\n bodyColorInfoId: string,\n bodyColorName?: string,\n colorCode1?: string,\n colorCode2?: string,\n price?: number,\n isChecked?: boolean },\n b: {\n id: string,\n bodyColorInfoId: string,\n bodyColorName?: string,\n colorCode1?: string,\n colorCode2?: string,\n price?: number,\n isChecked?: boolean },\n ) => comparePop(a, b));\n\n return result;\n}\n\n// カラーコードをrgbに変換して足す\nfunction calcRgb(colorcode?: string) {\n let c = colorcode;\n if (c === undefined) { return 0; }\n // 先頭に#が含まれている場合は除外\n if (c.split('')[0] === '#') {\n c = c.substring(1);\n }\n return parseInt(c.substring(0, 2), 16)\n + parseInt(c.substring(2, 4), 16) + parseInt(c.substring(4, 6), 16);\n}\n\n// PC版料金シミュレーション用の選択情報を返却\nfunction nowSelection(selection: CustomerSelection, grades: VehicleGrade[], nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE): {gradeName?: string, orderName?:string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} {\n const result: {\n gradeName?: string,\n orderName?:string,\n option?: string,\n color?:string,\n maintenance?: string,\n price?:number,\n term?:NEWCAR_CONST.TERM.ID,\n isNotApplicable?: boolean\n } = {};\n if (selection) {\n if (selection.gradeName) {\n result.gradeName = selection.gradeName;\n }\n if (selection.orderName) {\n result.orderName = selection.orderName;\n }\n if (selection.gradeName) {\n const regex = /\\s\\|/gi;\n const optionStr = selectedOptionStr(selection);\n if (optionStr) {\n result.option = optionStr.replace(regex, '、');\n }\n }\n if (selection.bodyColorId) {\n const bodyColor = selectedBodyColor(selection, grades);\n if (bodyColor && bodyColor.bodyColorName) {\n result.color = bodyColor.bodyColorName;\n }\n }\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.NOT_APPLICABLE) {\n result.maintenance = 'この車種では利用いただけません';\n result.isNotApplicable = true;\n } else {\n result.isNotApplicable = false;\n if (!selection.maintenancePlan) {\n result.maintenance = '未選択';\n } else if (selection.maintenancePlan == NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM || selection.maintenancePlan == NEWCAR_CONST.MAINTENANCE.PLAN.GOLD || selection.maintenancePlan == NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n result.maintenance = NEWCAR_CONST.MAINTENANCE.PLAN_SHORT_NAME(selection.maintenancePlan);\n } else {\n result.maintenance = 'なし';\n }\n }\n if (selection.term) {\n result.term = selection.term;\n }\n\n result.price = nowSelectPrice(selection, grades, nowMaintenanceType);\n }\n return result;\n}\n\n// 現在の条件での金額算出\nfunction nowSelectPrice(selection: CustomerSelection, grades: VehicleGrade[], nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE, isExcluteDiscount?:boolean): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = (grades.find((g) => (g.id == gradeId)));\n if (grade) {\n // 車両本体\n let sumPrice = 0;\n const term = (nowCar && nowCar.term) ? nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const price = isExcluteDiscount ? calcVehicleBasePrice(grade, term) : calcVehiclePrice(grade, term);\n sumPrice = price;\n\n // ボディカラー\n if (nowCar.bodyColorId && grade.bodyColors && searchCarStore.allOptionFeeList) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = (grade.bodyColors.find((color) => (color.id == targetBodyColorId)));\n if (bodyColor) {\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == bodyColor.optionFeeId)));\n if (nowFees) {\n // 期間に合わせて変動\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee132) + StoreUtil.calcTAX(nowFees.supportFee132); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_10) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee120) + StoreUtil.calcTAX(nowFees.supportFee120); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_9) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee108) + StoreUtil.calcTAX(nowFees.supportFee108); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_8) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee96) + StoreUtil.calcTAX(nowFees.supportFee96); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_7) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee84) + StoreUtil.calcTAX(nowFees.supportFee84); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_6) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee72) + StoreUtil.calcTAX(nowFees.supportFee72); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_5) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee60) + StoreUtil.calcTAX(nowFees.supportFee60); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_4) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee48) + StoreUtil.calcTAX(nowFees.supportFee48); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_3) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee36) + StoreUtil.calcTAX(nowFees.supportFee36); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_2) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee24) + StoreUtil.calcTAX(nowFees.supportFee24); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_1) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee12) + StoreUtil.calcTAX(nowFees.supportFee12); }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') { checkOptions.push(nowCar.carNavi); }\n if (nowCar.backCamera && nowCar.backCamera != '100002') { checkOptions.push(nowCar.backCamera); }\n if (nowCar.etc && nowCar.etc != '100003') { checkOptions.push(nowCar.etc); }\n if (nowCar.floorMat && nowCar.floorMat != '100004') { checkOptions.push(nowCar.floorMat); }\n if (nowCar.wantNo && nowCar.wantNo != '100005') { checkOptions.push(nowCar.wantNo); }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') { checkOptions.push(nowCar.doorVisor); }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = (grade.options.find((option) => (option.id == targetCheckId)));\n // 標準は除外\n if (targetOption && targetOption.isStandard === false && searchCarStore.allOptionFeeList) {\n // 金額の特定\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == targetOption.optionFeeId)));\n if (nowFees) {\n // 期間に合わせて変動\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee132) + StoreUtil.calcTAX(nowFees.supportFee132); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_10) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee120) + StoreUtil.calcTAX(nowFees.supportFee120); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_9) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee108) + StoreUtil.calcTAX(nowFees.supportFee108); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_8) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee96) + StoreUtil.calcTAX(nowFees.supportFee96); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_7) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee84) + StoreUtil.calcTAX(nowFees.supportFee84); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_6) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee72) + StoreUtil.calcTAX(nowFees.supportFee72); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_5) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee60) + StoreUtil.calcTAX(nowFees.supportFee60); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_4) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee48) + StoreUtil.calcTAX(nowFees.supportFee48); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_3) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee36) + StoreUtil.calcTAX(nowFees.supportFee36); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_2) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee24) + StoreUtil.calcTAX(nowFees.supportFee24); }\n if (term === NEWCAR_CONST.TERM.ID.YEAR_1) { sumPrice += StoreUtil.calcTAX(nowFees.leasingFee12) + StoreUtil.calcTAX(nowFees.supportFee12); }\n }\n }\n }\n }\n // もらえるオプション\n if (nowCar.wantCar === 'yes') {\n sumPrice += getFreeTransferDiffLeasingFeeTaxedPrice(grade, term);\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11 || term === NEWCAR_CONST.TERM.ID.YEAR_10 || term === NEWCAR_CONST.TERM.ID.YEAR_9) {\n // 108-132ヶ月軽自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice += 6980; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice += 4460; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice += 3340; }\n } else if (term === NEWCAR_CONST.TERM.ID.YEAR_8 || term === NEWCAR_CONST.TERM.ID.YEAR_7 || term === NEWCAR_CONST.TERM.ID.YEAR_6) {\n // 72-96ヶ月軽自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice += 6480; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice += 4460; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice += 3340; }\n } else {\n // 12-60ヶ月軽自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice += 5980; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice += 4970; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice += 3850; }\n }\n } else if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD) {\n if (term === NEWCAR_CONST.TERM.ID.YEAR_11 || term === NEWCAR_CONST.TERM.ID.YEAR_10 || term === NEWCAR_CONST.TERM.ID.YEAR_9) {\n // 108-132ヶ月普通自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice += 7480; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice += 4770; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice += 3850; }\n } else if (term === NEWCAR_CONST.TERM.ID.YEAR_8 || term === NEWCAR_CONST.TERM.ID.YEAR_7 || term === NEWCAR_CONST.TERM.ID.YEAR_6) {\n // 72-96ヶ月普通自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice += 6980; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice += 4770; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice += 3850; }\n } else {\n // 12-60ヶ月普通自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice += 6480; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice += 5280; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice += 4360; }\n }\n }\n return sumPrice;\n }\n }\n return undefined;\n}\n\n// 11年での金額算出\nfunction term11SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice11 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_11;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice11 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice11\n += StoreUtil.calcTAX(nowFees.leasingFee132)\n + StoreUtil.calcTAX(nowFees.supportFee132);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n // 期間に合わせて変動\n if (term) {\n sumPrice11\n += StoreUtil.calcTAX(nowFees.leasingFee132)\n + StoreUtil.calcTAX(nowFees.supportFee132);\n }\n }\n }\n }\n }\n // もらえるオプション\n if (nowCar.wantCar === 'yes') {\n sumPrice11 += getFreeTransferDiffLeasingFeeTaxedPrice(grade, term);\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n // 108-132ヶ月軽自動車の場合\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice11 += 6980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice11 += 4460;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice11 += 3340;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n // 108-132ヶ月普通自動車の場合\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice11 += 7480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice11 += 4770;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice11 += 3850;\n }\n }\n }\n return sumPrice11;\n }\n }\n return undefined;\n}\n\n// 10年での金額算出\nfunction term10SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice10 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_10;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice10 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice10\n += StoreUtil.calcTAX(nowFees.leasingFee120)\n + StoreUtil.calcTAX(nowFees.supportFee120);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n // 期間に合わせて変動\n if (term) {\n sumPrice10\n += StoreUtil.calcTAX(nowFees.leasingFee120)\n + StoreUtil.calcTAX(nowFees.supportFee120);\n }\n }\n }\n }\n }\n // もらえるオプション\n if (nowCar.wantCar === 'yes') {\n sumPrice10 += getFreeTransferDiffLeasingFeeTaxedPrice(grade, term);\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n // 108-132ヶ月軽自動車の場合\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice10 += 6980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice10 += 4460;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice10 += 3340;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n // 108-132ヶ月普通自動車の場合\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice10 += 7480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice10 += 4770;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice10 += 3850;\n }\n }\n }\n return sumPrice10;\n }\n }\n return undefined;\n}\n\n// 9年での金額算出\nfunction term9SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice9 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_9;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice9 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice9\n += StoreUtil.calcTAX(nowFees.leasingFee108)\n + StoreUtil.calcTAX(nowFees.supportFee108);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n // 期間に合わせて変動\n if (term) {\n sumPrice9\n += StoreUtil.calcTAX(nowFees.leasingFee108)\n + StoreUtil.calcTAX(nowFees.supportFee108);\n }\n }\n }\n }\n }\n // もらえるオプション\n if (nowCar.wantCar === 'yes') {\n sumPrice9 += getFreeTransferDiffLeasingFeeTaxedPrice(grade, term);\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n // 108-132ヶ月軽自動車の場合\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice9 += 6980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice9 += 4460;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice9 += 3340;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n // 108-132ヶ月普通自動車の場合\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice9 += 7480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice9 += 4770;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice9 += 3850;\n }\n }\n }\n return sumPrice9;\n }\n }\n return undefined;\n}\n\n// 8年の条件での金額算出\nfunction term8SelectPrice(selection: CustomerSelection, grades: VehicleGrade[], nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE, isExcluteDiscount?:boolean): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = (grades.find((g) => (g.id == gradeId)));\n if (grade) {\n // 車両本体\n let sumPrice8 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_8;\n const price = isExcluteDiscount ? calcVehicleBasePrice(grade, term) : calcVehiclePrice(grade, term);\n sumPrice8 = price;\n\n // ボディカラー\n if (nowCar.bodyColorId && grade.bodyColors && searchCarStore.allOptionFeeList) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = (grade.bodyColors.find((color) => (color.id == targetBodyColorId)));\n if (bodyColor) {\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == bodyColor.optionFeeId)));\n if (nowFees) {\n if (term) { sumPrice8 += StoreUtil.calcTAX(nowFees.leasingFee96) + StoreUtil.calcTAX(nowFees.supportFee96); }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') { checkOptions.push(nowCar.carNavi); }\n if (nowCar.backCamera && nowCar.backCamera != '100002') { checkOptions.push(nowCar.backCamera); }\n if (nowCar.etc && nowCar.etc != '100003') { checkOptions.push(nowCar.etc); }\n if (nowCar.floorMat && nowCar.floorMat != '100004') { checkOptions.push(nowCar.floorMat); }\n if (nowCar.wantNo && nowCar.wantNo != '100005') { checkOptions.push(nowCar.wantNo); }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') { checkOptions.push(nowCar.doorVisor); }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = (grade.options.find((option) => (option.id == targetCheckId)));\n // 標準は除外\n if (targetOption && targetOption.isStandard === false && searchCarStore.allOptionFeeList) {\n // 金額の特定\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == targetOption.optionFeeId)));\n if (nowFees) {\n if (term) { sumPrice8 += StoreUtil.calcTAX(nowFees.leasingFee96) + StoreUtil.calcTAX(nowFees.supportFee96); }\n }\n }\n }\n }\n // もらえるオプション\n if (nowCar.wantCar === 'yes') {\n sumPrice8 += getFreeTransferDiffLeasingFeeTaxedPrice(grade, term);\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n // 72-96ヶ月軽自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice8 += 6480; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice8 += 4460; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice8 += 3340; }\n }\n } else if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD) {\n if (term) {\n // 72-96ヶ月普通自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice8 += 6980; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice8 += 4770; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice8 += 3850; }\n }\n }\n return sumPrice8;\n }\n }\n return undefined;\n}\n\n// 7年の条件での金額算出\nfunction term7SelectPrice(selection: CustomerSelection, grades: VehicleGrade[], nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE, isExcluteDiscount?:boolean): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = (grades.find((g) => (g.id == gradeId)));\n if (grade) {\n // 車両本体\n let sumPrice7 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_7;\n const price = isExcluteDiscount ? calcVehicleBasePrice(grade, term) : calcVehiclePrice(grade, term);\n sumPrice7 = price;\n\n // ボディカラー\n if (nowCar.bodyColorId && grade.bodyColors && searchCarStore.allOptionFeeList) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = (grade.bodyColors.find((color) => (color.id == targetBodyColorId)));\n if (bodyColor) {\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == bodyColor.optionFeeId)));\n if (nowFees) {\n if (term) { sumPrice7 += StoreUtil.calcTAX(nowFees.leasingFee84) + StoreUtil.calcTAX(nowFees.supportFee84); }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') { checkOptions.push(nowCar.carNavi); }\n if (nowCar.backCamera && nowCar.backCamera != '100002') { checkOptions.push(nowCar.backCamera); }\n if (nowCar.etc && nowCar.etc != '100003') { checkOptions.push(nowCar.etc); }\n if (nowCar.floorMat && nowCar.floorMat != '100004') { checkOptions.push(nowCar.floorMat); }\n if (nowCar.wantNo && nowCar.wantNo != '100005') { checkOptions.push(nowCar.wantNo); }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') { checkOptions.push(nowCar.doorVisor); }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = (grade.options.find((option) => (option.id == targetCheckId)));\n // 標準は除外\n if (targetOption && targetOption.isStandard === false && searchCarStore.allOptionFeeList) {\n // 金額の特定\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == targetOption.optionFeeId)));\n if (nowFees) {\n if (term) { sumPrice7 += StoreUtil.calcTAX(nowFees.leasingFee84) + StoreUtil.calcTAX(nowFees.supportFee84); }\n }\n }\n }\n }\n // もらえるオプション\n if (nowCar.wantCar === 'yes') {\n sumPrice7 += getFreeTransferDiffLeasingFeeTaxedPrice(grade, term);\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n // 72-96ヶ月軽自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice7 += 6480; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice7 += 4460; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice7 += 3340; }\n }\n } else if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD) {\n if (term) {\n // 72-96ヶ月普通自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice7 += 6980; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice7 += 4770; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice7 += 3850; }\n }\n }\n return sumPrice7;\n }\n }\n return undefined;\n}\n\n// 6年の条件での金額算出\nfunction term6SelectPrice(selection: CustomerSelection, grades: VehicleGrade[], nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE, isExcluteDiscount?:boolean): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = (grades.find((g) => (g.id == gradeId)));\n if (grade) {\n // 車両本体\n let sumPrice6 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_6;\n const price = isExcluteDiscount ? calcVehicleBasePrice(grade, term) : calcVehiclePrice(grade, term);\n sumPrice6 = price;\n\n // ボディカラー\n if (nowCar.bodyColorId && grade.bodyColors && searchCarStore.allOptionFeeList) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = (grade.bodyColors.find((color) => (color.id == targetBodyColorId)));\n if (bodyColor) {\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == bodyColor.optionFeeId)));\n if (nowFees) {\n if (term) { sumPrice6 += StoreUtil.calcTAX(nowFees.leasingFee72) + StoreUtil.calcTAX(nowFees.supportFee72); }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') { checkOptions.push(nowCar.carNavi); }\n if (nowCar.backCamera && nowCar.backCamera != '100002') { checkOptions.push(nowCar.backCamera); }\n if (nowCar.etc && nowCar.etc != '100003') { checkOptions.push(nowCar.etc); }\n if (nowCar.floorMat && nowCar.floorMat != '100004') { checkOptions.push(nowCar.floorMat); }\n if (nowCar.wantNo && nowCar.wantNo != '100005') { checkOptions.push(nowCar.wantNo); }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') { checkOptions.push(nowCar.doorVisor); }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = (grade.options.find((option) => (option.id == targetCheckId)));\n // 標準は除外\n if (targetOption && targetOption.isStandard === false && searchCarStore.allOptionFeeList) {\n // 金額の特定\n const nowFees = (searchCarStore.allOptionFeeList.find((optionFee) => (optionFee.id == targetOption.optionFeeId)));\n if (nowFees) {\n if (term) { sumPrice6 += StoreUtil.calcTAX(nowFees.leasingFee72) + StoreUtil.calcTAX(nowFees.supportFee72); }\n }\n }\n }\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n // 72-96ヶ月軽自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice6 += 6480; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice6 += 4460; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice6 += 3340; }\n }\n } else if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD) {\n if (term) {\n // 72-96ヶ月普通自動車の場合\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) { sumPrice6 += 6980; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) { sumPrice6 += 4770; }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) { sumPrice6 += 3850; }\n }\n }\n return sumPrice6;\n }\n }\n return undefined;\n}\n\n// 5年での金額算出\nfunction term5SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice5 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_5;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice5 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice5\n += StoreUtil.calcTAX(nowFees.leasingFee60) + StoreUtil.calcTAX(nowFees.supportFee60);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice5\n += StoreUtil.calcTAX(nowFees.leasingFee60) + StoreUtil.calcTAX(nowFees.supportFee60);\n }\n }\n }\n }\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice5 += 5980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice5 += 4970;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice5 += 3850;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice5 += 6480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice5 += 5280;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice5 += 4360;\n }\n }\n }\n return sumPrice5;\n }\n }\n return undefined;\n}\n\n// 4年での金額算出\nfunction term4SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice4 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_4;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice4 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice4\n += StoreUtil.calcTAX(nowFees.leasingFee48) + StoreUtil.calcTAX(nowFees.supportFee48);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice4\n += StoreUtil.calcTAX(nowFees.leasingFee48) + StoreUtil.calcTAX(nowFees.supportFee48);\n }\n }\n }\n }\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice4 += 5980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice4 += 4970;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice4 += 3850;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice4 += 6480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice4 += 5280;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice4 += 4360;\n }\n }\n }\n return sumPrice4;\n }\n }\n return undefined;\n}\n\n// 3年での金額算出\nfunction term3SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice3 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_3;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice3 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice3\n += StoreUtil.calcTAX(nowFees.leasingFee36) + StoreUtil.calcTAX(nowFees.supportFee36);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice3\n += StoreUtil.calcTAX(nowFees.leasingFee36) + StoreUtil.calcTAX(nowFees.supportFee36);\n }\n }\n }\n }\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice3 += 5980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice3 += 4970;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice3 += 3850;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice3 += 6480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice3 += 5280;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice3 += 4360;\n }\n }\n }\n return sumPrice3;\n }\n }\n return undefined;\n}\n\n// 2年での金額算出\nfunction term2SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice2 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_2;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice2 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice2\n += StoreUtil.calcTAX(nowFees.leasingFee24) + StoreUtil.calcTAX(nowFees.supportFee24);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice2\n += StoreUtil.calcTAX(nowFees.leasingFee24) + StoreUtil.calcTAX(nowFees.supportFee24);\n }\n }\n }\n }\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice2 += 5980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice2 += 4970;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice2 += 3850;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice2 += 6480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice2 += 5280;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice2 += 4360;\n }\n }\n }\n return sumPrice2;\n }\n }\n return undefined;\n}\n\n// 1年での金額算出\nfunction term1SelectPrice(\n selection: CustomerSelection,\n grades: VehicleGrade[],\n nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE,\n isExcluteDiscount?: boolean,\n): number | undefined {\n const nowCar = selection;\n if (nowCar && nowCar.gradeId) {\n // グレードの特定\n const { gradeId } = nowCar;\n const grade = grades.find((g) => g.id == gradeId);\n if (grade) {\n // 車両本体\n let sumPrice1 = 0;\n const term = NEWCAR_CONST.TERM.ID.YEAR_1;\n const price = isExcluteDiscount\n ? calcVehicleBasePrice(grade, term)\n : calcVehiclePrice(grade, term);\n sumPrice1 = price;\n\n // ボディカラー\n if (\n nowCar.bodyColorId\n && grade.bodyColors\n && searchCarStore.allOptionFeeList\n ) {\n const targetBodyColorId = nowCar.bodyColorId;\n const bodyColor = grade.bodyColors.find(\n (color) => color.id == targetBodyColorId,\n );\n if (bodyColor) {\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == bodyColor.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice1\n += StoreUtil.calcTAX(nowFees.leasingFee12) + StoreUtil.calcTAX(nowFees.supportFee12);\n }\n }\n }\n }\n\n // オプション\n const checkOptions: string[] = [];\n if (nowCar.carNavi && nowCar.carNavi != '100001') {\n checkOptions.push(nowCar.carNavi);\n }\n if (nowCar.backCamera && nowCar.backCamera != '100002') {\n checkOptions.push(nowCar.backCamera);\n }\n if (nowCar.etc && nowCar.etc != '100003') {\n checkOptions.push(nowCar.etc);\n }\n if (nowCar.floorMat && nowCar.floorMat != '100004') {\n checkOptions.push(nowCar.floorMat);\n }\n if (nowCar.wantNo && nowCar.wantNo != '100005') {\n checkOptions.push(nowCar.wantNo);\n }\n if (nowCar.doorVisor && nowCar.doorVisor != '100006') {\n checkOptions.push(nowCar.doorVisor);\n }\n for (const targetCheckId of checkOptions) {\n if (grade.options) {\n // オプションの特定\n const targetOption = grade.options.find((option) => option.id == targetCheckId);\n // 標準は除外\n if (\n targetOption\n && targetOption.isStandard === false\n && searchCarStore.allOptionFeeList\n ) {\n // 金額の特定\n const nowFees = searchCarStore.allOptionFeeList.find(\n (optionFee) => optionFee.id == targetOption.optionFeeId,\n );\n if (nowFees) {\n if (term) {\n sumPrice1\n += StoreUtil.calcTAX(nowFees.leasingFee12) + StoreUtil.calcTAX(nowFees.supportFee12);\n }\n }\n }\n }\n }\n\n // メンテプラン\n if (nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.MINICAR) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice1 += 5980;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice1 += 4970;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice1 += 3850;\n }\n }\n } else if (\n nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD\n ) {\n if (term) {\n if (\n nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM\n ) {\n sumPrice1 += 6480;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n sumPrice1 += 5280;\n }\n if (nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n sumPrice1 += 4360;\n }\n }\n }\n return sumPrice1;\n }\n }\n return undefined;\n}\n\n// 選択したオプションを文字列にする\nfunction selectedOptionStr(selection: CustomerSelection): string | undefined {\n let result: string | undefined = '';\n if (selection != undefined) {\n if (selection.carNavi != undefined && selection.carNavi != '100001') {\n result += 'カーナビ |';\n }\n if (selection.backCamera != undefined && selection.backCamera != '100002') {\n result += 'バックカメラ |';\n }\n if (selection.etc != undefined && selection.etc != '100003') {\n result += 'ETC |';\n }\n if (selection.floorMat != undefined && selection.floorMat != '100004') {\n result += 'フロアマット |';\n }\n if (selection.wantNo != undefined && selection.wantNo != '100005') {\n result += '希望ナンバー |';\n }\n if (selection.doorVisor != undefined && selection.doorVisor != '100006') {\n result += 'ドアバイザー |';\n }\n const term = (selection && selection.term) ? selection.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n if (selection.wantCar == 'yes' && (term == NEWCAR_CONST.TERM.ID.YEAR_11 || term == NEWCAR_CONST.TERM.ID.YEAR_10 || term == NEWCAR_CONST.TERM.ID.YEAR_9 || term == NEWCAR_CONST.TERM.ID.YEAR_8 || term == NEWCAR_CONST.TERM.ID.YEAR_7)) {\n result += 'もらえるオプション |';\n }\n if (result.length > 2) {\n result = result.substr(0, result.length - 2);\n }\n if (selection.carNavi === undefined && selection.backCamera === undefined && selection.etc === undefined\n && selection.floorMat === undefined && selection.wantNo === undefined && selection.doorVisor === undefined\n && selection.wantCar === undefined) {\n result = undefined;\n }\n }\n if (!result) {\n result = 'なし';\n }\n return result;\n}\n\nfunction selectedBodyColor(selection: CustomerSelection, grades: VehicleGrade[]): { bodyColorId?: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string } | undefined {\n if (selection != undefined && selection.bodyColorId != undefined && searchCarStore.allBodyColorList != undefined) {\n // グレードの特定\n const targetGradeId = selection.gradeId;\n const targetGrade = (grades.find((grade) => (grade.id == targetGradeId)));\n if (targetGrade && targetGrade.bodyColors) {\n // ボディカラーの特定\n const targetBodyColor = (targetGrade.bodyColors.find((bodyColr) => (bodyColr.id == selection.bodyColorId)));\n if (targetBodyColor) {\n // ボディカラーInfoIdの特定\n const targetBodyColorInfo = (searchCarStore.allBodyColorList.find((bodyColr) => (bodyColr.id == targetBodyColor.bodyColorInfoId)));\n if (targetBodyColorInfo) {\n return {\n bodyColorId: targetBodyColor.id,\n bodyColorName: targetBodyColorInfo.bodyColorName,\n colorCode1: targetBodyColorInfo.colorCode1,\n colorCode2: targetBodyColorInfo.colorCode2,\n };\n }\n }\n }\n }\n return undefined;\n}\n\n// もらえるオプションの金額取得\nfunction getFreeTransferDiffLeasingFeeTaxedPrice(grade: VehicleGrade | undefined, term: NEWCAR_CONST.TERM.ID | undefined): number {\n if (!grade || !term) {\n return 0;\n }\n // もらえるプランは7年以上から\n if (term < NEWCAR_CONST.TERM.ID.YEAR_7) {\n return 0;\n }\n const month = term * 12;\n return grade[`freeTransferDiffLeasingFeeTaxed${month}` as keyof VehicleGrade] as number || 0;\n}\n\n// AT/MTの判定\nfunction getMissionType(mission: string | undefined): CustomerSelection['mission'] {\n return mission && mission.includes('MT') ? 'MT' : 'AT';\n}\n\n@store()\nexport default class SimulationManagerStore {\n // 車種別のシミュレーション選択結果を格納\n @observable userSelect: CustomerSelection[] = [];\n\n @observable lastEntryId?: string = '';\n\n // 現在シミレーション中の車種\n @observable nowCar?: CustomerSelection = undefined;\n\n @observable wantCar?: string = '';\n\n // 現在選択された車種に存在するグレードの詳細\n @observable nowGrades: VehicleGrade[] = [];\n\n // 現在選択された車種で適用されるメンテプランのタイプ\n @observable nowMaintenanceType: NEWCAR_CONST.MAINTENANCE.TYPE = NEWCAR_CONST.MAINTENANCE.TYPE.NOT_APPLICABLE;\n\n // ボディカラー、シート地、オプション、メンテナスプランのリセットフラグ\n @observable isResetBodyColor = false;\n\n @observable isResetOption = false;\n\n @observable isResetMaintenance = false;\n\n // PC版料金シミュレーション用 各プラン\n @observable simplePlanSelect?: CustomerSelection = undefined;\n\n @observable recommendPlanSelect?: CustomerSelection = undefined;\n\n @observable richPlanSelect?: CustomerSelection = undefined;\n\n // SP版料金シミュレーション オススメ\n @observable recommendSPPlanSelect?: CustomerSelection = undefined;\n\n @observable isShowSimulateAlert = false;\n\n @action\n setIsShowSimulateAlert(isShow: boolean) {\n this.isShowSimulateAlert = isShow;\n }\n\n @computed\n get nowSelectId(): string {\n if (this.nowCar) {\n return this.nowCar.id;\n }\n return '';\n }\n\n @computed\n get nowSelectTerm(): NEWCAR_CONST.TERM.ID {\n Log.trace('nowSelectTerm()');\n if (this.nowCar) {\n Log.trace('this.nowCar is exists');\n if (this.nowCar.term) {\n Log.trace(`this.nowCar.term = ${this.nowCar.term}`);\n } else {\n Log.trace('this.nowCar.term is none');\n }\n } else {\n Log.trace('this.nowCar is none');\n }\n\n return (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n // return term;\n }\n\n // PC版料金シミュレーション用 シンプルプラン情報返却\n @computed\n get nowSimpleSelection(): {gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} {\n let result:{gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} = {};\n if (this.simplePlanSelect) {\n result = nowSelection(this.simplePlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプラン情報返却\n @computed\n get nowRecommendSelection(): {gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} {\n let result:{gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} = {};\n if (this.recommendPlanSelect) {\n result = nowSelection(this.recommendPlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプラン情報返却\n @computed\n get nowRichSelection(): {gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} {\n let result:{gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} = {};\n if (this.richPlanSelect) {\n result = nowSelection(this.richPlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return result;\n }\n\n // PC版料金シミュレーション用 オリジナルプラン情報返却\n @computed\n get nowOriginalSelection(): {gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} {\n let result:{gradeName?: string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} = {};\n if (this.nowCar) {\n result = nowSelection(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return result;\n }\n\n // SP版料金シミュレーション用 オススメプラン情報返却\n @computed\n get nowRecommendSPSelection(): {gradeName?: string, orderName?:string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} {\n let result:{gradeName?: string, orderName?:string, option?: string, color?:string, maintenance?: string, price?:number, term?:NEWCAR_CONST.TERM.ID, isNotApplicable?: boolean} = {};\n if (this.recommendSPPlanSelect) {\n result = nowSelection(this.recommendSPPlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return result;\n }\n\n // SP版料金シミュレーション用 オススメプラン情報返却\n @computed\n get nowRecommendPlanSP(): CustomerSelection | undefined {\n return this.recommendSPPlanSelect;\n }\n\n @computed\n get nowSelectGrade(): { name: string, sub: string } | undefined {\n if (!this.nowCar || !this.nowCar.gradeId) {\n return undefined;\n }\n\n const nowGrade = this.nowGrades.find((grade) => grade.id == this.nowCar!.gradeId);\n const subList = [];\n subList.push(nowGrade?.engine || 'ガソリン');\n if (nowGrade?.kudou) {\n subList.push(nowGrade.kudou);\n }\n if (nowGrade?.capacity) {\n subList.push(NEWCAR_CONST.CAPACITY.NAME[nowGrade.capacity]);\n }\n return {\n name: nowGrade?.name || '',\n sub: subList.join(' | '),\n };\n }\n\n @computed\n get nowSelectGradeId(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return this.nowCar.gradeId;\n }\n return undefined;\n }\n\n @computed\n get nowSelectBodyColor(): { bodyColorId?: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string } | undefined {\n const { nowCar } = this;\n if (nowCar) {\n return selectedBodyColor(nowCar, this.nowGrades);\n }\n return undefined;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中ボディカラー\n @computed\n get nowSelectSimpleBodyColor(): { bodyColorId?: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string } | undefined {\n const nowCar = this.simplePlanSelect;\n if (nowCar) {\n return selectedBodyColor(nowCar, this.nowGrades);\n }\n return undefined;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中ボディカラー\n @computed\n get nowSelectRecommendBodyColor(): { bodyColorId?: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string } | undefined {\n const nowCar = this.recommendPlanSelect;\n if (nowCar) {\n return selectedBodyColor(nowCar, this.nowGrades);\n }\n return undefined;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中ボディカラー\n @computed\n get nowSelectRichBodyColor(): { bodyColorId?: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string } | undefined {\n const nowCar = this.richPlanSelect;\n if (nowCar) {\n return selectedBodyColor(nowCar, this.nowGrades);\n }\n return undefined;\n }\n\n @computed\n get nowSelectOption(): string | undefined {\n let result: string | undefined = '';\n if (this.nowCar != undefined) {\n if (this.nowCar.carNavi != undefined && this.nowCar.carNavi != '100001') {\n result += 'カーナビ |';\n }\n if (this.nowCar.backCamera != undefined && this.nowCar.backCamera != '100002') {\n result += 'バックカメラ |';\n }\n if (this.nowCar.etc != undefined && this.nowCar.etc != '100003') {\n result += 'ETC |';\n }\n if (this.nowCar.floorMat != undefined && this.nowCar.floorMat != '100004') {\n result += 'フロアマット |';\n }\n if (this.nowCar.wantNo != undefined && this.nowCar.wantNo != '100005') {\n result += '希望ナンバー |';\n }\n if (this.nowCar.doorVisor != undefined && this.nowCar.doorVisor != '100006') {\n result += 'ドアバイザー |';\n }\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n if (this.nowCar.wantCar === 'yes' && (term == NEWCAR_CONST.TERM.ID.YEAR_11 || term == NEWCAR_CONST.TERM.ID.YEAR_10 || term == NEWCAR_CONST.TERM.ID.YEAR_9 || term == NEWCAR_CONST.TERM.ID.YEAR_8 || term == NEWCAR_CONST.TERM.ID.YEAR_7)) {\n result += 'もらえるオプション |';\n }\n if (result.length > 2) {\n result = result.substr(0, result.length - 2);\n }\n if (this.nowCar.carNavi === undefined && this.nowCar.backCamera === undefined && this.nowCar.etc === undefined\n && this.nowCar.floorMat === undefined && this.nowCar.wantNo === undefined && this.nowCar.doorVisor === undefined\n && this.nowCar.wantCar === undefined) {\n result = undefined;\n }\n }\n return result;\n }\n\n @computed\n get nowSelectCarNavi(): string {\n let result = '100001';\n if (this.nowCar != undefined && this.nowCar.carNavi != undefined) {\n result = this.nowCar.carNavi;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 カーナビ\n @computed\n get nowSelectSimpleCarNavi(): string {\n let result = '100001';\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.carNavi != undefined) {\n result = this.simplePlanSelect.carNavi;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 カーナビ\n @computed\n get nowSelectRecommendCarNavi(): string {\n let result = '100001';\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.carNavi != undefined) {\n result = this.recommendPlanSelect.carNavi;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 カーナビ\n @computed\n get nowSelectRichCarNavi(): string {\n let result = '100001';\n if (this.richPlanSelect != undefined && this.richPlanSelect.carNavi != undefined) {\n result = this.richPlanSelect.carNavi;\n }\n return result;\n }\n\n @computed\n get nowSelectEtc(): string {\n let result = '100003';\n if (this.nowCar != undefined && this.nowCar.etc != undefined) {\n result = this.nowCar.etc;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 ETC\n @computed\n get nowSelectSimpleEtc(): string {\n let result = '100003';\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.etc != undefined) {\n result = this.simplePlanSelect.etc;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 ETC\n @computed\n get nowSelectRecommendEtc(): string {\n let result = '100003';\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.etc != undefined) {\n result = this.recommendPlanSelect.etc;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 ETC\n @computed\n get nowSelectRichEtc(): string {\n let result = '100003';\n if (this.richPlanSelect != undefined && this.richPlanSelect.etc != undefined) {\n result = this.richPlanSelect.etc;\n }\n return result;\n }\n\n @computed\n get nowSelectBackCamera(): string {\n let result = '100002';\n if (this.nowCar != undefined && this.nowCar.backCamera != undefined) {\n result = this.nowCar.backCamera;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 バックカメラ\n @computed\n get nowSelectSimpleBackCamera(): string {\n let result = '100002';\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.backCamera != undefined) {\n result = this.simplePlanSelect.backCamera;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 バックカメラ\n @computed\n get nowSelectRecommendBackCamera(): string {\n let result = '100002';\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.backCamera != undefined) {\n result = this.recommendPlanSelect.backCamera;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 バックカメラ\n @computed\n get nowSelectRichBackCamera(): string {\n let result = '100002';\n if (this.richPlanSelect != undefined && this.richPlanSelect.backCamera != undefined) {\n result = this.richPlanSelect.backCamera;\n }\n return result;\n }\n\n @computed\n get nowSelectFloorMat(): string {\n let result = '100004';\n if (this.nowCar != undefined && this.nowCar.floorMat != undefined) {\n result = this.nowCar.floorMat;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 フロアマット\n @computed\n get nowSelectSimpleFloorMat(): string {\n let result = '100004';\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.floorMat != undefined) {\n result = this.simplePlanSelect.floorMat;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 フロアマット\n @computed\n get nowSelectRecommendFloorMat(): string {\n let result = '100004';\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.floorMat != undefined) {\n result = this.recommendPlanSelect.floorMat;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 フロアマット\n @computed\n get nowSelectRichFloorMat(): string {\n let result = '100004';\n if (this.richPlanSelect != undefined && this.richPlanSelect.floorMat != undefined) {\n result = this.richPlanSelect.floorMat;\n }\n return result;\n }\n\n @computed\n get nowSelectDoorVisor(): string {\n let result = '100006';\n if (this.nowCar != undefined && this.nowCar.doorVisor != undefined) {\n result = this.nowCar.doorVisor;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 ドアバイザー\n @computed\n get nowSelectSimpleDoorVisor(): string {\n let result = '100006';\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.doorVisor != undefined) {\n result = this.simplePlanSelect.doorVisor;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 ドアバイザー\n @computed\n get nowSelectRecommendDoorVisor(): string {\n let result = '100006';\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.doorVisor != undefined) {\n result = this.recommendPlanSelect.doorVisor;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 ドアバイザー\n @computed\n get nowSelectRichDoorVisor(): string {\n let result = '100006';\n if (this.richPlanSelect != undefined && this.richPlanSelect.doorVisor != undefined) {\n result = this.richPlanSelect.doorVisor;\n }\n return result;\n }\n\n @computed\n get nowSelectWantNo(): string {\n let result = '100005';\n if (this.nowCar != undefined && this.nowCar.wantNo != undefined) {\n result = this.nowCar.wantNo;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 希望ナンバー\n @computed\n get nowSelectSimpleWantNo(): string {\n let result = '100005';\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.wantNo != undefined) {\n result = this.simplePlanSelect.wantNo;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 希望ナンバー\n @computed\n get nowSelectRecommendWantNo(): string {\n let result = '100005';\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.wantNo != undefined) {\n result = this.recommendPlanSelect.wantNo;\n }\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 希望ナンバー\n @computed\n get nowSelectRichWantNo(): string {\n let result = '100005';\n if (this.richPlanSelect != undefined && this.richPlanSelect.wantNo != undefined) {\n result = this.richPlanSelect.wantNo;\n }\n return result;\n }\n\n @computed\n get nowSelectWantCar(): string {\n if (this.nowCar != undefined && this.nowCar.wantCar === 'yes') {\n return this.nowCar.wantCar;\n }\n return 'no';\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中 もらえるオプション\n @computed\n get nowSelectSimpleWantCar(): string {\n if (this.simplePlanSelect != undefined && this.simplePlanSelect.wantCar === 'yes') {\n return this.simplePlanSelect.wantCar;\n }\n return 'no';\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中 もらえるオプション\n @computed\n get nowSelectRecommendWantCar(): string {\n if (this.recommendPlanSelect != undefined && this.recommendPlanSelect.wantCar === 'yes') {\n return this.recommendPlanSelect.wantCar;\n }\n return 'no';\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中 もらえるオプション\n @computed\n get nowSelectRichWantCar(): string {\n if (this.richPlanSelect != undefined && this.richPlanSelect.wantCar === 'yes') {\n return this.richPlanSelect.wantCar;\n }\n return 'no';\n }\n\n @computed\n get nowSelectMaintenance(): string | undefined {\n if (this.nowCar && this.nowCar.maintenancePlan) {\n return NEWCAR_CONST.MAINTENANCE.PLAN_NAME(this.nowCar.maintenancePlan);\n }\n return undefined;\n }\n\n // 現在の条件での金額算出\n @computed\n get nowSelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return nowSelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 11年での金額算出\n @computed\n get term11SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term11SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 10年での金額算出\n @computed\n get term10SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term10SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 9年での金額算出\n @computed\n get term9SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term9SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 8年での金額算出\n @computed\n get term8SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term8SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 7年での金額算出\n @computed\n get term7SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term7SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 6年での金額算出\n @computed\n get term6SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term6SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 5年での金額算出\n @computed\n get term5SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term5SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 4年での金額算出\n @computed\n get term4SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term4SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 3年での金額算出\n @computed\n get term3SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term3SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 2年での金額算出\n @computed\n get term2SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term2SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 1年での金額算出\n @computed\n get term1SelectPrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return term1SelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // 現在の条件での金額算出(ネット割なし)\n @computed\n get nowSelectBasePrice(): number | undefined {\n if (this.nowCar && this.nowCar.gradeId) {\n return nowSelectPrice(this.nowCar, this.nowGrades, this.nowMaintenanceType, true);\n }\n return undefined;\n }\n\n // SP版料金シミュレーション用 オススメプランの選択中条件での金額算出(ネット割なし)\n @computed\n get nowSelectRecommendSPPrice(): number | undefined {\n if (this.recommendSPPlanSelect && this.recommendSPPlanSelect.gradeId) {\n return nowSelectPrice(this.recommendSPPlanSelect, this.nowGrades, this.nowMaintenanceType, true);\n }\n return undefined;\n }\n\n // PC版料金シミュレーション用 シンプルプランの選択中条件での金額算出\n @computed\n get nowSelectSimplePrice(): number | undefined {\n if (this.simplePlanSelect && this.simplePlanSelect.gradeId) {\n return nowSelectPrice(this.simplePlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // PC版料金シミュレーション用 おすすめプランの選択中条件での金額算出\n @computed\n get nowSelectRecommendPrice(): number | undefined {\n if (this.recommendPlanSelect && this.recommendPlanSelect.gradeId) {\n return nowSelectPrice(this.recommendPlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n // PC版料金シミュレーション用 よくばりプランの選択中条件での金額算出\n @computed\n get nowSelectRichPrice(): number | undefined {\n if (this.richPlanSelect && this.richPlanSelect.gradeId) {\n return nowSelectPrice(this.richPlanSelect, this.nowGrades, this.nowMaintenanceType);\n }\n return undefined;\n }\n\n /**\n * シミュレーション結果保存用、ボディカラーの情報・値段を返却\n *\n * @readonly\n * @type {(SelectBodyColor | undefined)}\n * @memberof SimulationManager\n */\n @computed\n get nowSimulationBodyColor(): SelectBodyColor | undefined {\n const { nowCar } = this;\n const defaultTerm = NEWCAR_CONST.TERM.ID.YEAR_11;\n if (nowCar != undefined && searchCarStore.allBodyColorList != undefined) {\n // グレードの特定\n const targetGradeId = nowCar.gradeId;\n const targetGrade = (this.nowGrades.find((grade) => (grade.id == targetGradeId)));\n let targetBodyColor: any;\n let isSelected = false;\n if (nowCar.bodyColorId != undefined) {\n if (targetGrade && targetGrade.bodyColors) {\n // ボディカラーの特定\n targetBodyColor = (targetGrade.bodyColors.find((bodyColr) => (bodyColr.id == nowCar.bodyColorId)));\n isSelected = true;\n }\n } else if (targetGrade && targetGrade.bodyColors) {\n const bodyColorList = selectedGradeBodyColorList(targetGrade);\n targetBodyColor = bodyColorList[0];\n }\n\n if (targetBodyColor) {\n // ボディカラーInfoIdの特定\n const targetBodyColorInfo = (searchCarStore.allBodyColorList.find((bodyColr) => (bodyColr.id == targetBodyColor.bodyColorInfoId)));\n // ボディカラー料金の特定\n const bodyColorFee: any = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === targetBodyColor.optionFeeId);\n if (targetBodyColorInfo) {\n return {\n bodyColorId: targetBodyColor.id,\n bodyColorName: targetBodyColorInfo.bodyColorName,\n colorCode1: targetBodyColorInfo.colorCode1,\n colorCode2: targetBodyColorInfo.colorCode2,\n leasingFee: bodyColorFee && bodyColorFee[`leasingFee${(nowCar.term || defaultTerm) * 12}`],\n supportFee: bodyColorFee && bodyColorFee[`supportFee${(nowCar.term || defaultTerm) * 12}`],\n isSelected,\n };\n }\n }\n }\n return undefined;\n }\n\n /**\n * シミュレーション結果保存用、オプション・メンテナンスプラン・もらえるオプションの選択肢・値段を返却\n *\n * @readonly\n * @type {{carNavi?: SelectOption, etc?: SelectOption, backCamera?: SelectOption, floorMat?: SelectOption, wantNo?: SelectOption, doorVisor?: SelectOption, maintenancePlan?: IMaintenancePlan, wantCar?: SelectOption}}\n * @memberof SimulationManager\n * */\n @computed\n get nowSimulationOpstions(): {carNavi?: SelectOption, etc?: SelectOption, backCamera?: SelectOption, floorMat?: SelectOption, wantNo?: SelectOption, doorVisor?: SelectOption, maintenancePlan?: IMaintenancePlan, wantCar?: SelectOption} {\n const result:{carNavi?: SelectOption, etc?: SelectOption, backCamera?: SelectOption, floorMat?: SelectOption, wantNo?: SelectOption, doorVisor?: SelectOption, maintenancePlan?: IMaintenancePlan, wantCar?: SelectOption} = {};\n\n const defaultTerm = NEWCAR_CONST.TERM.ID.YEAR_11;\n if (this.nowCar != undefined) {\n // グレードの特定\n const targetGradeId = this.nowCar.gradeId;\n const targetGrade = (this.nowGrades.find((grade) => (grade.id == targetGradeId)));\n\n // option_type-3=カーナビ オプションID\n if (this.nowCar && this.nowCar.carNavi) {\n const carNaviOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (this.nowCar && this.nowCar.carNavi));\n if (carNaviOption) {\n const carNaviFee = (searchCarStore.allOptionFeeList as OptionFee[])\n .find((item) => item.id === carNaviOption.optionFeeId) as {[key: string]: number};\n const carNaviOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === carNaviOption.optionInfoId);\n result.carNavi = {\n id: this.nowCar.carNavi,\n name: carNaviOptionInfo && carNaviOptionInfo.name,\n isStandard: carNaviOption.isStandard,\n leasingFee: carNaviFee && carNaviFee[`leasingFee${(this.nowCar.term || defaultTerm) * 12}`],\n supportFee: carNaviFee && carNaviFee[`supportFee${(this.nowCar.term || defaultTerm) * 12}`],\n isSelected: true,\n };\n }\n }\n\n // option_type-4=ETC オプションID\n if (this.nowCar && this.nowCar.etc && this.nowCar.etc) {\n const etcOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (this.nowCar && this.nowCar.etc));\n if (etcOption) {\n const etcFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === etcOption.optionFeeId) as {[key: string]: number};\n const etcOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === etcOption.optionInfoId);\n result.etc = {\n id: this.nowCar.etc,\n name: etcOptionInfo && etcOptionInfo.name,\n isStandard: etcOption.isStandard,\n leasingFee: etcFee && etcFee[`leasingFee${(this.nowCar.term || defaultTerm) * 12}`],\n supportFee: etcFee && etcFee[`supportFee${(this.nowCar.term || defaultTerm) * 12}`],\n isSelected: true,\n };\n }\n }\n\n // option_type-5=バックカメラ オプションID\n if (this.nowCar && this.nowCar.backCamera) {\n const backCameraOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (this.nowCar && this.nowCar.backCamera));\n if (backCameraOption) {\n const backCameraFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === backCameraOption.optionFeeId) as {[key: string]: number};\n const backCameraOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === backCameraOption.optionInfoId);\n result.backCamera = {\n id: this.nowCar.backCamera,\n name: backCameraOptionInfo && backCameraOptionInfo.name,\n isStandard: backCameraOption.isStandard,\n leasingFee: backCameraFee && backCameraFee[`leasingFee${(this.nowCar.term || defaultTerm) * 12}`],\n supportFee: backCameraFee && backCameraFee[`supportFee${(this.nowCar.term || defaultTerm) * 12}`],\n isSelected: true,\n };\n }\n }\n\n // option_type-6=フロアマット オプションID\n if (this.nowCar && this.nowCar.floorMat) {\n const floorMatOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (this.nowCar && this.nowCar.floorMat));\n if (floorMatOption) {\n const floorMatFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === floorMatOption.optionFeeId) as {[key: string]: number};\n const floorMatOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === floorMatOption.optionInfoId);\n result.floorMat = {\n id: this.nowCar.floorMat,\n name: floorMatOptionInfo && floorMatOptionInfo.name,\n isStandard: floorMatOption.isStandard,\n leasingFee: floorMatFee && floorMatFee[`leasingFee${(this.nowCar.term || defaultTerm) * 12}`],\n supportFee: floorMatFee && floorMatFee[`supportFee${(this.nowCar.term || defaultTerm) * 12}`],\n isSelected: true,\n };\n }\n }\n\n // option_type-7=希望ナンバー オプションID\n if (this.nowCar && this.nowCar.wantNo) {\n const wantNoOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (this.nowCar && this.nowCar.wantNo));\n if (wantNoOption) {\n const wantNoFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === wantNoOption.optionFeeId) as {[key: string]: number};\n const wantNoOptionInfo: any = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === wantNoOption.optionInfoId);\n result.wantNo = {\n id: this.nowCar.wantNo,\n name: wantNoOptionInfo && wantNoOptionInfo.name,\n isStandard: wantNoOption.isStandard,\n leasingFee: wantNoFee && wantNoFee[`leasingFee${(this.nowCar.term || defaultTerm) * 12}`],\n supportFee: wantNoFee && wantNoFee[`supportFee${(this.nowCar.term || defaultTerm) * 12}`],\n isSelected: true,\n };\n }\n }\n\n // option_type-8=ドアバイザー オプションID\n if (this.nowCar && this.nowCar.doorVisor) {\n if (!this.nowCar.dontHaveDoorVisor) {\n const doorVisorOption: any = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (this.nowCar && this.nowCar.doorVisor));\n if (doorVisorOption) {\n const doorVisorFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === doorVisorOption.optionFeeId) as {[key: string]: number};\n const doorVisorOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === doorVisorOption.optionInfoId);\n result.doorVisor = {\n id: this.nowCar.doorVisor,\n name: doorVisorOptionInfo && doorVisorOptionInfo.name,\n isStandard: doorVisorOption.isStandard,\n leasingFee: doorVisorFee && doorVisorFee[`leasingFee${(this.nowCar.term || defaultTerm) * 12}`],\n supportFee: doorVisorFee && doorVisorFee[`supportFee${(this.nowCar.term || defaultTerm) * 12}`],\n isSelected: true,\n };\n }\n }\n }\n\n // もらえるオプション\n const termId = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n if (this.nowCar.wantCar === 'yes' && termId >= NEWCAR_CONST.TERM.ID.YEAR_7) {\n result.wantCar = {\n isStandard: false,\n price: getFreeTransferDiffLeasingFeeTaxedPrice(targetGrade, termId),\n isSelected: true,\n };\n }\n\n // メンテナンス\n if (this.nowCar.maintenancePlan) {\n result.maintenancePlan = NEWCAR_DEFINE.MAINTENANCE.PLANS(\n this.nowMaintenanceType,\n termId,\n )[this.nowCar.maintenancePlan];\n }\n }\n\n return result;\n }\n\n @action\n saveEntryBreakdown(plan?: NEWCAR_CONST.SIMULATION_PLAN.ID) {\n let memo = '';\n let hasDoorVisor = false; // グレード未選択時のドアバイザー装着不可車のチェック\n let targetGrade: VehicleGrade | undefined;\n let defaultCarNavi: any;\n const defaultTerm = NEWCAR_CONST.TERM.ID.YEAR_11;\n\n let selection = this.nowCar;\n if (plan === NEWCAR_CONST.SIMULATION_PLAN.ID.SIMPLE) {\n memo += `|プラン:${NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_SIMPLE}`;\n selection = this.simplePlanSelect;\n } else if (plan === NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND) {\n memo += `|プラン:${NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_RECOMMEND_PC}`;\n selection = this.recommendPlanSelect;\n } else if (plan === NEWCAR_CONST.SIMULATION_PLAN.ID.RICH) {\n memo += `|プラン:${NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_RICH}`;\n selection = this.richPlanSelect;\n } else if (plan === NEWCAR_CONST.SIMULATION_PLAN.ID.ORIGINAL) {\n memo += `|プラン:${NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_ORIGINAL}`;\n } else if (plan === NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND_SP) {\n memo += `|プラン:${NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_RECOMMEND_SP}`;\n } else if (plan === NEWCAR_CONST.SIMULATION_PLAN.ID.TRIAL) {\n memo += `|プラン:${NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_TRIAL}|プランメモ:相談申込`;\n }\n\n // 流入元分類\n const referrerType = NEWCAR_CONST.APPLICATION_TYPE.REFERRER_TYPE.MAIN;\n // 車種状態\n const carCondition = NEWCAR_CONST.APPLICATION_TYPE.CAR_CONDITION.NEW_CAR;\n // 車種選択状況\n let carSelectStatus = '';\n switch (plan) {\n case NEWCAR_CONST.SIMULATION_PLAN.ID.SIMPLE:\n case NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND:\n case NEWCAR_CONST.SIMULATION_PLAN.ID.RICH:\n case NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND_SP:\n carSelectStatus = NEWCAR_CONST.APPLICATION_TYPE.CAR_SELECT.CAR_MODEL;\n break;\n case NEWCAR_CONST.SIMULATION_PLAN.ID.ORIGINAL: {\n // プラン詳細\n const planDetails = NEWCAR_CONST.APPLICATION_TYPE.PLAN_DETAIL.INDIVIDUAL_COST_SIMULATIONS;\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'planDetails', payload: planDetails });\n carSelectStatus = NEWCAR_CONST.APPLICATION_TYPE.CAR_SELECT.CAR_MODEL;\n break;\n }\n case NEWCAR_CONST.SIMULATION_PLAN.ID.TRIAL:\n carSelectStatus = NEWCAR_CONST.APPLICATION_TYPE.CAR_SELECT.CONSULTATION;\n break;\n default:\n break;\n }\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'referrerType', payload: referrerType });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carCondition', payload: carCondition });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carSelectStatus', payload: carSelectStatus });\n\n if (selection === undefined) {\n // グレード未選択時\n targetGrade = listupGradeName(this.nowGrades)[0].defaultGrade;\n memo += '|グレード:未選択';\n if (targetGrade && targetGrade.bodyColors) {\n const bodyColorList = selectedGradeBodyColorList(targetGrade);\n const bodyColor = bodyColorList[0] || {};\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'bodyColor',\n payload: {\n id: bodyColor.id,\n name: bodyColor && bodyColor.bodyColorName,\n leasingFee: bodyColor && bodyColor.leasingFee,\n supportFee: bodyColor && bodyColor.supportFee,\n },\n });\n memo += '|ボディカラー:未選択';\n }\n\n if (targetGrade && targetGrade.options && searchCarStore.allOptionInfoList) {\n for (const targetOption of targetGrade.options) {\n const nowOptions = (searchCarStore.allOptionInfoList.find((option) => (option.id == targetOption.optionInfoId)));\n if (nowOptions && nowOptions.optionType === 'カーナビ') {\n const carNaviFee: any = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === targetOption.optionFeeId);\n const carNaviOptionInfo: any = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === targetOption.optionInfoId);\n defaultCarNavi = {\n id: targetOption.id,\n name: carNaviOptionInfo.name,\n leasingFee: carNaviFee && carNaviFee[`leasingFee${defaultTerm * 12}`],\n supportFee: carNaviFee && carNaviFee[`supportFee${defaultTerm * 12}`],\n };\n }\n if (nowOptions && nowOptions.optionType === 'ドアバイザー') {\n // ドアバイザー存在\n hasDoorVisor = true;\n }\n }\n }\n } else {\n // option_type-1=ボディーカラーID\n const gradeId = selection.gradeId;\n targetGrade = (this.nowGrades.find((grade) => (grade.id == gradeId)));\n if (selection.bodyColorId) {\n const bodyColor = ((targetGrade && targetGrade.bodyColors) || []).find((item) => item.id === (selection as any).bodyColorId) || {};\n const bodyColorInfo = (searchCarStore.allBodyColorList as BodyColorInfo[]).find((item) => item.id === bodyColor.bodyColorInfoId);\n const bodyColorFee: any = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === bodyColor.optionFeeId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'bodyColor',\n payload: {\n id: selection.bodyColorId,\n name: bodyColorInfo && bodyColorInfo.bodyColorName,\n leasingFee: bodyColorFee && bodyColorFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: bodyColorFee && bodyColorFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n } else if (selection && selection.gradeId) {\n if (targetGrade && targetGrade.bodyColors) {\n const bodyColorList = selectedGradeBodyColorList(targetGrade);\n const bodyColor = bodyColorList[0] || {};\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'bodyColor',\n payload: {\n id: bodyColor.id,\n name: bodyColor && bodyColor.bodyColorName,\n leasingFee: bodyColor && bodyColor.leasingFee,\n supportFee: bodyColor && bodyColor.supportFee,\n },\n });\n memo += '|ボディカラー:未選択';\n }\n }\n }\n\n // 対象車種更新\n const car: CarDigest | undefined = searchCarStore.allCarDigests\n && searchCarStore.allCarDigests.find((c) => c.id__normalized.toString() === this.lastEntryId);\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'car', payload: car });\n\n // 対象グレード更新\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'grade', payload: targetGrade });\n\n // option_type-3=カーナビ オプションID\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carNavi', payload: undefined });\n if (selection && selection.carNavi) {\n const carNaviOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (selection && selection.carNavi));\n if (carNaviOption) {\n const carNaviFee = (searchCarStore.allOptionFeeList as OptionFee[])\n .find((item) => item.id === carNaviOption.optionFeeId) as {[key: string]: number};\n const carNaviOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === carNaviOption.optionInfoId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'carNavi',\n payload: {\n id: selection.carNavi,\n name: carNaviOptionInfo && carNaviOptionInfo.name,\n isStandard: carNaviOption.isStandard,\n leasingFee: carNaviFee && carNaviFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: carNaviFee && carNaviFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n }\n } else {\n // todo カーナビは有りにしたい\n if (defaultCarNavi) {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carNavi', payload: defaultCarNavi });\n } else {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carNavi', payload: undefined });\n }\n memo += '|カーナビ:未選択';\n }\n // option_type-4=ETC オプションID\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'etc', payload: undefined });\n if (selection && selection.etc && selection.etc) {\n const etcOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (selection && selection.etc));\n if (etcOption) {\n const etcFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === etcOption.optionFeeId) as {[key: string]: number};\n const etcOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === etcOption.optionInfoId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'etc',\n payload: {\n id: selection.etc,\n name: etcOptionInfo && etcOptionInfo.name,\n isStandard: etcOption.isStandard,\n leasingFee: etcFee && etcFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: etcFee && etcFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n }\n } else {\n const defaultOption = targetGrade?.options?.find((item) => {\n const optionInfo = searchCarStore.allOptionInfoList?.find(\n (info) => info.id === item.optionInfoId,\n );\n return optionInfo?.optionType === 'ETC';\n });\n // 選択中なし、標準装備の場合\n if (defaultOption?.isStandard) {\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'etc',\n payload: {\n id: defaultOption.id?.toString(),\n name: '標準装備',\n isStandard: true,\n leasingFee: 0,\n supportFee: 0,\n },\n });\n } else {\n memo += '|ETC:未選択';\n }\n }\n // option_type-5=バックカメラ オプションID\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'backCamera', payload: undefined });\n if (selection && selection.backCamera) {\n const backCameraOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (selection && selection.backCamera));\n if (backCameraOption) {\n const backCameraFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === backCameraOption.optionFeeId) as {[key: string]: number};\n const backCameraOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === backCameraOption.optionInfoId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'backCamera',\n payload: {\n id: selection.backCamera,\n name: backCameraOptionInfo && backCameraOptionInfo.name,\n isStandard: backCameraOption.isStandard,\n leasingFee: backCameraFee && backCameraFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: backCameraFee && backCameraFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n }\n } else {\n const defaultOption = targetGrade?.options?.find((item) => {\n const optionInfo = searchCarStore.allOptionInfoList?.find(\n (info) => info.id === item.optionInfoId,\n );\n return optionInfo?.optionType === 'バックカメラ';\n });\n // 選択中なし、標準装備の場合\n if (defaultOption?.isStandard) {\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'backCamera',\n payload: {\n id: defaultOption.id?.toString(),\n name: '標準装備',\n isStandard: true,\n leasingFee: 0,\n supportFee: 0,\n },\n });\n } else {\n memo += '|バックカメラ:未選択';\n }\n }\n // option_type-6=フロアマット オプションID\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'floorMat', payload: undefined });\n if (selection && selection.floorMat) {\n const floorMatOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (selection && selection.floorMat));\n if (floorMatOption) {\n const floorMatFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === floorMatOption.optionFeeId) as {[key: string]: number};\n const floorMatOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === floorMatOption.optionInfoId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'floorMat',\n payload: floorMatOption && {\n id: selection.floorMat,\n name: floorMatOptionInfo && floorMatOptionInfo.name,\n isStandard: floorMatOption.isStandard,\n leasingFee: floorMatFee && floorMatFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: floorMatFee && floorMatFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n }\n } else {\n const defaultOption = targetGrade?.options?.find((item) => {\n const optionInfo = searchCarStore.allOptionInfoList?.find(\n (info) => info.id === item.optionInfoId,\n );\n return optionInfo?.optionType === 'フロアマット';\n });\n // 選択中なし、標準装備の場合\n if (defaultOption?.isStandard) {\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'floorMat',\n payload: {\n id: defaultOption.id?.toString(),\n name: '標準装備',\n isStandard: true,\n leasingFee: 0,\n supportFee: 0,\n },\n });\n } else {\n memo += '|フロアマット:未選択';\n }\n }\n // option_type-7=希望ナンバー オプションID\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'wantNo', payload: undefined });\n if (selection && selection.wantNo) {\n const wantNoOption = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (selection && selection.wantNo));\n if (wantNoOption) {\n const wantNoFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === wantNoOption.optionFeeId) as {[key: string]: number};\n const wantNoOptionInfo: any = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === wantNoOption.optionInfoId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'wantNo',\n payload: wantNoOption && {\n id: selection.wantNo,\n name: wantNoOptionInfo && wantNoOptionInfo.name,\n isStandard: wantNoOption.isStandard,\n leasingFee: wantNoFee && wantNoFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: wantNoFee && wantNoFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n }\n } else {\n memo += '|希望ナンバー:未選択';\n }\n // option_type-8=ドアバイザー オプションID\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'doorVisor', payload: undefined });\n if (selection && selection.doorVisor) {\n if (selection.dontHaveDoorVisor) {\n memo += '|ドアバイザー:装着不可';\n } else {\n const doorVisorOption: any = targetGrade && targetGrade.options\n && targetGrade.options.find((item) => item.id === (selection && selection.doorVisor));\n if (doorVisorOption) {\n const doorVisorFee = (searchCarStore.allOptionFeeList as OptionFee[]).find((item) => item.id === doorVisorOption.optionFeeId) as {[key: string]: number};\n const doorVisorOptionInfo = (searchCarStore.allOptionInfoList as OptionInfo[]).find((item) => item.id === doorVisorOption.optionInfoId);\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'doorVisor',\n payload: doorVisorOption && {\n id: selection.doorVisor,\n name: doorVisorOptionInfo && doorVisorOptionInfo.name,\n isStandard: doorVisorOption.isStandard,\n leasingFee: doorVisorFee && doorVisorFee[`leasingFee${(selection.term || defaultTerm) * 12}`],\n supportFee: doorVisorFee && doorVisorFee[`supportFee${(selection.term || defaultTerm) * 12}`],\n },\n });\n }\n }\n } else if (hasDoorVisor === false) {\n memo += '|ドアバイザー:装着不可';\n } else {\n const defaultOption = targetGrade?.options?.find((item) => {\n const optionInfo = searchCarStore.allOptionInfoList?.find(\n (info) => info.id === item.optionInfoId,\n );\n return optionInfo?.optionType === 'ドアバイザー';\n });\n // 選択中なし、標準装備の場合\n if (defaultOption?.isStandard) {\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'doorVisor',\n payload: {\n id: defaultOption.id?.toString(),\n name: '標準装備',\n isStandard: true,\n leasingFee: 0,\n supportFee: 0,\n },\n });\n } else {\n memo += '|ドアバイザー:未選択';\n }\n }\n\n // もらえるオプション\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'wantCar', payload: undefined });\n const termId = selection?.term || NEWCAR_CONST.TERM.ID.YEAR_11;\n if (selection?.wantCar !== 'no' && termId >= NEWCAR_CONST.TERM.ID.YEAR_7) {\n const wantCar = new WantCarBreakdown();\n wantCar.price = getFreeTransferDiffLeasingFeeTaxedPrice(targetGrade, termId);\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'wantCar', payload: wantCar });\n memo += '|もらえるオプション:希望';\n }\n\n // 賃貸期間\n if (selection === undefined || isNaN(Number(selection.term))) {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'term', payload: defaultTerm });\n memo += '|期間:未選択';\n } else {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'term', payload: selection.term });\n }\n\n // メンテナンス\n let maintenancePlan :IMaintenancePlan;\n if (selection && selection.maintenancePlan && this.nowMaintenanceType) {\n maintenancePlan = NEWCAR_DEFINE.MAINTENANCE.PLANS(\n this.nowMaintenanceType,\n termId,\n )[selection.maintenancePlan];\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'maintenancePlan', payload: maintenancePlan });\n } else {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'maintenancePlan', payload: undefined });\n }\n if (selection === undefined || selection.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED) {\n memo += '|メンテ:未選択';\n } else if (selection.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) {\n memo += '|メンテ:プラチナ';\n } else if (selection.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD) {\n memo += '|メンテ:ゴールド';\n } else if (selection.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER) {\n memo += '|メンテ:シルバー';\n } else if (selection.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.NONE) {\n memo += '|メンテ:なし';\n }\n\n // 備考欄\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'memo', payload: memo });\n\n // セッションストレージに保存\n entryBreakdownManagerStore.saveToSessionStorage();\n }\n\n // エンジンリスト\n @computed\n get engineList(): Array<{ label: string; value: CustomerSelection['engine'] }> {\n // 車種未選択時は選択不可\n if (this.nowCar === undefined) { return []; }\n\n // 該当者車種がどのエンジンを持つかチェック\n const hasGas = (this.nowGrades.find((grade) => (grade.engine == undefined)));\n const hasHybrid = (this.nowGrades.find((grade) => (grade.engine == NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_HYBRID])));\n const hasTurbo = (this.nowGrades.find((grade) => (grade.engine == NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_TURBO])));\n // エンジンリストを作成\n const result: Array<{ label: string; value: CustomerSelection['engine'] }> = [];\n if (hasGas != undefined) {\n result.push({ label: NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_GAS], value: NEWCAR_CONST.ENGINE.ID.IS_GAS });\n }\n if (hasHybrid != undefined) {\n result.push({ label: NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_HYBRID], value: NEWCAR_CONST.ENGINE.ID.IS_HYBRID });\n }\n if (hasTurbo != undefined) {\n result.push({ label: NEWCAR_CONST.ENGINE.NAME[NEWCAR_CONST.ENGINE.ID.IS_TURBO], value: NEWCAR_CONST.ENGINE.ID.IS_TURBO });\n }\n return result;\n }\n\n // 現在選択中の車種、エンジンに応じたグレード一覧\n @computed\n get gradeList(): IGradeNameList[] {\n if (!this.nowGrades || !this.nowCar) {\n return [];\n }\n return listupGradeName(this.nowGrades, this.nowCar);\n }\n\n // 駆動一覧\n @computed\n get kudouList(): Array<{ label: string; value: CustomerSelection['kudou']; disabled?: boolean }> {\n if (this.nowGrades) {\n let grades = this.nowGrades;\n // エンジンタイプで絞り込み\n if (this.nowCar?.engine) {\n grades = grades.filter((grade) => (grade.engine || 'ガソリン') === NEWCAR_CONST.ENGINE.NAME[this.nowCar!.engine!]);\n }\n // ミッションで絞り込み\n if (this.nowCar?.mission) {\n grades = grades.filter((grade) => getMissionType(grade.mission) === this.nowCar!.mission);\n }\n const kudouList = grades.map((grade) => grade.kudou || '');\n if (kudouList.includes('2WD') && kudouList.includes('4WD')) {\n return [\n { label: '2WD', value: 2 },\n { label: '4WD', value: 4 },\n ];\n }\n if (!kudouList.includes('2WD') && kudouList.includes('4WD')) {\n // 4WDのみの場合は2WDを非活性\n return [\n { label: '2WD', value: 2, disabled: true },\n { label: '4WD', value: 4 },\n ];\n }\n if (kudouList.includes('2WD') && !kudouList.includes('4WD')) {\n // 2WDのみの場合は4WDを非活性\n return [\n { label: '2WD', value: 2 },\n { label: '4WD', value: 4, disabled: true },\n ];\n }\n }\n return [];\n }\n\n // ミッション一覧\n @computed\n get missionList(): Array<{ label: string; value: CustomerSelection['mission']; disabled?: boolean }> {\n if (this.nowGrades) {\n let grades = this.nowGrades;\n // エンジンタイプで絞り込み\n if (this.nowCar?.engine) {\n grades = grades.filter((grade) => (grade.engine || 'ガソリン') === NEWCAR_CONST.ENGINE.NAME[this.nowCar!.engine!]);\n }\n // 駆動で絞り込み\n if (this.nowCar?.kudou) {\n grades = grades.filter((grade) => grade.kudou === NEWCAR_CONST.KUDOU.NAME[this.nowCar!.kudou!]);\n }\n const missionTypeList = grades.map((grade) => getMissionType(grade.mission || ''));\n if (missionTypeList.includes('AT') && missionTypeList.includes('MT')) {\n return [\n { label: 'オートマチック', value: 'AT' },\n { label: 'マニュアル', value: 'MT' },\n ];\n }\n if (!missionTypeList.includes('AT') && missionTypeList.includes('MT')) {\n // MTのみの場合はATを非活性\n return [\n { label: 'オートマチック', value: 'AT', disabled: true },\n { label: 'マニュアル', value: 'MT' },\n ];\n }\n }\n return [];\n }\n\n // 現在選択中のグレードで選択出来るボディカラーリスト\n @computed\n get bodyColorList(): Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> {\n let result: Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> = [];\n const target = this.nowCar;\n if (target) {\n const nowGrade = (this.nowGrades.find((grade) => (grade.id == target.gradeId)));\n if (nowGrade && nowGrade.bodyColors && searchCarStore.allBodyColorList && searchCarStore.allOptionFeeList) {\n result = selectedGradeBodyColorList(nowGrade, (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11, this.nowCar && this.nowCar.bodyColorId && this.nowCar.bodyColorId);\n }\n }\n return result;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来るボディカラーリスト\n @computed\n get simplePlansBodyColorList(): Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> {\n let result: Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> = [];\n const target = this.simplePlanSelect;\n if (target) {\n const nowGrade = (this.nowGrades.find((grade) => (grade.id == target.gradeId)));\n if (nowGrade && nowGrade.bodyColors && searchCarStore.allBodyColorList && searchCarStore.allOptionFeeList) {\n result = selectedGradeBodyColorList(nowGrade, (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11, this.simplePlanSelect && this.simplePlanSelect.bodyColorId && this.simplePlanSelect.bodyColorId);\n }\n }\n\n return result;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来るボディカラーリスト\n @computed\n get recommendPlansBodyColorList(): Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> {\n let result: Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> = [];\n const target = this.recommendPlanSelect;\n if (target) {\n const nowGrade = (this.nowGrades.find((grade) => (grade.id == target.gradeId)));\n if (nowGrade && nowGrade.bodyColors && searchCarStore.allBodyColorList && searchCarStore.allOptionFeeList) {\n result = selectedGradeBodyColorList(nowGrade, (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11, this.recommendPlanSelect && this.recommendPlanSelect.bodyColorId && this.recommendPlanSelect.bodyColorId);\n }\n }\n\n return result;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来るボディカラーリスト\n @computed\n get richPlansBodyColorList(): Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> {\n let result: Array<{ id: string, bodyColorInfoId: string, bodyColorName?: string, colorCode1?: string, colorCode2?: string, price?: number, isChecked?: boolean }> = [];\n const target = this.richPlanSelect;\n if (target) {\n const nowGrade = (this.nowGrades.find((grade) => (grade.id == target.gradeId)));\n if (nowGrade && nowGrade.bodyColors && searchCarStore.allBodyColorList && searchCarStore.allOptionFeeList) {\n result = selectedGradeBodyColorList(nowGrade, (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11, this.richPlanSelect && this.richPlanSelect.bodyColorId && this.richPlanSelect.bodyColorId);\n }\n }\n\n return result;\n }\n\n @computed\n get carNaviList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'カーナビ', this.nowCar, this.nowGrades);\n if (this.nowCar && list.length === 1 && list[0].isStandard === true) {\n this.nowCar.carNavi = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来るカーナビ\n @computed\n get simplePlansCarNaviList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'カーナビ', this.simplePlanSelect, this.nowGrades);\n if (this.simplePlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.simplePlanSelect.carNavi = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来るカーナビ\n @computed\n get recommendPlansCarNaviList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'カーナビ', this.recommendPlanSelect, this.nowGrades);\n if (this.recommendPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.recommendPlanSelect.carNavi = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来るカーナビ\n @computed\n get richPlansCarNaviList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'カーナビ', this.richPlanSelect, this.nowGrades);\n if (this.richPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.richPlanSelect.carNavi = list[0].id;\n }\n return list;\n }\n\n @computed\n get etcList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ETC', this.nowCar, this.nowGrades);\n if (this.nowCar && list.length === 1 && list[0].isStandard === true) {\n this.nowCar.etc = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来るETC\n @computed\n get simplePlansEtcList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ETC', this.simplePlanSelect, this.nowGrades);\n if (this.simplePlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.simplePlanSelect.etc = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来るETC\n @computed\n get recommendPlansEtcList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ETC', this.recommendPlanSelect, this.nowGrades);\n if (this.recommendPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.recommendPlanSelect.etc = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来るETC\n @computed\n get richPlansEtcList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ETC', this.richPlanSelect, this.nowGrades);\n if (this.richPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.richPlanSelect.etc = list[0].id;\n }\n return list;\n }\n\n @computed\n get backCameraList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'バックカメラ', this.nowCar, this.nowGrades);\n if (this.nowCar && list.length === 1 && list[0].isStandard === true) {\n this.nowCar.backCamera = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来るバックカメラ\n @computed\n get simplePlansbackCameraList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'バックカメラ', this.simplePlanSelect, this.nowGrades);\n if (this.simplePlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.simplePlanSelect.backCamera = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来るバックカメラ\n @computed\n get recommendPlansbackCameraList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'バックカメラ', this.recommendPlanSelect, this.nowGrades);\n if (this.recommendPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.recommendPlanSelect.backCamera = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来るバックカメラ\n @computed\n get richPlansbackCameraList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'バックカメラ', this.richPlanSelect, this.nowGrades);\n if (this.richPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.richPlanSelect.backCamera = list[0].id;\n }\n return list;\n }\n\n @computed\n get doorVisorList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ドアバイザー', this.nowCar, this.nowGrades);\n if (this.nowCar) {\n this.nowCar.dontHaveDoorVisor = (list.length === 0);\n if (list.length === 1 && list[0].isStandard === true) {\n this.nowCar.doorVisor = list[0].id;\n }\n }\n return list;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来るドアバイザー\n @computed\n get simplePlansDoorVisorList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ドアバイザー', this.simplePlanSelect, this.nowGrades);\n if (this.simplePlanSelect) {\n this.simplePlanSelect.dontHaveDoorVisor = (list.length === 0);\n if (list.length === 1 && list[0].isStandard === true) {\n this.simplePlanSelect.doorVisor = list[0].id;\n }\n }\n return list;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来るドアバイザー\n @computed\n get recommendPlansDoorVisorList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ドアバイザー', this.recommendPlanSelect, this.nowGrades);\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect.dontHaveDoorVisor = (list.length === 0);\n if (list.length === 1 && list[0].isStandard === true) {\n this.recommendPlanSelect.doorVisor = list[0].id;\n }\n }\n return list;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来るドアバイザー\n @computed\n get richPlansDoorVisorList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'ドアバイザー', this.richPlanSelect, this.nowGrades);\n if (this.richPlanSelect) {\n this.richPlanSelect.dontHaveDoorVisor = (list.length === 0);\n if (list.length === 1 && list[0].isStandard === true) {\n this.richPlanSelect.doorVisor = list[0].id;\n }\n }\n return list;\n }\n\n @computed\n get floorMatList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'フロアマット', this.nowCar, this.nowGrades);\n if (this.nowCar && list.length === 1 && list[0].isStandard === true) {\n this.nowCar.floorMat = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来るフロアマット\n @computed\n get simplePlansFloorMatList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'フロアマット', this.simplePlanSelect, this.nowGrades);\n if (this.simplePlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.simplePlanSelect.floorMat = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来るフロアマット\n @computed\n get recommendPlansFloorMatList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'フロアマット', this.recommendPlanSelect, this.nowGrades);\n if (this.recommendPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.recommendPlanSelect.floorMat = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来るフロアマット\n @computed\n get richPlansFloorMatList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, 'フロアマット', this.richPlanSelect, this.nowGrades);\n if (this.richPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.richPlanSelect.floorMat = list[0].id;\n }\n return list;\n }\n\n @computed\n get wantNoList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, '希望ナンバー', this.nowCar, this.nowGrades);\n if (this.nowCar && list.length === 1 && list[0].isStandard === true) {\n this.nowCar.wantNo = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 シンプルプラン 選択出来る希望ナンバー\n @computed\n get simplePlansWantNoList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.simplePlanSelect && this.simplePlanSelect.term) ? this.simplePlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, '希望ナンバー', this.simplePlanSelect, this.nowGrades);\n if (this.simplePlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.simplePlanSelect.wantNo = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 おすすめプラン 選択出来る希望ナンバー\n @computed\n get recommendPlansWantNoList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.recommendPlanSelect && this.recommendPlanSelect.term) ? this.recommendPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, '希望ナンバー', this.recommendPlanSelect, this.nowGrades);\n if (this.recommendPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.recommendPlanSelect.wantNo = list[0].id;\n }\n return list;\n }\n\n // PC版料金シミュレーション用 よくばりプラン 選択出来る希望ナンバー\n @computed\n get richPlansWantNoList(): Array<{ id: string, notid: string, isStandard: boolean, optionInfoId: number, thumbnailFileName?: string, name?: string, description?: string, optionType?: string, price?: number, isChecked?: boolean }> {\n const term = (this.richPlanSelect && this.richPlanSelect.term) ? this.richPlanSelect.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n const list = optionList(term, '希望ナンバー', this.richPlanSelect, this.nowGrades);\n if (this.richPlanSelect && list.length === 1 && list[0].isStandard === true) {\n this.richPlanSelect.wantNo = list[0].id;\n }\n return list;\n }\n\n @computed\n get wantCarPrice(): number {\n return getFreeTransferDiffLeasingFeeTaxedPrice(simulationManagerStore.nowGrade, simulationManagerStore.nowSelectTerm);\n }\n\n // PC版料金シミュレーション用 シンプルプラン もらえるオプション\n @computed\n get simplePlansWantCarPrice(): number {\n const selectedGrade = this.nowGrades.find((item) => (item.id === this.simplePlanSelect?.gradeId));\n return getFreeTransferDiffLeasingFeeTaxedPrice(selectedGrade, this.simplePlanSelect?.term);\n }\n\n // PC版料金シミュレーション用 おすすめプラン もらえるオプション\n @computed\n get recommendPlansWantCarPrice(): number {\n const selectedGrade = this.nowGrades.find((item) => (item.id === this.recommendPlanSelect?.gradeId));\n return getFreeTransferDiffLeasingFeeTaxedPrice(selectedGrade, this.recommendPlanSelect?.term);\n }\n\n // PC版料金シミュレーション用 よくばりプラン もらえるオプション\n @computed\n get richPlansWantCarPrice(): number {\n const selectedGrade = this.nowGrades.find((item) => (item.id === this.richPlanSelect?.gradeId));\n return getFreeTransferDiffLeasingFeeTaxedPrice(selectedGrade, this.richPlanSelect?.term);\n }\n\n @computed\n get maintenancePlanList(): Array {\n const result: Array = [];\n if (this.nowCar === undefined || this.nowMaintenanceType === NEWCAR_CONST.MAINTENANCE.TYPE.NOT_APPLICABLE) { return result; }\n\n // 期間に合わせて変動\n const term = (this.nowCar && this.nowCar.term) ? this.nowCar.term : NEWCAR_CONST.TERM.ID.YEAR_11;\n\n const plans = NEWCAR_DEFINE.MAINTENANCE.PLANS(this.nowMaintenanceType, term);\n\n if (term > NEWCAR_CONST.TERM.ID.YEAR_5) {\n result.push({\n ...plans[NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM],\n isChecked: (this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM),\n });\n }\n result.push({\n ...plans[NEWCAR_CONST.MAINTENANCE.PLAN.GOLD],\n isChecked: (this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.GOLD),\n });\n result.push({\n ...plans[NEWCAR_CONST.MAINTENANCE.PLAN.SILVER],\n isChecked: (this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.SILVER),\n });\n result.push({\n ...plans[NEWCAR_CONST.MAINTENANCE.PLAN.NONE],\n isChecked: (this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.NONE),\n });\n return result;\n }\n\n @computed\n get nowPickedMaintenancePlan(): number {\n if (this.nowCar && this.nowCar.maintenancePlan) {\n return this.nowCar.maintenancePlan;\n }\n return NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED;\n }\n\n @computed\n get nowGrade(): VehicleGrade | undefined {\n let targetGrade: VehicleGrade | undefined;\n if (this.nowCar && this.nowCar.gradeId) {\n const targetGradeId = this.nowCar.gradeId;\n targetGrade = (this.nowGrades.find((grade) => (grade.id == targetGradeId)));\n }\n return targetGrade;\n }\n\n @computed\n get nowCarDigest(): CarDigest | undefined {\n const car: CarDigest | undefined = searchCarStore.allCarDigests\n && searchCarStore.allCarDigests.find((c) => c.id__normalized.toString() === this.lastEntryId);\n return car;\n }\n\n @computed\n get nowCustomerSelection(): CustomerSelection | undefined {\n const nowCar = new CustomerSelection();\n if (this.nowCar) {\n nowCar.id = this.nowCar.id;\n nowCar.term = this.nowCar.term;\n nowCar.engine = this.nowCar.engine;\n nowCar.gradeName = this.nowCar.gradeName;\n nowCar.kudou = this.nowCar.kudou;\n nowCar.mission = this.nowCar.mission;\n nowCar.gradeId = this.nowCar.gradeId;\n nowCar.bodyColorId = this.nowCar.bodyColorId;\n nowCar.carNavi = this.nowCar.carNavi;\n nowCar.etc = this.nowCar.etc;\n nowCar.backCamera = this.nowCar.backCamera;\n nowCar.floorMat = this.nowCar.floorMat;\n nowCar.doorVisor = this.nowCar.doorVisor;\n nowCar.dontHaveDoorVisor = this.nowCar.dontHaveDoorVisor;\n nowCar.wantNo = this.nowCar.wantNo;\n nowCar.wantCar = this.nowCar.wantCar;\n nowCar.maintenancePlan = this.nowCar.maintenancePlan;\n nowCar.masterNumber = this.nowCar.masterNumber;\n }\n return nowCar;\n }\n\n /**\n * Action:現在画面上で表示する車種を設定\n * @param {string} id\n * @returns\n * @memberof SimulationManager\n */\n @action\n changeId(id: string) {\n this.setId(id);\n return id;\n }\n\n /**\n * mutation:現在車種変更\n * @param {string} id\n * @memberof SimulationManager\n */\n @action\n setId(id: string) {\n this.lastEntryId = id;\n // 既存のシミュレーションか確認\n const hasOld = (this.userSelect.find((car) => (car.id == id)));\n // 現在車種配下のグレードを抜き出し\n if (searchCarStore.allCarDigests != undefined) {\n const resultCarDigest = (searchCarStore.allCarDigests.find((digest) => (digest.id__normalized == id)));\n if (resultCarDigest != undefined && resultCarDigest.maintenanceType != undefined) {\n this.nowMaintenanceType = resultCarDigest.maintenanceType;\n }\n }\n if (searchCarStore.allCarDetails != undefined) {\n const resultCar = (searchCarStore.allCarDetails.find((car) => (car.id == id)));\n if (resultCar != undefined && resultCar.vehicleGrades != undefined) {\n this.nowGrades = resultCar.vehicleGrades;\n } else {\n this.nowGrades = [];\n }\n }\n // 既存の場合過去値をロード\n if (hasOld) {\n this.nowCar = hasOld;\n } else {\n this.nowCar = undefined;\n }\n\n // PC版料金シミュレーション用、オリジナルプラン以外は前回値を反映させない\n if (this.nowGrades.length > 0) {\n this.simplePlanSelect = createNewCarCollection(id, NEWCAR_CONST.SIMULATION_PLAN.ID.SIMPLE, this.nowGrades, this.nowMaintenanceType);\n this.recommendPlanSelect = createNewCarCollection(id, NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND, this.nowGrades, this.nowMaintenanceType);\n this.recommendSPPlanSelect = createNewCarCollection(id, NEWCAR_CONST.SIMULATION_PLAN.ID.RECOMMEND_SP, this.nowGrades, this.nowMaintenanceType);\n const car: CarDigest | undefined = searchCarStore.allCarDigests && searchCarStore.allCarDigests.find((c) => c.id__normalized.toString() === this.lastEntryId);\n this.richPlanSelect = createNewCarCollection(id, NEWCAR_CONST.SIMULATION_PLAN.ID.RICH, this.nowGrades, this.nowMaintenanceType, (car && car.hasWantCar) ? car.hasWantCar : false);\n }\n }\n\n // シミュレーション開始\n @action\n startSimulation(id: string) {\n this.setStart(id);\n return id;\n }\n\n @action\n setStart(id: string) {\n // 既存のシミュレーションか確認\n const hasOld = (this.userSelect.find((car) => (car.id == id)));\n // 初回の場合、デフォルトを設定\n if (!hasOld || (this.nowCar && !this.nowCar.gradeId)) {\n const newCar = createNewCarCollection(id, NEWCAR_CONST.SIMULATION_PLAN.ID.ORIGINAL, this.nowGrades, this.nowMaintenanceType);\n\n this.nowCar = newCar;\n this.userSelect.push(newCar);\n }\n }\n\n // 期間\n\n @action\n changeTerm(termId: NEWCAR_CONST.TERM.ID) {\n this.setTerm(termId);\n return termId;\n }\n\n @action\n setTerm(termId: NEWCAR_CONST.TERM.ID) {\n if (this.nowCar) {\n if (this.nowCar.term && this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) {\n // 更新前の選択期間が6年以上のとき かつ 新規選択期間が5年以下のとき\n if (this.nowCar.term >= NEWCAR_CONST.TERM.ID.YEAR_6 && termId <= NEWCAR_CONST.TERM.ID.YEAR_5) {\n // すでに選択ずみのメンテプランをリセットする\n this.nowCar = { ...this.nowCar, maintenancePlan: NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED };\n this.isResetMaintenance = true;\n }\n // 更新前の選択期間が5年以下のとき かつ 新規選択期間が6年以上のとき\n if (this.nowCar.term! <= NEWCAR_CONST.TERM.ID.YEAR_5 && termId >= NEWCAR_CONST.TERM.ID.YEAR_6) {\n // すでに選択ずみのメンテプランをリセットする\n this.nowCar = { ...this.nowCar, maintenancePlan: NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED };\n this.isResetMaintenance = true;\n }\n }\n this.nowCar = { ...this.nowCar, term: termId };\n Log.trace(`new Termr ID: ${termId}`);\n }\n }\n\n @action\n incrementTerm() {\n this.incrementTermData();\n }\n\n @action\n incrementTermData() {\n if (this.nowCar) {\n let term = 11;\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_11) { term = NEWCAR_CONST.TERM.ID.YEAR_11; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_10) { term = NEWCAR_CONST.TERM.ID.YEAR_11; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_9) { term = NEWCAR_CONST.TERM.ID.YEAR_10; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_8) { term = NEWCAR_CONST.TERM.ID.YEAR_9; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_7) { term = NEWCAR_CONST.TERM.ID.YEAR_8; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_6) { term = NEWCAR_CONST.TERM.ID.YEAR_7; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_5) {\n if (this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) {\n this.isResetMaintenance = true;\n this.nowCar = { ...this.nowCar, maintenancePlan: NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED };\n this.setIsShowSimulateAlert(true);\n }\n term = NEWCAR_CONST.TERM.ID.YEAR_6;\n }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_4) { term = NEWCAR_CONST.TERM.ID.YEAR_5; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_3) { term = NEWCAR_CONST.TERM.ID.YEAR_4; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_2) { term = NEWCAR_CONST.TERM.ID.YEAR_3; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_1) { term = NEWCAR_CONST.TERM.ID.YEAR_2; }\n Log.trace(`new Termr ID: ${this.nowCar.term}`);\n this.nowCar = { ...this.nowCar, term };\n }\n }\n\n @action\n decrementTerm() {\n this.decrementTermData();\n return true;\n }\n\n @action\n decrementTermData() {\n if (this.nowCar) {\n let term = 11;\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_1) { term = NEWCAR_CONST.TERM.ID.YEAR_1; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_2) { term = NEWCAR_CONST.TERM.ID.YEAR_1; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_3) { term = NEWCAR_CONST.TERM.ID.YEAR_2; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_4) { term = NEWCAR_CONST.TERM.ID.YEAR_3; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_5) { term = NEWCAR_CONST.TERM.ID.YEAR_4; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_6) {\n if (this.nowCar.maintenancePlan === NEWCAR_CONST.MAINTENANCE.PLAN.PLATINUM) {\n this.isResetMaintenance = true;\n this.nowCar = { ...this.nowCar, maintenancePlan: NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED };\n this.setIsShowSimulateAlert(true);\n }\n term = NEWCAR_CONST.TERM.ID.YEAR_5;\n }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_7) { term = NEWCAR_CONST.TERM.ID.YEAR_6; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_8) { term = NEWCAR_CONST.TERM.ID.YEAR_7; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_9) { term = NEWCAR_CONST.TERM.ID.YEAR_8; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_10) { term = NEWCAR_CONST.TERM.ID.YEAR_9; }\n if (this.nowCar.term === NEWCAR_CONST.TERM.ID.YEAR_11) { term = NEWCAR_CONST.TERM.ID.YEAR_10; }\n Log.trace(`new Termr ID: ${this.nowCar.term}`);\n this.nowCar = { ...this.nowCar, term };\n }\n }\n\n // グレード\n @action\n setGrade(grade: VehicleGrade) {\n if (!this.lastEntryId || !this.nowCar) {\n return;\n }\n\n // グレードより後の項目を初期化するために初期値を取得\n const newNowCar = createNewCarCollection(this.lastEntryId, NEWCAR_CONST.SIMULATION_PLAN.ID.ORIGINAL, this.nowGrades, this.nowMaintenanceType, undefined, grade);\n\n // グレードより前の項目はそのまま引き継ぐ\n newNowCar.term = this.nowCar.term;\n newNowCar.engine = this.nowCar.engine;\n newNowCar.kudou = this.nowCar.kudou;\n newNowCar.mission = this.nowCar.mission;\n\n newNowCar.gradeId = grade.id;\n newNowCar.gradeName = grade.name;\n\n this.nowCar = newNowCar;\n }\n\n // エンジン\n @action\n setEngine(engine: CustomerSelection['engine']) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, engine };\n }\n let grades = this.nowGrades;\n // エンジンタイプで絞り込み\n grades = grades.filter((grade) => (grade.engine || 'ガソリン') === NEWCAR_CONST.ENGINE.NAME[engine!]);\n const kudouList = grades.map((grade) => grade.kudou || '');\n if (!kudouList.includes('2WD') && kudouList.includes('4WD')) {\n this.setKudou(4); // 4WDのみの場合は4WDを選択\n } else if (kudouList.includes('2WD') && !kudouList.includes('4WD')) {\n this.setKudou(2); // 2WDのみの場合は2WDを選択\n }\n const missionTypeList = grades.map((grade) => getMissionType(grade.mission || ''));\n if (!missionTypeList.includes('AT') && missionTypeList.includes('MT')) {\n this.setMission('MT'); // MTのみの場合はMTを選択\n } else if (missionTypeList.includes('AT') && !missionTypeList.includes('MT')) {\n this.setMission('AT'); // ATのみの場合はATを選択\n }\n // グレードを初期化\n const newGrade = getDefaultGrade(this.nowGrades, this.nowCar);\n if (newGrade) {\n this.setGrade(newGrade);\n }\n }\n\n // 駆動\n @action\n setKudou(kudou: CustomerSelection['kudou']) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, kudou };\n }\n // グレードを初期化\n const newGrade = getDefaultGrade(this.nowGrades, this.nowCar);\n if (newGrade) {\n this.setGrade(newGrade);\n }\n }\n\n // ミッション\n @action\n setMission(mission: CustomerSelection['mission']) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, mission };\n }\n // グレードを初期化\n const newGrade = getDefaultGrade(this.nowGrades, this.nowCar);\n if (newGrade) {\n this.setGrade(newGrade);\n }\n }\n\n // Action:ボディカラー選択\n @action\n changeBodyColor(bodyColorId: string) {\n this.setBodyColor(bodyColorId);\n return bodyColorId;\n }\n\n @action\n setBodyColor(bodyColorId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, bodyColorId };\n Log.trace(`new Body Color ID: ${bodyColorId}`);\n this.isResetBodyColor = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン ボディカラー選択\n @action\n changeSimpleBodyColor(bodyColorId: string) {\n this.setSimpleBodyColor(bodyColorId);\n return bodyColorId;\n }\n\n @action\n setSimpleBodyColor(bodyColorId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, bodyColorId };\n Log.trace(`new Simple Body Color ID: ${bodyColorId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン ボディカラー選択\n @action\n changeRecommendBodyColor(bodyColorId: string) {\n this.setRecommendBodyColor(bodyColorId);\n return bodyColorId;\n }\n\n @action\n setRecommendBodyColor(bodyColorId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, bodyColorId };\n Log.trace(`new Recommend Body Color ID: ${bodyColorId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン ボディカラー選択\n @action\n changeRichBodyColor(bodyColorId: string) {\n this.setRichBodyColor(bodyColorId);\n return bodyColorId;\n }\n\n @action\n setRichBodyColor(bodyColorId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, bodyColorId };\n Log.trace(`new Simple Body Color ID: ${bodyColorId}`);\n }\n }\n\n // Action:カーナビ選択\n\n @action\n changeCarNavi(optionId: string) {\n this.setCarNavi(optionId);\n return optionId;\n }\n\n @action\n setCarNavi(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, carNavi: optionId };\n Log.trace(`new Option ID[carnavi]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n @action\n setCarNaviByGradeId(gradeId : number) {\n // グレードIDでカーナビを再選択\n const nowGrade = (this.nowGrades.find((grade) => (grade.id == gradeId)));\n if (nowGrade && nowGrade.options && searchCarStore.allOptionInfoList) {\n for (const targetOption of nowGrade.options) {\n const nowOptions = (searchCarStore.allOptionInfoList.find((option) => (option.id == targetOption.optionInfoId)));\n if (nowOptions && nowOptions.id && nowOptions.optionType === 'カーナビ') {\n this.changeCarNavi(nowOptions.id.toString());\n }\n }\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:カーナビ選択\n\n @action\n changeSimpleCarNavi(optionId: string) {\n this.setSimpleCarNavi(optionId);\n return optionId;\n }\n\n @action\n setSimpleCarNavi(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, carNavi: optionId };\n Log.trace(`new Simple Option ID[carnavi]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:カーナビ選択\n\n @action\n changeRecommendCarNavi(optionId: string) {\n this.setRecommendCarNavi(optionId);\n return optionId;\n }\n\n @action\n setRecommendCarNavi(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, carNavi: optionId };\n Log.trace(`new Recommend Option ID[carnavi]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:カーナビ選択\n\n @action\n changeRichCarNavi(optionId: string) {\n this.setRichCarNavi(optionId);\n return optionId;\n }\n\n @action\n setRichCarNavi(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, carNavi: optionId };\n Log.trace(`new Rich Option ID[carnavi]: ${optionId}`);\n }\n }\n\n // Action:ETC選択\n\n @action\n changeETC(optionId: string) {\n this.setETC(optionId);\n return optionId;\n }\n\n @action\n setETC(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, etc: optionId };\n Log.trace(`new Option ID[etc]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:ETC選択\n\n @action\n changeSimpleETC(optionId: string) {\n this.setSimpleETC(optionId);\n return optionId;\n }\n\n @action\n setSimpleETC(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, etc: optionId };\n Log.trace(`new Simple Option ID[etc]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:ETC選択\n\n @action\n changeRecommendETC(optionId: string) {\n this.setRecommendETC(optionId);\n return optionId;\n }\n\n @action\n setRecommendETC(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, etc: optionId };\n Log.trace(`new Recommend Option ID[etc]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:ETC選択\n\n @action\n changeRichETC(optionId: string) {\n this.setRichETC(optionId);\n return optionId;\n }\n\n @action\n setRichETC(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, etc: optionId };\n Log.trace(`new Rich Option ID[etc]: ${optionId}`);\n }\n }\n\n // Action:バックカメラ選択\n\n @action\n changeBackCamera(optionId: string) {\n this.setBackCamera(optionId);\n return optionId;\n }\n\n @action\n setBackCamera(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, backCamera: optionId };\n Log.trace(`new Option ID[backCamera]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:バックカメラ選択\n\n @action\n changeSimpleBackCamera(optionId: string) {\n this.setSimpleBackCamera(optionId);\n return optionId;\n }\n\n @action\n setSimpleBackCamera(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, backCamera: optionId };\n Log.trace(`new Simple Option ID[backCamera]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:バックカメラ選択\n\n @action\n changeRecommendBackCamera(optionId: string) {\n this.setRecommendBackCamera(optionId);\n return optionId;\n }\n\n @action\n setRecommendBackCamera(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, backCamera: optionId };\n Log.trace(`new Recommend Option ID[backCamera]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:バックカメラ選択\n\n @action\n changeRichBackCamera(optionId: string) {\n this.setRichBackCamera(optionId);\n return optionId;\n }\n\n @action\n setRichBackCamera(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, backCamera: optionId };\n Log.trace(`new Rich Option ID[backCamera]: ${optionId}`);\n }\n }\n\n // Action:フロアマット選択\n\n @action\n changeFloorMat(optionId: string) {\n this.setFloorMat(optionId);\n return optionId;\n }\n\n @action\n setFloorMat(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, floorMat: optionId };\n Log.trace(`new Option ID[floorMat]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:フロアマット選択\n\n @action\n changeSimpleFloorMat(optionId: string) {\n this.setSimpleFloorMat(optionId);\n return optionId;\n }\n\n @action\n setSimpleFloorMat(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, floorMat: optionId };\n Log.trace(`new Simple Option ID[floorMat]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:フロアマット選択\n\n @action\n changeRecommendFloorMat(optionId: string) {\n this.setRecommendFloorMat(optionId);\n return optionId;\n }\n\n @action\n setRecommendFloorMat(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, floorMat: optionId };\n Log.trace(`new Recommend Option ID[floorMat]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:フロアマット選択\n\n @action\n changeRichFloorMat(optionId: string) {\n this.setRichFloorMat(optionId);\n return optionId;\n }\n\n @action\n setRichFloorMat(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, floorMat: optionId };\n Log.trace(`new Rich Option ID[floorMat]: ${optionId}`);\n }\n }\n\n // Action:ドアバイザー選択\n\n @action\n changeDoorVisor(optionId: string) {\n this.setDoorVisor(optionId);\n return optionId;\n }\n\n @action\n setDoorVisor(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, doorVisor: optionId };\n Log.trace(`new Option ID[doorVisor]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:ドアバイザー選択\n\n @action\n changeSimpleDoorVisor(optionId: string) {\n this.setSimpleDoorVisor(optionId);\n return optionId;\n }\n\n @action\n setSimpleDoorVisor(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, doorVisor: optionId };\n Log.trace(`new Simple Option ID[doorVisor]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:ドアバイザー選択\n\n @action\n changeRecommendDoorVisor(optionId: string) {\n this.setRecommendDoorVisor(optionId);\n return optionId;\n }\n\n @action\n setRecommendDoorVisor(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, doorVisor: optionId };\n Log.trace(`new Recommend Option ID[doorVisor]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:ドアバイザー選択\n\n @action\n changeRichDoorVisor(optionId: string) {\n this.setRichDoorVisor(optionId);\n return optionId;\n }\n\n @action\n setRichDoorVisor(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, doorVisor: optionId };\n Log.trace(`new Rich Option ID[doorVisor]: ${optionId}`);\n }\n }\n\n // Action:希望ナンバー\n\n @action\n changeWantNo(optionId: string) {\n this.setWantNo(optionId);\n return optionId;\n }\n\n @action\n setWantNo(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, wantNo: optionId };\n Log.trace(`new Option ID[wantNo]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:希望ナンバー\n\n @action\n changeSimpleWantNo(optionId: string) {\n this.setSimpleWantNo(optionId);\n return optionId;\n }\n\n @action\n setSimpleWantNo(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, wantNo: optionId };\n Log.trace(`new Simple Option ID[wantNo]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:希望ナンバー\n\n @action\n changeRecommendWantNo(optionId: string) {\n this.setRecommendWantNo(optionId);\n return optionId;\n }\n\n @action\n setRecommendWantNo(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, wantNo: optionId };\n Log.trace(`new Recommend Option ID[wantNo]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:希望ナンバー\n\n @action\n changeRichWantNo(optionId: string) {\n this.setRichWantNo(optionId);\n return optionId;\n }\n\n @action\n setRichWantNo(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, wantNo: optionId };\n Log.trace(`new Rich Option ID[wantNo]: ${optionId}`);\n }\n }\n\n // Action:もらえるオプション\n\n @action\n changeWantCar(optionId: string) {\n this.setWantCar(optionId);\n return optionId;\n }\n\n @action\n setWantCar(optionId: string) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, wantCar: optionId };\n Log.trace(`new Option ID[wantCar]: ${optionId}`);\n this.isResetOption = false;\n }\n }\n\n // PC版料金シミュレーション用 シンプルプラン Action:もらえるオプション\n\n @action\n changeSimpleWantCar(optionId: string) {\n this.setSimpleWantCar(optionId);\n return optionId;\n }\n\n @action\n setSimpleWantCar(optionId: string) {\n if (this.simplePlanSelect) {\n this.simplePlanSelect = { ...this.simplePlanSelect, wantCar: optionId };\n Log.trace(`new Simple Option ID[wantCar]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 おすすめプラン Action:もらえるオプション\n\n @action\n changeRecommendWantCar(optionId: string) {\n this.setRecommendWantCar(optionId);\n return optionId;\n }\n\n @action\n setRecommendWantCar(optionId: string) {\n if (this.recommendPlanSelect) {\n this.recommendPlanSelect = { ...this.recommendPlanSelect, wantCar: optionId };\n Log.trace(`new Recommend Option ID[wantCar]: ${optionId}`);\n }\n }\n\n // PC版料金シミュレーション用 よくばりプラン Action:もらえるオプション\n\n @action\n changeRichWantCar(optionId: string) {\n this.setRichWantCar(optionId);\n return optionId;\n }\n\n @action\n setRichWantCar(optionId: string) {\n if (this.richPlanSelect) {\n this.richPlanSelect = { ...this.richPlanSelect, wantCar: optionId };\n Log.trace(`new Rich Option ID[wantCar]: ${optionId}`);\n }\n }\n\n // Action:メンテパック\n\n @action\n changeMaintenance(plan: NEWCAR_CONST.MAINTENANCE.PLAN) {\n this.setMaintenance(plan);\n return plan;\n }\n\n @action\n setMaintenance(plan: NEWCAR_CONST.MAINTENANCE.PLAN) {\n if (this.nowCar) {\n this.nowCar = { ...this.nowCar, maintenancePlan: plan };\n this.isResetMaintenance = false;\n Log.trace(`new Maintenance Plan ID: ${plan}`);\n }\n }\n\n // Action:条件をクリア\n\n @action\n clearSelection() {\n this.clearSelectionData();\n return true;\n }\n\n @action\n clearSelectionData() {\n // 対象車種を格納\n if (this.nowCar) {\n // // デフォルトを設定\n // this.nowCar.engine = undefined;\n const clearCar = {\n ...this.nowCar,\n gradeName: undefined,\n kudou: undefined,\n capacity: undefined,\n mission: undefined,\n removedSafetySystem: undefined,\n gradeId: undefined,\n bodyColorId: undefined,\n carNavi: undefined,\n etc: undefined,\n backCamera: undefined,\n floorMat: undefined,\n doorVisor: undefined,\n wantNo: undefined,\n maintenancePlan: NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED,\n masterNumber: searchCarStore.masterNumber,\n };\n this.nowCar = clearCar;\n this.wantCar = undefined;\n this.isResetBodyColor = false;\n this.isResetOption = false;\n this.isResetMaintenance = false;\n }\n }\n\n // 保存済みの料金シミュレーションをロード\n @action\n changeUserSelect(newSelection : CustomerSelection) {\n this.setUserSelect(newSelection);\n return newSelection;\n }\n\n @action\n setUserSelect(newSelection : CustomerSelection) {\n if (!newSelection.id) { return; }\n\n const nowUserSelect = (this.userSelect.find((selection) => newSelection.id == selection.id));\n\n if (nowUserSelect) {\n nowUserSelect.backCamera = newSelection.backCamera;\n nowUserSelect.bodyColorId = newSelection.bodyColorId;\n nowUserSelect.carNavi = newSelection.carNavi;\n nowUserSelect.dontHaveDoorVisor = newSelection.dontHaveDoorVisor;\n nowUserSelect.doorVisor = newSelection.doorVisor;\n nowUserSelect.engine = newSelection.engine;\n nowUserSelect.etc = newSelection.etc;\n nowUserSelect.floorMat = newSelection.floorMat;\n nowUserSelect.gradeId = newSelection.gradeId;\n nowUserSelect.gradeName = newSelection.gradeName;\n nowUserSelect.kudou = newSelection.kudou;\n nowUserSelect.maintenancePlan = newSelection.maintenancePlan;\n nowUserSelect.masterNumber = newSelection.masterNumber;\n nowUserSelect.mission = newSelection.mission;\n nowUserSelect.term = newSelection.term;\n nowUserSelect.wantCar = newSelection.wantCar;\n nowUserSelect.wantNo = newSelection.wantNo;\n } else {\n this.userSelect.push(newSelection);\n }\n }\n\n @computed\n get isOldSimulation():boolean {\n return !!((this.nowCar && this.nowCar.masterNumber && (this.nowCar.masterNumber != searchCarStore.masterNumber)));\n }\n\n // パラメータ部分を返却する\n @computed\n get urlParams() : string {\n let params = '';\n if (this.nowCar) {\n const selection = this.nowCar;\n let count = 1;\n params += 't=';\n params += (selection.term) ? selection.term : NEWCAR_CONST.TERM.ID.YEAR_11; // 期間\n if (selection.gradeId) { params += `&g=${selection.gradeId}`; count += 1; } // グレードID\n if (selection.bodyColorId) { params += `&b=${selection.bodyColorId}`; count += 1; } // ボディカラー\n if (selection.carNavi && selection.carNavi != '100001') { params += `&c=${selection.carNavi}`; count += 1; } // カーナビ\n if (selection.etc && selection.etc != '100003') { params += `&e=${selection.etc}`; count += 1; } // ETC\n if (selection.backCamera && selection.backCamera != '100002') { params += `&b2=${selection.backCamera}`; count += 1; } // バックカメラ\n if (selection.floorMat && selection.floorMat != '100004') { params += `&f=${selection.floorMat}`; count += 1; } // フロアマット\n if (selection.doorVisor && selection.doorVisor != '100006') { params += `&d=${selection.doorVisor}`; count += 1; } // ドアバイザー\n if (selection.dontHaveDoorVisor) { params += `&d2=${1}`; count += 1; } // ドアバイザー無しの車両\n if (selection.wantNo && selection.wantNo != '100005') { params += `&w=${selection.wantNo}`; count += 1; } // 希望ナンバー\n if (selection.wantCar && selection.wantCar != 'no') { params += `&w2=${selection.wantCar}`; count += 1; } // もらえるオプション\n if (selection.maintenancePlan) { params += `&m=${selection.maintenancePlan}`; count += 1; } // メンテナンスプラン\n if (selection.masterNumber) { params += `&m2=${selection.masterNumber}`; count += 1; } // マスタ番号\n params += `&c2=${count}`;\n }\n\n return params;\n }\n\n @action\n changeGrade(id : string) {\n this.setGrades(id);\n return id;\n }\n\n @action\n setGrades(id : string) {\n if (!id) { return {}; }\n\n if (searchCarStore.allCarDetails != undefined) {\n const resultCar = (searchCarStore.allCarDetails.find((car) => (car.id == id)));\n if (resultCar != undefined && resultCar.vehicleGrades != undefined) {\n this.nowGrades = resultCar.vehicleGrades;\n return resultCar.vehicleGrades;\n }\n }\n return {};\n }\n\n // パラメータから料金シミュレーションの値を設定\n @action\n changeUserSelectFromParam(data: {id : string, params : any}) {\n if (!data.id) { return {}; }\n\n const newSelection = new CustomerSelection();\n\n newSelection.id = data.id; // 車種ID\n newSelection.term = Number((data.params.t) ? data.params.t : NEWCAR_CONST.TERM.ID.YEAR_11); // 期間\n\n // グレードID\n const gradeId = data.params.g;\n if (gradeId) {\n if (searchCarStore.allCarDetails != undefined) {\n const resultCar = (searchCarStore.allCarDetails.find((car) => (car.id == data.id)));\n\n if (resultCar != undefined && resultCar.vehicleGrades != undefined) {\n const grades = resultCar.vehicleGrades;\n // グレードIDのが変更になったので、駆動以下を該当するものに変更する\n const targetGrade = (grades.find((grade) => (grade.id == gradeId)));\n\n if (targetGrade) {\n // グレードID\n if (targetGrade.id) {\n newSelection.gradeId = targetGrade.id;\n }\n // グレード名称\n if (targetGrade.name) {\n newSelection.gradeName = targetGrade.name;\n }\n // 駆動\n if (targetGrade.kudou) {\n newSelection.kudou = NEWCAR_CONST.KUDOU.NAME_TO_ID(targetGrade.kudou);\n }\n // ミッション\n if (targetGrade.mission) {\n newSelection.mission = getMissionType(targetGrade.mission);\n }\n // エンジン種別\n if (targetGrade.engine) {\n newSelection.engine = NEWCAR_CONST.ENGINE.NAME_TO_ID(targetGrade.engine);\n } else {\n newSelection.engine = NEWCAR_CONST.ENGINE.ID.IS_GAS;\n }\n // ボディカラー\n newSelection.bodyColorId = data.params.b;\n\n // カーナビ\n if (data.params.c) {\n newSelection.carNavi = data.params.c;\n } else {\n newSelection.carNavi = '100001';\n }\n // ETC\n if (data.params.e) {\n newSelection.etc = data.params.e;\n } else {\n newSelection.etc = '100003';\n }\n // バックカメラ\n if (data.params.b2) {\n newSelection.backCamera = data.params.b2;\n } else {\n newSelection.backCamera = '100002';\n }\n // フロアマット\n if (data.params.f) {\n newSelection.floorMat = data.params.f;\n } else {\n newSelection.floorMat = '100004';\n }\n // ドアバイザー\n if (data.params.d) {\n newSelection.doorVisor = data.params.d;\n } else {\n newSelection.doorVisor = '100006';\n }\n // ドアバイザー無しの車両\n if (data.params.d2) {\n newSelection.dontHaveDoorVisor = true;\n } else {\n newSelection.dontHaveDoorVisor = false;\n }\n // 希望ナンバー\n if (data.params.w) {\n newSelection.wantNo = data.params.w;\n } else {\n newSelection.wantNo = '100005';\n }\n // もらえるオプション\n if (data.params.w2) {\n newSelection.wantCar = data.params.w2;\n } else {\n newSelection.wantCar = 'no';\n }\n // メンテナンスプラン\n if (data.params.m) {\n newSelection.maintenancePlan = Number(data.params.m);\n } else {\n newSelection.maintenancePlan = NEWCAR_CONST.MAINTENANCE.PLAN.NOT_SELECTED;\n }\n // マスタ番号\n if (data.params.m2) {\n newSelection.masterNumber = data.params.m2;\n }\n }\n }\n }\n }\n\n this.setUserSelect(newSelection);\n return newSelection;\n }\n\n @action\n nowCarToUndefined() {\n this.nowCar = undefined;\n }\n\n // 車両IDとキャンペーンIDから車種に関する申込情報作成\n @action\n createCampaignBreakdownFromQuery(query: any): void {\n const KINTONE_MAX_LENGTH = 128;\n\n const defaultTerm = NEWCAR_CONST.TERM.ID.YEAR_11;\n const term = query.term || defaultTerm;\n const from = query.from || '';\n const carCondition = query.condition || '';\n const carSelect = query.carselect || '';\n const planDetails = query.plandetails || '';\n const cta = query.cta || '';\n const price = query.price || '';\n\n // 即納車の場合\n const isQuickDelivery = !!~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.DELIVERY);\n\n let plan = '';\n if (query.plan) {\n // planパラメータがセットされている場合は優先して採用\n plan = query.plan;\n } else {\n // TODO: コンテンツ制作側での対応が完了したらこちらの処理は不要になる\n\n // eslint-disable-next-line no-lonely-if\n if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.MAG_QUICK)) {\n // マガジン流入の場合\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.MAG_QUICK;\n } else if (isQuickDelivery) { // 即納車の場合(クエリに”deli”が含まれている)で、\n // クエリに\"lp\"が含まれていたら\n if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.LP)) {\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.LP_QUICK_DELIVERY;\n } else { // そうでなければ\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_QUICK_DELIVERY;\n }\n } else if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.LP)) { // ”deli”は含まれてないけど、\"lp\"がクエリに含まれていれば\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.LP_QUICK;\n } else if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.MAIN_LP)) { // ”deli”は含まれてないけど、\"mainLp\"がクエリに含まれていれば\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.MAIN_LP;\n } else if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.OTAMESHI)) {\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.OTAMESHI;\n } else if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.CONSULT)) {\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.CONSULT;\n } else if (~from.indexOf(NEWCAR_CONST.PLAN_PATTERN.QUERY.TRIAL)) {\n plan = NEWCAR_CONST.PLAN_PATTERN.NAME.TRIAL;\n }\n }\n\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'referrerPlan', payload: plan.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'referrerLpMonthlyPrice', payload: price.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'referrerLpLink', payload: from.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'referrerType', payload: from.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carCondition', payload: carCondition.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'carSelectStatus', payload: carSelect.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'planDetails', payload: planDetails.substring(0, KINTONE_MAX_LENGTH) });\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'cta', payload: cta.substring(0, KINTONE_MAX_LENGTH) });\n\n // optionTypesからfieldを取得する用途のオブジェクト\n interface OptionTypes {\n カーナビ: string,\n バックカメラ: string,\n ETC: string,\n フロアマット: string,\n 希望ナンバー: string,\n ドアバイザー: string,\n }\n const optionTypes: OptionTypes = {\n カーナビ: 'carNavi',\n バックカメラ: 'backCamera',\n ETC: 'etc',\n フロアマット: 'floorMat',\n 希望ナンバー: 'wantNo',\n ドアバイザー: 'doorVisor',\n };\n\n // メモ設定(ユーザー表示月額は一番下のグレードでオプションなしで計算)\n let memo = plan ? `|プラン:${plan}` : '';\n\n // 車両情報変更\n const carId = query.carid || query.carId;\n const car: CarDigest | undefined = searchCarStore.allCarDigests\n && searchCarStore.allCarDigests.find((c) => c.id__normalized.toString() === carId);\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'car', payload: car });\n\n const resultCar = searchCarStore.allCarDetails\n && searchCarStore.allCarDetails.find((c) => c.id.toString() === carId);\n if (resultCar !== undefined && resultCar.vehicleGrades !== undefined) {\n const newCar = createNewCarCollection(resultCar.id, NEWCAR_CONST.SIMULATION_PLAN.ID.SIMPLE, resultCar.vehicleGrades, NEWCAR_CONST.MAINTENANCE.TYPE.STANDARD);\n\n // グレードを設定\n const carGrades = resultCar && resultCar.vehicleGrades;\n\n // ミライースの場合、「2WD 5ドア L SA III 4人 660cc ガソリン DCVT」のグレードを利用する\n let gradeId = newCar.gradeId;\n if (carId === '10017') {\n const miraesGrade = resultCar.vehicleGrades.find((vehicleGrade) => vehicleGrade.id?.toString() === '71081');\n if (miraesGrade) {\n gradeId = miraesGrade.id;\n }\n }\n const carGrade = carGrades.find((grade) => grade.id === gradeId);\n\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'grade', payload: carGrade });\n\n // オプションの設定\n if (carGrade !== undefined && carGrade.options !== undefined) {\n // optionsをforで取り回してインデックスではなくoptionTypeでオプションを特定する\n for (const option of carGrade.options) {\n // optionTypeを取得するためにoptionInfoIdからoptionInfoを紐づける\n const optionInfos: OptionInfo[] = searchCarStore.allOptionInfoList || [];\n const optionInfo = optionInfos.find((info) => info.id === option.optionInfoId);\n if (!optionInfo) {\n throw new Error('No data related to optionInfo in detail.json');\n }\n if (optionInfo.optionType === undefined) {\n throw new Error('No data related to optionType in detail.json');\n }\n if (option.isStandard) {\n const optionFees: OptionFee[] = searchCarStore.allOptionFeeList || [];\n const optionFee = optionFees.find((fee) => fee.id === option.optionFeeId) as { [key: string]: number };\n if (!optionFee) {\n throw new Error('No data related to optionFee in detail.json');\n }\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: optionTypes[optionInfo.optionType as keyof typeof optionTypes],\n payload: {\n id: option.id,\n name: optionInfo.name,\n isStandard: option.isStandard,\n leasingFee: optionFee[`leasingFee${term * 12}`],\n supportFee: optionFee[`supportFee${term * 12}`],\n },\n });\n } else {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: optionTypes[optionInfo.optionType as keyof typeof optionTypes], payload: undefined });\n memo += `|${optionInfo.optionType}:未選択`;\n }\n }\n }\n\n // ボディカラーの設定\n if (carGrade && carGrade.bodyColors) {\n const bodyColorList = selectedGradeBodyColorList(carGrade);\n if (bodyColorList.length === 0) {\n throw new Error('No body color was found for the specified grade.');\n }\n const bodyColor = bodyColorList[0];\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'bodyColor',\n payload: {\n id: bodyColor.id,\n name: bodyColor && bodyColor.bodyColorName,\n leasingFee: bodyColor && bodyColor.leasingFee,\n supportFee: bodyColor && bodyColor.supportFee,\n },\n });\n }\n\n // もらえるオプション\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'wantCar', payload: { price: getFreeTransferDiffLeasingFeeTaxedPrice(carGrade, term) } });\n memo += '|もらえるオプション:希望';\n }\n\n // 賃貸期間を設定\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'term', payload: term });\n\n // メンテナンスプランを設定\n if (car && query.m) {\n entryBreakdownManagerStore.updateEntryBreakdown({\n field: 'maintenancePlan',\n payload:\n NEWCAR_DEFINE.MAINTENANCE.PLANS(\n car.maintenanceType,\n term,\n )[query.m],\n });\n memo += `|メンテ:${NEWCAR_CONST.MAINTENANCE.PLAN_SHORT_NAME(Number(query.m))}`;\n } else {\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'maintenancePlan', payload: undefined });\n memo += '|メンテ:未選択';\n }\n\n memo += '|グレード:自動割当';\n memo += '|ボディカラー:未選択';\n memo += `|賃貸期間:${query.term ? `${query.term}年` : '未設定'}`;\n memo += `|流入経路:${from}|クイック審査:${car && car.name}|ユーザー表示月額:${query.price}|車種:選択済`;\n\n entryBreakdownManagerStore.updateEntryBreakdown({ field: 'memo', payload: memo });\n entryBreakdownManagerStore.saveToSessionStorage();\n }\n}\n\nexport const simulationManagerStore = new SimulationManagerStore();\n"],"sourceRoot":""}