{"version":3,"sources":["webpack:///./src/app/utils/loadExternal.js","webpack:///./src/app/utils/googleGlobalSiteTag.js","webpack:///./src/store/modules/addresses/actions.js","webpack:///./src/store/modules/addresses/types.js","webpack:///./src/store/modules/addresses/getters.js","webpack:///./src/store/modules/addresses/index.js","webpack:///./src/store/modules/addresses/mutations.js","webpack:///./src/store/modules/addresses/state.js","webpack:///./src/store/modules/bundles/actions.js","webpack:///./src/store/modules/bundles/types.js","webpack:///./src/store/modules/bundles/index.js","webpack:///./src/store/modules/bundles/getters.js","webpack:///./src/store/modules/bundles/mutations.js","webpack:///./src/store/modules/bundles/state.js","webpack:///./src/store/modules/customer/actions.js","webpack:///./src/store/modules/customer/types.js","webpack:///./src/store/modules/customer/index.js","webpack:///./src/store/modules/customer/getters.js","webpack:///./src/store/modules/customer/mutations.js","webpack:///./src/store/modules/customer/state.js","webpack:///./src/store/modules/modules/index.js","webpack:///./src/store/modules/modules/actions.js","webpack:///./src/store/modules/modules/types.js","webpack:///./src/store/modules/modules/getters.js","webpack:///./src/store/modules/modules/mutations.js","webpack:///./src/store/modules/modules/state.js","webpack:///./src/store/modules/packages/index.js","webpack:///./src/store/modules/packages/actions.js","webpack:///./src/store/modules/packages/types.js","webpack:///./src/store/modules/packages/getters.js","webpack:///./src/store/modules/packages/mutations.js","webpack:///./src/store/modules/packages/state.js","webpack:///./src/store/modules/cart/actions.js","webpack:///./src/store/modules/cart/types.js","webpack:///./src/store/modules/cart/getters.js","webpack:///./src/store/modules/cart/index.js","webpack:///./src/store/modules/cart/mutations.js","webpack:///./src/store/modules/cart/state.js","webpack:///./src/store/modules/movel/index.js","webpack:///./src/store/modules/movel/actions.js","webpack:///./src/store/modules/movel/types.js","webpack:///./src/store/modules/movel/getters.js","webpack:///./src/store/modules/movel/mutations.js","webpack:///./src/store/modules/movel/state.js","webpack:///./src/store/modules/offers/index.js","webpack:///./src/store/modules/offers/actions.js","webpack:///./src/store/modules/offers/types.js","webpack:///./src/store/modules/offers/getters.js","webpack:///./src/store/modules/offers/mutations.js","webpack:///./src/store/modules/offers/state.js","webpack:///./src/store/modules/simulation/index.js","webpack:///./src/store/modules/simulation/actions.js","webpack:///./src/store/modules/simulation/types.js","webpack:///./src/store/modules/simulation/getters.js","webpack:///./src/store/modules/simulation/mutations.js","webpack:///./src/store/modules/simulation/state.js","webpack:///./src/store/modules/timeline/index.js","webpack:///./src/store/modules/timeline/actions.js","webpack:///./src/store/modules/timeline/types.js","webpack:///./src/store/modules/timeline/getters.js","webpack:///./src/store/modules/timeline/mutations.js","webpack:///./src/store/modules/timeline/state.js","webpack:///./src/store/modules/errors/index.js","webpack:///./src/store/modules/errors/actions.js","webpack:///./src/store/modules/errors/types.js","webpack:///./src/store/modules/errors/getters.js","webpack:///./src/store/modules/errors/mutations.js","webpack:///./src/store/modules/errors/state.js","webpack:///./src/store/modules/overlay/index.js","webpack:///./src/store/modules/overlay/actions.js","webpack:///./src/store/modules/overlay/types.js","webpack:///./src/store/modules/overlay/getters.js","webpack:///./src/store/modules/overlay/mutations.js","webpack:///./src/store/modules/overlay/state.js","webpack:///./src/store/modules/prompt/index.js","webpack:///./src/store/modules/prompt/actions.js","webpack:///./src/store/modules/prompt/types.js","webpack:///./src/store/modules/prompt/getters.js","webpack:///./src/store/modules/prompt/mutations.js","webpack:///./src/store/modules/prompt/state.js","webpack:///./src/store/modules/promptXmas/index.js","webpack:///./src/store/modules/promptXmas/actions.js","webpack:///./src/store/modules/promptXmas/types.js","webpack:///./src/store/modules/promptXmas/getters.js","webpack:///./src/store/modules/promptXmas/mutations.js","webpack:///./src/store/modules/promptXmas/state.js","webpack:///./src/store/modules/relationships/index.js","webpack:///./src/store/modules/relationships/actions.js","webpack:///./src/store/modules/relationships/types.js","webpack:///./src/store/modules/relationships/getters.js","webpack:///./src/store/modules/relationships/mutations.js","webpack:///./src/store/modules/relationships/state.js","webpack:///./src/store/modules/fis/actions.js","webpack:///./src/store/modules/fis/types.js","webpack:///./src/store/modules/fis/getters.js","webpack:///./src/store/modules/fis/index.js","webpack:///./src/store/modules/fis/mutations.js","webpack:///./src/store/modules/fis/state.js","webpack:///./src/store/index.js","webpack:///./src/plugins/vuex.js","webpack:///./src/plugins/axios.js","webpack:///./src/plugins/idle-vue.js","webpack:///./src/routes/index.js","webpack:///./src/plugins/vue-router.js","webpack:///./src/plugins/vuex-router-sync.js","webpack:///./src/plugins/vue-mq.js","webpack:///./src/plugins/vue-body-class.js","webpack:///./src/locale/index.js","webpack:///./src/locale/pt/index.js","webpack:///./src/plugins/vue-i18n.js","webpack:///./src/plugins/vue-select.js","webpack:///./src/plugins/vue-tippy.js","webpack:///./src/plugins/vuelidate.js","webpack:///./src/plugins/vue-print-nb.js","webpack:///./src/app/components/_register.js","webpack:///./src/app/layouts/_register.js","webpack:///./src/app/mixins/global/error.js","webpack:///./src/app/mixins/global/router.js","webpack:///./src/app/mixins/global/tracker.js","webpack:///./src/app/mixins/global/_register.js","webpack:///./src/app/mixins/ie.js","webpack:///src/App.vue","webpack:///./src/App.vue?d2d5","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/app/mixins/determineActivePrice.js","webpack:///./src/locale/pt/modules/number.json","webpack:///./src/locale/pt/lobby.json","webpack:///./src/locale/pt/endings/subscribe.json","webpack:///./src/locale/pt/commons.json","webpack:///./src/locale/pt/summary.json","webpack:///./src/locale/pt/coverage.json","webpack:///./src/locale/pt/header.json","webpack:///./src/app/mixins/offers.js","webpack:///./src/locale/pt/errors.json"],"names":["loadExternal","url","implementationCode","location","arguments","length","undefined","document","body","scriptTag","createElement","src","onload","onreadystatechange","appendChild","baseUrl","__webpack_exports__","init","id","gtag","args","_window$dataLayer","window","dataLayer","push","apply","toConsumableArray_default","Date","setup","emitConversion","idWithSuffix","value","send_to","currency","actions","resetAddress","_ref","commit","setAddress","_ref5","payload","Technology","coverage","setAddressValidity","_ref4","setSuggestions","_ref2","setVisibility","_ref3","setNotCoveredAddress","_ref6","setTimesInCoverage","_ref7","setCoverageType","_ref8","addresses_getters","getSuggestions","state","suggestions","getValidity","isValid","getVisibility","isVisible","getAddressValidity","getSelectedAddress","selectedAddress","getSelectedAddressFormatted","addressFormatted","StreetName","PostalCode","CityDescription","getNotCoveredAddress","notCovered","getTimesInCoverage","timesInCoverage","getCoverageType","coverageType","namespaced","getters","mutations","_RESET_ADDRESS$SET_AD","defineProperty_default","data","zipCode","locality","street","doorNumber","bundles_actions","setContent","getBundle","packageName","name","_state$content$filter","content","filter","item","package","slicedToArray_default","getContent","customer_actions","setForm","getForm","cloneDeep_default","form","getModule","getModuleMeta","meta","getModuleComponents","components","initialize","dispatch","rootGetters","packageBlueprint","_package","keys_default","modules","forEach","moduleName","$module","moduleBlueprint","_components","componentName","assign_default","extends_default","_subcomponents","subcomponentName","children","_children","childName","_child","grandChildName","$grandChild","grandChildBlueprint","_grandChild","grandChildComponentName","$grandGrandChild","grandGrandChildBlueprint","_grandGrandChild","grandGrandChildComponentName","config","extra","_extra","extraName","$extra","extraBlueprint","features","enableGoogleGlobalSiteTag","googleGlobalSiteTag","enableCustomCoverageType","customCoverageType","root","getAvailablePackages","available","getPackagesExpiry","expiry","getPackage","indexOf","deconstructedName","split","subPackageName","getPackageMeta","getPackageConfig","getConfig","getActivePackageConfig","rootState","getActivePackageMeta","getPackageComponents","cart_actions","hasBundle","update","path","quantity","uniqueInNamespace","provenance","resetNamespace","namespace","setPreviousContent","formatTime","time","toString","padStart","isOffer","_path","rootOffers","offer","subject","target","activeComponentItemsInNameSpacePrice","searchString","total","startsWith","activePrice","determineActivePrice","price","activeItemsInNamespace","activeItemsInNamespaceListingPrice","activeValue","listingValue","activeItemsInNamespacePrice","activeItemsLength","areAllPathsActive","paths","Array","isArray","size","isActive","subPath","isPathActive","priceObj","conditionalPrices","type","testConditionalPrice","_priceObj$filter","determineNonFidelizedPrice","_priceObj$filter3","condition","nonFidelizedConditionalPrice","_priceObj$filter5","getActiveItems","c","getBaseServicesPrice","lodash_default","a","isNil","fis","getPathPrice","getContentServices","service","map","serviceCode","code","serviceCodeDescription","description","getCoverageString","activeCoverage","title","cart","getItemQuantity","_state$content$filter11","getMovelAdicionaisServicesPrice","activeMovelItem","getMovelServicePrice","getParsedContent","activeItems","parsedCart","totals","key","strikedValue","installation","payment","portability","fidelization","invoice","offers","isListable","parsedPrice","included","isResumable","basePrice","finalPrice","style","old","toFixed","replace","recurring","activeItemQuantity","includes","activeItem","contents","contentItem","namespaceExists","permanenciaItem","faturaItem","simulationPackage","freeString","getPath","activeOffers","silentOnStrikedPrice","offersContents","emailDescription","discountOffers","validDiscountOffers","activeDiscountOffers","family","discountOffersContents","totalDiscount","reduce","sum","x","campaignValue","disc","faturaDiscountFiltered","el","i","totalWithDiscount","join","_state$content$filter13","getPathNonFidelizedPrice","_state$content$filter17","_state$content$filter15","getPreviousContent","previousContent","getStringifiedContent","sid","simulation","date","getHours","getMinutes","getSeconds","track","getStringifiedContentAll","getTotalCardsValue","activeCards","getTrackingContent","packageContents","packageModules","packageConfig","packageMeta","trackingContent","enableAnalyticsLeadWithPackage","appNowo","_state$content$filter3","box","channelsContent","parent","_state$content$filter5","rf","_state$content$filter7","rm","_state$content$filter9","_state$content$filter19","isPathBeginningWithActive","_state$content$filter21","isPathDisabled","_state$content$filter23","disabled","isPathHidden","_state$content$filter25","hidden","isPathInCart","get_default","isPathSuspended","_state$content$filter27","suspended","some","conditionsLeft","find","_INIT$RESET_NAMESPACE","entry","relationships","block","blockPath","endsWith","relativeBlockPath","exclude","excludePath","relativeExcludePath","hide","hidePath","relativeHidePath","include","includePath","show","showPath","relativeshowPath","relevantRelationships","relationship","conditions","conditionPath","subPeers","subItem","peerItem","dependencies","dependencyPath","relativeDependencyPath","includedInOtherItems","cartItem","setPortability","setAddicionalNumbers","updateAdditionalPlanValue","updateMovelNumberPortabilityInfo","setAvailableNumbers","setChosenNumber","setPaymentEntity","setPaymentRef","setPaymentTotal","_ref9","setLastSessionId","_ref10","getHasNowoNumber","addicionalNumbers","number","getPortability","getAddicionalNumbers","getAvailableNumbers","availableNumbers","getChosenNumber","chosenNumber","getPaymentEntity","paymentInfo","entity","getPaymentRef","ref","getPaymentTotal","getLastSessionId","lastSessionId","getPortabilityInfo","portabilityInfo","getPortabilityInfoProvider","provider","_SET_PORTABILITY$SET_","position","findIndex","plan","phone","isCVPValid","isOTPValid","otpTries","cvp","sentSMS","otp","isNumberValid","showDate","parentPackage","scope","getValidOffers","isOfferValid","getValidDiscountOffers","getValidDiscountOffersValue","getValidDiscountLoudOffers","getValidDiscountLoudOffersValue","getValidDiscountSilentOffers","getValidDiscountSilentOffersValue","getValidExternalOffers","getValidInternalOffers","getValidPercentageOffers","getValidPercentageOffersValue","satte","isOfferVoid","_offer","void","every","itemPath","subItemPath","isExcluding","isWildcard","computedPath","required","isPathAnOffer","setActivePackage","activePackage","setLeaveIntention","leaveIntention","setContactIntention","setScroll","hasScroll","setStatus","status","setId","setVersion","version","setExternal","setPackage","setPrePackage","setTrackingPackage","_ref11","_ref12","setSettingsName","_ref13","setFrameVisibility","_ref14","setFrameUrl","_ref15","setAuth","_ref16","setAuthToken","_ref17","setSalesGateway","_ref18","setMode","_ref19","setReferral","_ref20","setEditable","_ref21","setAsBundle","_ref22","setPortableInfo","_ref23","getActivePackage","getLeaveIntention","getContactIntention","contactIntention","getByPath","getModuleExtra","getModuleChildren","getModuleConfig","getStatus","getHasScroll","getId","getVersion","getExternal","external","getPrePackage","prePackage","getTrackingPackage","trackingPackage","getSettingsName","settingsName","getSimulationType","simulationType","getFrameVisibility","isFrameVisible","getFrameUrl","frameUrl","getAuth","authed","getAuthToken","authToken","getSalesGateway","salesGateway","getMode","mode","getReferral","referral","getEditable","editable","getBundled","isBundle","getPortableInfo","isInfoVisible","_SET_ACTIVE$SET_LEAVE","intention","activePackageConfig","hideModules","items","disablePackageStartPage","handle","navigatable","display","childrenNotNavigatable","setBlocked","setCurrent","setNavigation","getBlocked","blocked","getCurrent","current","getItems","getItemsLength","_SET_CURRENT$SET_NAVI","setShowError","setErrorMessage","setErrorTitle","setRedirectPageOnError","setRedirectPageOnErrorMessage","setBlockEmailSubmission","getShowError","showError","getErrorMessage","errorMessage","getErrorTitle","errorTitle","getRedirectPageOnError","redirectPageOnError","getRedirectPageOnErrorMessage","redirectPageOnErrorMessage","getBlockEmailSubmission","blockEmailSubmission","_SET_SHOW_ERROR$SET_E","setTitle","getTitle","_SET_CONTENT$SET_TITL","reset","_RESET$SET_CONTENT$SE","_SET_CONTENT$SET_VISI","fis_actions","setModalVisibility","setUser","MOBILE_NAMESPACES","generateItem","_namespace","_title","_rootGetters","_extraItems","_includePath","mergeWith","mobileItem","mobileFixoItem","m","chosenFixoMobile","fidelization15gbCampaignDiscount","mobile15Gg","title_description","mergeableItems","mergedItems","_items","generateSoftExtraItems","getAdditionalServices","additionItems","activeMobileItem","additionalServices","toLowerCase","getHiddenAdditionalServices","getTotalHiddenAdditionalServicesPrice","absolute","getBaseServices","getAdditionalMobileServices","getTotalAdditionalServicesPrice","filteredAdditionalItems","isUnaccountable","mobileBaseItems","mobileBaseChosen","getTotalAdditionalServicesPriceWithPeriodicOffer","hasPeriodicPrice","isPeriodic","getTotalBaseServicesPrice","filteredItems","mobileItems","getTotalMobileBaseServicesPrice","getTotalBaseServicesPriceWithoutDiscounts","getTotalPrice","getTotalPriceWithoutDiscounts","getTotalAdditionalNonFidelizedServicesPrice","getTotalNonFidelizedBaseServicesPrice","getTotalNonFidelizedMobilBaseServicesPrice","nonFidelizedPrice","getTotalNonFidelizedPrice","generateFidelizedOffers","maxInstallation","totalBasePrice","totalBaseNonFidelizedPrice","totalAdditionalNonFidelizedPrice","hasPeriodicOffer","mobileCampaign","mappedDiscountOffers","v","hasPeriodicOfferValue","hasExtraOffer","hasExtraOfferVal","hasExtraOfferPrice","chosenMobile","chosenDiscount","chosenDiscountValue","validOffer","validOffersValue","allNonPeriodicOffers","mobileCampaignFIXO","getTotalAdditionalOldServicesPrice","CURRENCY","faturaDiscount","faturaDiscountText","movelDiscount","concat","totalFidelizationPriceDiff","feCost","losingDiscount","extraValue","discountFid","totalOffer","additionalServicesValue","fidelizationDiscount","movelAdicionaisDiscount","mensalityOffers","category","mensalityOffersQuantity","extraMobileCards","channelsOffers","channelsOffersQuantity","landlinePortPath","mobilePortPath","mobilePlanPortPath","isLandlinePortActive","isMobilePortActive","isMobilePlanPortActive","totalPorts","totalPortValue","generateNonFidelizedOffers","validOffers","hasCampaign","offerDetail","generateContent","email","taxId","address","isChargesOption","isMsaOption","serviceName","generatedAdditionalItems","isIpTv","additionalItems","additionalMobileItems","set_default","campaignDuration","hasMobileCampaign","additionalMobileCard","multiple_selection_title","priceMobileAdditional","priceMobileAdditionalWithoutDiscount","priceOldMobileAdditional","has","noFidelization","priceWithoutDiscount","discount","label","add","mobileCard","itemName","price_title_multiple","price_title","priceWithoutDiscounts","getters_generateAdditionalItems","generatedServiceName","includedItems","tv","internet","landline","mobile","generateIncludedItems","additionalDescriptions","additionalMobile","replaceAll","getAdditionalServicesDescription","internetServiceCharges","movel","posPago","carregamentos","speed","download","max","upload","min","getInternetServiceCharges","telephoneServiceCharges","telefone","getTelephoneServiceCharges","totalPrice","totalPriceWithoutDiscount","ddCost","totalLabel","additionalsItems","additionItemsOld","chosenPrice","chosenMobilePriceWithDiscount","validSilentOffers","validSilentOffersValue","validOffersDiscount","mobile15Gb","fixoChosenMobilePriceWithDiscount","fixoChosenMobilePriceOld","mobile15GbPrice","additionalServicesPrice","periodicPrice","totalNonFidPrice","priceWithoutPeriodicOffer","additionalOldPrice","fidelizationFlashDiscount","fidelizationFlashDiscountValue","fixo","getTotals","NIF","isBillingAddress","structure","simulationId","isCharges","isMsa","user","services","chosenBasePrice","chosenPriceWithDiscount","hasFidelization","chosenBasePriceOld","discAfterPeriod","chosenPriceWithoutOffers","priceWithouOffers","totalDiscountWithoutOffers","chosenHasMobileCampaign","mobile15GbCampaign","chosenMobilePriceOld","totalStandardPrice","totalBasePriceWithoutMobile","periodicPriceUntilFidelization","generateIncludedTotal","additional","nonRecurringTotal","totalsExtraItems","requires","showNonRecurringPriceFIS","generateNonRecurringTotal","nonFidelization","getModalVisibility","isModalVisible","getTotalAdditionalMovelServicesPrice","_SET_MODAL_VISIBILITY","excludeFromBaseServices","vue_esm","use","vuex_esm","Store","addresses","bundles","customer","timeline","packages","modules_packages","errors","overlay","prompt","modules_prompt","promptXmas","modules_relationships","strict","ERROR_SIMULATOR_CUSTOMER_WITH_DEBT","axios_default","defaults","baseURL","headers","common","Accept","interceptors","response","store","error","Data","Otp","message","UiMessage","Code","errorResponse","promise_default","reject","$http","Object","defineProperty","prototype","get","build_default","eventEmitter","idleTime","keepTracking","routes","redirect","component","__webpack_require__","e","then","bind","bodyClass","beforeEnter","to","from","next","activePackageConfigFeatures","disableCoverageVerification","params","showTimeline","direction","isChan90Active","activeItemsInTv","nextStepInt","nextStep","vue_router_esm","router","scrollBehavior","savedPosition","y","beforeEach","matched","query","afterEach","sync","vue_mq_es","breakpoints","sm","md","lg","Infinity","dist_default","locale","pt","commons","commons_default","coverage_default","errors_default","header","header_default","number_default","endings","subscribe","subscribe_default","lobby","lobby_default","summary","summary_default","vue_i18n_esm","i18n","fallbackLocale","messages","vue_select_default","vue_tippy_default","arrow","placement","inertia","animation","duration","delay","theme","distance","interactive","lib_default","index_es5_default","global_error","computed","$gm_error_message","methods","$gm_error_setMessage","$gm_error_setShow","$gm_error_show","this","global_router","$gm_router_coverage","$gm_router_package","$gm_router_packageRoot","$gm_router_push","$router","$gm_router_replace","$gm_router_goBack","route","mixins","simulationTrackingPackage","cartStringifiedContent","globalConfig","$gm_tracker_trackMSA","href","event","page_title","step_name","page_url","step_number","step","class","simulator_class","subClass","simulator_sub_class","quantity_plans_added","fidelity_months","electronicReceipt","electronic_receipt","directDebit","direct_debit","ecommerce","transaction_id","qty_1st_data_plan","qty_2nd_data_plan","qty_3rd_data_plan","qty_4th_data_plan","userData","user_data","$gm_tracker_trackAction","origin","$route","resolvePath","pathname","event_category","event_action","event_label","$gm_tracker_trackPageView","pathSuffix","event_path","$gm_tracker_trackPageviewSite","_ref$name","pathNamespace","analyticsNamespace","basePath","titleNamespace","page_name","$gm_tracker_trackFormSubmission","formname","$gm_tracker_trackSummary","$gm_tracker_getContext","event_value","$gm_tracker_getPrice","context","_this","Math","round","validDiscountLoudOffersValue","$fb_tracker_trackSubscribe","fbq","predicted_ltv","mixin","tracker","App","$m_ie_isLegacy","documentMode","mounted","addEventListener","preventDefault","oncontextmenu","selectortype_template_index_0_src_App","render","_vm","_h","$createElement","_c","_self","attrs","$mq","device","ie","_e","staticRenderFns","src_App","normalizeComponent","productionTip","template","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default","__WEBPACK_IMPORTED_MODULE_1_vuex__","module","exports","card","newNumber","chooseYourNumber","portabilityRequest","portabilityLabel","insertTheNumberToKeep","welcome","sellingPoint","beforeYouStart","validUntil","start","taxIncluded","taxNotIncluded","noIbanAdded","noPortabilityAdded","noIbanNorPortabilityAdded","continue","previous","returnToSummary","checkCoverage","subTitle","placeholder","cantFindAddress","returnToSimulator","c2c","shortTitle","tagLine","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_extends___default","__WEBPACK_IMPORTED_MODULE_2_vuex__","validDiscountLoudOffers","validDiscountSilentOffers","validDiscountSilentOffersValue","validExternalOffers","validInternalOffers","validPercentageOffers","validPercentageOffersValue","validDiscountOffersValue","totalMobileBaseServicesPrice","totalNonFidelizedMobilBaseServicesPrice","totalHiddenAdditionalServicesPrice","movelAdicionaisServicesPrice","hasEligibleOffers","_this2","eligibleOffers","isPathRequiredInOffer","isOfferEligible","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default","acumulatedOfferValue","unshift","splice","silentOnCart","_this3","isOfferVoidable","_this4","_this5","missingRequiredItems","missingPaths","missingRequiredItem","getEligibleOffers","_this6","silentOnChoice","invalid","invalidEmail","invalidNumber","shouldChooseDifferentEmail"],"mappings":"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","file":"static/js/main.7a4abf396a3a898033d1.js","sourcesContent":["export default function (url, implementationCode, location = document.body) {\r\n const scriptTag = document.createElement('script');\r\n scriptTag.src = url;\r\n\r\n scriptTag.onload = implementationCode;\r\n scriptTag.onreadystatechange = implementationCode;\r\n\r\n location.appendChild(scriptTag);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/utils/loadExternal.js","import loadExternal from './loadExternal';\r\n\r\nconst baseUrl = 'https://www.googletagmanager.com/gtag/js?id=';\r\n\r\nfunction setup(id) {\r\n window.dataLayer = window.dataLayer || [];\r\n function gtag(args) {\r\n window.dataLayer.push(...args);\r\n }\r\n\r\n window.gtag = gtag;\r\n\r\n gtag('js', new Date());\r\n\r\n gtag('config', id);\r\n}\r\n\r\nfunction init(id) {\r\n loadExternal(`${baseUrl}${id}`, setup(id), document.body);\r\n}\r\n\r\nfunction emitConversion(idWithSuffix, value) {\r\n window.gtag('event', 'conversion', {\r\n send_to: idWithSuffix,\r\n value,\r\n currency: 'EUR'\r\n });\r\n}\r\n\r\nexport default {\r\n init,\r\n emitConversion\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/utils/googleGlobalSiteTag.js","import * as types from './types';\r\n\r\nexport const resetAddress = ({ commit }) => {\r\n commit(types.RESET_ADDRESS);\r\n};\r\n\r\nexport const setSuggestions = ({ commit }, payload) => {\r\n commit(types.SET_SUGGESTIONS, payload);\r\n};\r\n\r\nexport const setVisibility = ({ commit }, payload) => {\r\n commit(types.SET_VISIBILITY, payload);\r\n};\r\n\r\nexport const setAddressValidity = ({ commit }, payload) => {\r\n commit(types.SET_ADDRESS_VALIDITY, payload);\r\n};\r\n\r\nexport const setAddress = ({ commit }, payload) => {\r\n if (payload.Technology) {\r\n let coverage;\r\n\r\n switch (payload.Technology) {\r\n case 'CoverageDST':\r\n coverage = 'dst';\r\n break;\r\n case 'CoverageSTV':\r\n coverage = 'stv';\r\n break;\r\n case 'CoverageFTTHNowo':\r\n coverage = 'ftth';\r\n break;\r\n default:\r\n coverage = 'nowo';\r\n }\r\n\r\n commit(types.SET_COVERAGE_TYPE, coverage);\r\n }\r\n\r\n commit(types.SET_ADDRESS, payload);\r\n};\r\n\r\nexport const setNotCoveredAddress = ({ commit }, payload) => {\r\n commit(types.SET_NOT_COVERED_ADDRESS, payload);\r\n};\r\n\r\nexport const setTimesInCoverage = ({ commit }, payload) => {\r\n commit(types.SET_TIME_IN_COVERAGE, payload);\r\n};\r\n\r\nexport const setCoverageType = ({ commit }, payload) => {\r\n commit(types.SET_COVERAGE_TYPE, payload);\r\n};\r\n\r\nexport default {\r\n resetAddress,\r\n setAddress,\r\n setAddressValidity,\r\n setSuggestions,\r\n setVisibility,\r\n setNotCoveredAddress,\r\n setTimesInCoverage,\r\n setCoverageType\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/addresses/actions.js","export const RESET_ADDRESS = 'RESET_ADDRESS';\r\nexport const SET_ADDRESS = 'SET_ADDRESS';\r\nexport const SET_ADDRESS_VALIDITY = 'SET_ADDRESS_VALIDITY';\r\nexport const SET_SUGGESTIONS = 'SET_SUGGESTIONS';\r\nexport const SET_VISIBILITY = 'SET_VISIBILITY';\r\nexport const SET_NOT_COVERED_ADDRESS = 'SET_NOT_COVERED_ADDRESS';\r\nexport const SET_TIME_IN_COVERAGE = 'SET_TIME_IN_COVERAGE';\r\nexport const SET_COVERAGE_TYPE = 'SET_COVERAGE_TYPE';\r\n\r\nexport default {\r\n SET_ADDRESS,\r\n SET_ADDRESS_VALIDITY,\r\n SET_SUGGESTIONS,\r\n SET_VISIBILITY,\r\n SET_NOT_COVERED_ADDRESS,\r\n SET_TIME_IN_COVERAGE,\r\n SET_COVERAGE_TYPE\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/addresses/types.js","export const getSuggestions = state => state.suggestions;\r\nexport const getVisibility = state => state.isVisible;\r\nexport const getAddressValidity = state => state.isValid;\r\nexport const getSelectedAddress = state => state.selectedAddress;\r\nexport const getSelectedAddressFormatted = (state) => {\r\n const selectedAddress = state.selectedAddress;\r\n let addressFormatted;\r\n\r\n if (selectedAddress.StreetName) {\r\n addressFormatted = `${selectedAddress.StreetName}, ${selectedAddress.PostalCode} - ${selectedAddress.CityDescription}`;\r\n }\r\n\r\n return addressFormatted;\r\n};\r\nexport const getNotCoveredAddress = state => state.notCovered;\r\nexport const getValidity = state => state.isValid;\r\nexport const getTimesInCoverage = state => state.timesInCoverage;\r\nexport const getCoverageType = state => state.coverageType;\r\n\r\nexport default {\r\n getSuggestions,\r\n getValidity,\r\n getVisibility,\r\n getAddressValidity,\r\n getSelectedAddress,\r\n getSelectedAddressFormatted,\r\n getNotCoveredAddress,\r\n getTimesInCoverage,\r\n getCoverageType\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/addresses/getters.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/addresses/index.js","import {\r\n RESET_ADDRESS,\r\n SET_ADDRESS,\r\n SET_ADDRESS_VALIDITY,\r\n SET_SUGGESTIONS,\r\n SET_VISIBILITY,\r\n SET_NOT_COVERED_ADDRESS,\r\n SET_TIME_IN_COVERAGE,\r\n SET_COVERAGE_TYPE\r\n} from './types';\r\n\r\nexport default {\r\n [RESET_ADDRESS](state) {\r\n state.selectedAddress = {};\r\n state.isValid = false;\r\n },\r\n\r\n [SET_ADDRESS](state, data) {\r\n state.selectedAddress = data;\r\n state.isValid = true;\r\n },\r\n\r\n [SET_ADDRESS_VALIDITY](state, data) {\r\n state.isValid = data;\r\n },\r\n\r\n [SET_SUGGESTIONS](state, data) {\r\n state.suggestions = data;\r\n },\r\n\r\n [SET_VISIBILITY](state, data) {\r\n state.isVisible = data;\r\n },\r\n\r\n [SET_NOT_COVERED_ADDRESS](state, data) {\r\n state.notCovered = data;\r\n },\r\n\r\n [SET_TIME_IN_COVERAGE](state) {\r\n state.timesInCoverage += 1;\r\n },\r\n\r\n [SET_COVERAGE_TYPE](state, data) {\r\n state.coverageType = data;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/addresses/mutations.js","export default {\r\n isValid: null,\r\n isVisible: false,\r\n selectedAddress: {},\r\n suggestions: [],\r\n notCovered: {\r\n zipCode: null,\r\n locality: null,\r\n street: null,\r\n doorNumber: null\r\n },\r\n coverageType: null,\r\n timesInCoverage: 0\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/addresses/state.js","import * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport default {\r\n setContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/bundles/actions.js","export const SET_CONTENT = 'SET_CONTENT';\r\n\r\nexport default {\r\n SET_CONTENT\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/bundles/types.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/bundles/index.js","export const getBundle = state => (packageName, name) => {\r\n const [bundle] = state.content.filter(item => item.package === packageName && item.name === name);\r\n\r\n return bundle;\r\n};\r\n\r\nexport const getContent = state => state.content;\r\n\r\nexport default {\r\n getBundle,\r\n getContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/bundles/getters.js","import {\r\n SET_CONTENT\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/bundles/mutations.js","export default {\r\n content: []\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/bundles/state.js","import * as types from './types';\r\n\r\nexport const setForm = ({ commit }, payload) => {\r\n commit(types.SET_FORM, payload);\r\n};\r\n\r\nexport default {\r\n setForm\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/customer/actions.js","export const SET_FORM = 'SET_FORM';\r\n\r\nexport default {\r\n SET_FORM\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/customer/types.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/customer/index.js","import __cloneDeep from 'lodash/cloneDeep';\r\n\r\n// Modules getters\r\nexport const getForm = state => __cloneDeep(state.form);\r\n\r\nexport default {\r\n getForm\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/customer/getters.js","import {\r\n SET_FORM\r\n} from './types';\r\n\r\nexport default {\r\n [SET_FORM](state, data) {\r\n state.form = data;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/customer/mutations.js","export default {\r\n form: {}\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/customer/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/modules/index.js","import * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport default {\r\n setContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/modules/actions.js","export const SET_CONTENT = 'SET_CONTENT';\r\n\r\nexport default {\r\n SET_CONTENT\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/modules/types.js","import __cloneDeep from 'lodash/cloneDeep';\r\n\r\n// Modules getters\r\nexport const getContent = state => __cloneDeep(state.content);\r\nexport const getModule = state => name => __cloneDeep(state.content[name]);\r\nexport const getModuleMeta = state => name => state.content[name].meta;\r\nexport const getModuleComponents = state => name => state.content[name].components;\r\n\r\nexport default {\r\n getContent,\r\n getModule,\r\n getModuleMeta,\r\n getModuleComponents\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/modules/getters.js","import {\r\n SET_CONTENT\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/modules/mutations.js","export default {\r\n content: {}\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/modules/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/packages/index.js","import googleGlobalSiteTag from '@/app/utils/googleGlobalSiteTag';\r\n\r\nimport * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport const initialize = ({ dispatch, rootGetters }, packageName) => {\r\n const packageBlueprint = rootGetters['packages/getPackage'](packageName);\r\n const _package = {};\r\n\r\n Object.keys(packageBlueprint.modules).forEach((moduleName) => {\r\n const $module = packageBlueprint.modules[moduleName];\r\n const moduleBlueprint = rootGetters['modules/getModule'](moduleName);\r\n const _components = {};\r\n\r\n Object.keys($module.components).forEach((componentName) => {\r\n Object.assign(_components, {\r\n [componentName]: {\r\n ...moduleBlueprint.components[componentName],\r\n ...$module.components[componentName]\r\n }\r\n });\r\n\r\n // loop over subcomponents\r\n if ($module.components[componentName].components) {\r\n const _subcomponents = {};\r\n\r\n // eslint-disable-next-line\r\n Object.keys($module.components[componentName].components).forEach((subcomponentName) => {\r\n Object.assign(_subcomponents, {\r\n [subcomponentName]: {\r\n ...moduleBlueprint.components[componentName].components[subcomponentName],\r\n ...$module.components[componentName].components[subcomponentName]\r\n }\r\n });\r\n });\r\n\r\n _components[componentName].components = _subcomponents;\r\n } else if (_components[componentName].components) {\r\n delete _components[componentName].components;\r\n }\r\n });\r\n\r\n Object.assign(_package, {\r\n [moduleName]: {\r\n ...$module,\r\n ...moduleBlueprint,\r\n components: _components\r\n }\r\n });\r\n\r\n // loop over children\r\n if ($module.children) {\r\n const _children = {};\r\n\r\n Object.keys($module.children).forEach((childName) => {\r\n const _child = {};\r\n\r\n Object.keys($module.children[childName].components).forEach((grandChildName) => {\r\n const $grandChild = $module.children[childName].components[grandChildName];\r\n // eslint-disable-next-line\r\n const grandChildBlueprint = moduleBlueprint.children[childName].components[grandChildName];\r\n const _grandChild = {};\r\n\r\n Object.keys($grandChild.components).forEach((grandChildComponentName) => {\r\n const $grandGrandChild = $grandChild.components[grandChildComponentName];\r\n const grandGrandChildBlueprint = grandChildBlueprint.components[grandChildComponentName];\r\n const _grandGrandChild = {};\r\n\r\n // loop over grandGrandChildren (ex: TV Premium Channels, Telephone Lines)\r\n if ($grandGrandChild.components) {\r\n Object.keys($grandGrandChild.components).forEach((grandGrandChildComponentName) => {\r\n Object.assign(_grandGrandChild, {\r\n [grandGrandChildComponentName]: {\r\n ...$grandGrandChild.components[grandGrandChildComponentName],\r\n ...grandGrandChildBlueprint.components[grandGrandChildComponentName]\r\n }\r\n });\r\n });\r\n }\r\n\r\n Object.assign(_grandChild, {\r\n [grandChildComponentName]: {\r\n ...$grandChild.components[grandChildComponentName],\r\n ...grandChildBlueprint.components[grandChildComponentName],\r\n ...(Object.keys(_grandGrandChild).length && { components: _grandGrandChild }),\r\n ...($grandChild.components[grandChildComponentName].config && { config: $grandChild.components[grandChildComponentName].config })\r\n }\r\n });\r\n });\r\n\r\n Object.assign(_child, {\r\n [grandChildName]: {\r\n meta: grandChildBlueprint.meta,\r\n components: _grandChild\r\n }\r\n });\r\n });\r\n\r\n Object.assign(_children, {\r\n [childName]: {\r\n meta: moduleBlueprint.children[childName].meta,\r\n components: _child\r\n }\r\n });\r\n });\r\n\r\n _package[moduleName].children = _children;\r\n }\r\n\r\n // loop over sibling extra components\r\n if ($module.extra) {\r\n const _extra = {};\r\n\r\n Object.keys($module.extra).forEach((extraName) => {\r\n const $extra = $module.extra[extraName];\r\n const extraBlueprint = moduleBlueprint.extra[extraName];\r\n\r\n Object.assign(_extra, {\r\n [extraName]: {\r\n ...$extra,\r\n ...extraBlueprint,\r\n ...($extra.config && { config: $extra.config })\r\n }\r\n });\r\n });\r\n\r\n _package[moduleName].extra = _extra;\r\n }\r\n });\r\n\r\n\r\n if (packageBlueprint.config.features.enableGoogleGlobalSiteTag) {\r\n googleGlobalSiteTag.init(packageBlueprint.config.googleGlobalSiteTag.id);\r\n }\r\n\r\n if (packageBlueprint.config.features.enableCustomCoverageType) {\r\n dispatch('addresses/setCoverageType', packageBlueprint.config.customCoverageType, { root: true });\r\n }\r\n\r\n dispatch('simulation/setPackage', packageName, { root: true });\r\n dispatch('simulation/setActivePackage', _package, { root: true });\r\n dispatch('timeline/initialize', null, { root: true });\r\n dispatch('simulation/setStatus', 'initial', { root: true });\r\n\r\n return _package;\r\n};\r\n\r\nexport default {\r\n initialize,\r\n setContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/packages/actions.js","export const SET_CONTENT = 'SET_CONTENT';\r\n\r\nexport default {\r\n SET_CONTENT\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/packages/types.js","import __cloneDeep from 'lodash/cloneDeep';\r\n\r\nexport const getAvailablePackages = (state) => {\r\n if (state.content.available) {\r\n return Object.keys(state.content.available);\r\n }\r\n\r\n return [];\r\n};\r\n\r\nexport const getPackagesExpiry = (state) => {\r\n if (state.content.config) {\r\n return state.content.config.expiry;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getPackage = state => (name) => {\r\n if (!state.content || !name) {\r\n return null;\r\n }\r\n\r\n if (name.indexOf('.') >= 0) {\r\n const deconstructedName = name.split('.');\r\n const packageName = deconstructedName[0];\r\n const subPackageName = deconstructedName[1];\r\n\r\n return __cloneDeep(state.content.available[packageName].children.available[subPackageName]);\r\n }\r\n\r\n return __cloneDeep(state.content.available[name]);\r\n};\r\n\r\nexport const getPackageMeta = state => name => state.content.available[name].meta;\r\nexport const getPackageComponents = state => name => state.content.available[name].components;\r\n\r\n\r\nexport const getPackageConfig = state => name => state.content.available[name].config;\r\n\r\nexport const getActivePackageConfig = (state, getters, rootState, rootGetters) => {\r\n const name = rootGetters['simulation/getPackage'];\r\n\r\n if (!state.content || !name) {\r\n return {\r\n features: {}\r\n };\r\n }\r\n\r\n if (name.indexOf('.') >= 0) {\r\n const deconstructedName = name.split('.');\r\n const packageName = deconstructedName[0];\r\n const subPackageName = deconstructedName[1];\r\n\r\n return state.content.available[packageName].children.available[subPackageName].config;\r\n }\r\n\r\n return state.content.available[name].config;\r\n};\r\n\r\nexport const getActivePackageMeta = (state, getters, rootState, rootGetters) => {\r\n const name = rootGetters['simulation/getPackage'];\r\n\r\n if (!state.content || !name) {\r\n return {\r\n features: {}\r\n };\r\n }\r\n\r\n if (name.indexOf('.') >= 0) {\r\n const deconstructedName = name.split('.');\r\n const packageName = deconstructedName[0];\r\n const subPackageName = deconstructedName[1];\r\n\r\n return state.content.available[packageName].children.available[subPackageName].meta;\r\n }\r\n\r\n return state.content.available[name].meta;\r\n};\r\n\r\nexport const getConfig = state => state.content.config;\r\nexport default {\r\n getAvailablePackages,\r\n getPackagesExpiry,\r\n getPackage,\r\n getPackageMeta,\r\n getPackageConfig,\r\n getConfig,\r\n getActivePackageConfig,\r\n getActivePackageMeta,\r\n getPackageComponents\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/packages/getters.js","import {\r\n SET_CONTENT\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/packages/mutations.js","export default {\r\n content: {}\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/packages/state.js","\r\nimport * as types from './types';\r\n\r\nexport const init = ({ commit, rootGetters }, { content, hasBundle }) => {\r\n commit(types.INIT, { content, hasBundle, rootGetters });\r\n};\r\n\r\nexport const update = ({ commit, rootGetters }, { path, quantity, uniqueInNamespace, provenance }) => {\r\n commit(types.UPDATE, { path, quantity, uniqueInNamespace, provenance, rootGetters });\r\n};\r\n\r\nexport const resetNamespace = ({ commit }, namespace) => {\r\n commit(types.RESET_NAMESPACE, namespace);\r\n};\r\n\r\nexport const setPreviousContent = ({ commit }) => {\r\n commit(types.SET_PREVIOUS_CONTENT);\r\n};\r\n\r\nexport default {\r\n init,\r\n update,\r\n resetNamespace,\r\n setPreviousContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/cart/actions.js","export const UPDATE = 'UPDATE';\r\nexport const INIT = 'INIT';\r\nexport const RESET_NAMESPACE = 'RESET_NAMESPACE';\r\nexport const UPDATE_LAST_REMOVED = 'UPDATE_LAST_REMOVED';\r\nexport const READD_LAST_REMOVED = 'READD_LAST_REMOVED';\r\nexport const SET_PREVIOUS_CONTENT = 'SET_PREVIOUS_CONTENT';\r\n\r\nexport default {\r\n UPDATE,\r\n INIT,\r\n RESET_NAMESPACE,\r\n UPDATE_LAST_REMOVED,\r\n READD_LAST_REMOVED,\r\n SET_PREVIOUS_CONTENT\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/cart/types.js","import __cloneDeep from 'lodash/cloneDeep';\r\nimport __get from 'lodash/get';\r\nimport _ from 'lodash';\r\n\r\nconst formatTime = time => time.toString().padStart(2, 0);\r\n\r\nconst isOffer = (getters, rootGetters, _path) => {\r\n const rootOffers = rootGetters['offers/getContent'];\r\n\r\n if (!rootOffers || !rootOffers.length) {\r\n return false;\r\n }\r\n\r\n const offers = rootOffers.filter(offer => offer.subject.target === _path && rootGetters['offers/isOfferValid'](offer));\r\n\r\n return !!offers.length;\r\n};\r\n\r\nexport const testConditionalPrice = (state, getters) => (conditionalPrices) => {\r\n let activePrice;\r\n\r\n conditionalPrices.some((price) => {\r\n const condition = price.condition;\r\n\r\n if (Array.isArray(condition)) {\r\n let conditionsLeft = condition.length;\r\n\r\n condition.forEach((path) => {\r\n if (Array.isArray(path)) {\r\n const hasOnePathActive = !!path.find(item => getters.isPathActive(item));\r\n\r\n if (hasOnePathActive) {\r\n conditionsLeft -= 1;\r\n }\r\n } else if (getters.isPathActive(path)) {\r\n conditionsLeft -= 1;\r\n }\r\n });\r\n\r\n if (conditionsLeft === 0) {\r\n activePrice = price;\r\n\r\n return true;\r\n }\r\n } else if (getters.isPathActive(condition)) {\r\n activePrice = price;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return activePrice;\r\n};\r\n\r\nexport const determineActivePrice = (state, getters) => (priceObj) => {\r\n let activePrice;\r\n\r\n if (Array.isArray(priceObj)) {\r\n const conditionalPrices = priceObj.filter(price => price.type === 'conditional');\r\n\r\n if (conditionalPrices.length && getters.testConditionalPrice(conditionalPrices)) {\r\n activePrice = getters.testConditionalPrice(conditionalPrices);\r\n } else {\r\n [activePrice] = priceObj.filter(price => price.type === 'default');\r\n }\r\n } else {\r\n activePrice = priceObj;\r\n }\r\n\r\n return activePrice;\r\n};\r\n\r\nexport const determineNonFidelizedPrice = () => (priceObj) => {\r\n let activePrice;\r\n\r\n if (Array.isArray(priceObj)) {\r\n const [nonFidelizedConditionalPrice] = priceObj.filter(price => price.condition === 'permanencia.components.months_1');\r\n\r\n if (nonFidelizedConditionalPrice) {\r\n activePrice = nonFidelizedConditionalPrice;\r\n } else {\r\n [activePrice] = priceObj.filter(price => price.type === 'default');\r\n }\r\n } else {\r\n activePrice = priceObj;\r\n }\r\n\r\n return activePrice;\r\n};\r\n\r\nexport const getContent = state => state.content;\r\n\r\nexport const getActiveItems = state => state.content.filter(c => c.quantity > 0);\r\n\r\nexport const getContentServices = (state) => {\r\n if (!state.content) {\r\n return false;\r\n }\r\n\r\n const filteredContent = state.content.filter(item => item.quantity && item.meta.service);\r\n return filteredContent.map(item => ({\r\n serviceCode: item.meta.service.code,\r\n serviceCodeDescription: item.meta.service.description\r\n }));\r\n};\r\n\r\nexport const getStringifiedContent = (state, getters, rootState) => {\r\n if (!state.content) {\r\n return false;\r\n }\r\n\r\n const sid = rootState.simulation.id;\r\n\r\n const date = new Date();\r\n const time = `${formatTime(date.getHours())}:${formatTime(date.getMinutes())}:${formatTime(date.getSeconds())}`;\r\n\r\n const content = state.content.map((item) => {\r\n if (!item.quantity) {\r\n return '';\r\n }\r\n\r\n const quantity = item.quantity > 1 ? `${item.quantity}x ` : '';\r\n const name = item.meta.title.track ? item.meta.title.track : item.meta.title.item;\r\n\r\n return `${quantity}${name}`;\r\n });\r\n\r\n return `${sid};${time};${content.join(';')}`;\r\n};\r\n\r\nexport const getStringifiedContentAll = (state, getters, rootState) => {\r\n if (!state.content) {\r\n return false;\r\n }\r\n\r\n const sid = rootState.simulation.id;\r\n\r\n const date = new Date();\r\n const time = `${formatTime(date.getHours())}:${formatTime(date.getMinutes())}:${formatTime(date.getSeconds())}`;\r\n\r\n const content = state.content.map((item) => {\r\n const quantity = item.quantity > 1 ? `${item.quantity}x ` : '';\r\n const name = item.meta.title.track ? item.meta.title.track : item.meta.title.item;\r\n\r\n return `${quantity}${name}`;\r\n });\r\n\r\n return `${sid};${time};${content.join(';')}`;\r\n};\r\n\r\nexport const getTrackingContent = (state, getters, rootState, rootGetters) => {\r\n if (!state.content) {\r\n return null;\r\n }\r\n\r\n const sid = rootGetters['simulation/getId'];\r\n const date = new Date();\r\n const time = `${formatTime(date.getHours())}:${formatTime(date.getMinutes())}:${formatTime(date.getSeconds())}`;\r\n\r\n const packageContents = rootGetters['simulation/getActivePackage'];\r\n const packageModules = Object.keys(packageContents);\r\n const packageConfig = rootGetters['packages/getActivePackageConfig'];\r\n const packageMeta = rootGetters['packages/getActivePackageMeta'];\r\n\r\n const trackingContent = [];\r\n\r\n if (packageConfig.features.enableAnalyticsLeadWithPackage) {\r\n trackingContent.push(packageMeta.title.track);\r\n }\r\n\r\n packageModules.forEach((namespace) => {\r\n const activeItems = getters.activeItemsInNamespace(namespace);\r\n const content = [];\r\n\r\n activeItems.forEach((item) => {\r\n const quantity = item.quantity > 1 ? `${item.quantity}x ` : '';\r\n const name = item.meta.title.track ? item.meta.title.track : item.meta.title.item;\r\n\r\n content.push(`${quantity}${name}`);\r\n });\r\n\r\n trackingContent.push(content.join(','));\r\n\r\n if (namespace === 'tv') {\r\n const [appNowo] = state.content.filter(item => item.config.name === 'app_nowo' && item.quantity > 0);\r\n\r\n if (appNowo) {\r\n const name = appNowo.meta.title.track ? appNowo.meta.title.track : appNowo.meta.title.item;\r\n\r\n trackingContent.push(name);\r\n } else {\r\n trackingContent.push('');\r\n }\r\n\r\n // Box\r\n if (getters.isPathActive('tv.children.premium.components.not_categorized.components.box')) {\r\n const [box] = state.content.filter(item => item.path === 'tv.children.premium.components.not_categorized.components.box');\r\n const name = box.meta.title.track ? box.meta.title.track : box.meta.title.item;\r\n\r\n trackingContent.push(name);\r\n } else {\r\n trackingContent.push('');\r\n }\r\n\r\n // Premium channels\r\n const activeChannels = state.content.filter(item => item.config.parent === 'tv.children.premium' && item.config.namespace !== 'not_categorized' && item.quantity);\r\n const channelsContent = [];\r\n\r\n activeChannels.forEach((item) => {\r\n const name = item.meta.title.track ? item.meta.title.track : item.meta.title.item;\r\n\r\n channelsContent.push(name);\r\n });\r\n\r\n trackingContent.push(channelsContent.join(','));\r\n }\r\n\r\n if (namespace === 'telefone') {\r\n // Rede fixa\r\n if (getters.isPathActive('telefone.components.voice_line.components.rf_10000')) {\r\n const [rf] = state.content.filter(item => item.path === 'telefone.components.voice_line.components.rf_10000');\r\n const name = rf.meta.title.track ? rf.meta.title.track : rf.meta.title.item;\r\n\r\n trackingContent.push(name);\r\n } else {\r\n trackingContent.push('');\r\n }\r\n\r\n // Rede movel\r\n if (getters.isPathActive('telefone.components.voice_line.components.rm_300')) {\r\n const [rm] = state.content.filter(item => item.path === 'telefone.components.voice_line.components.rm_300');\r\n const name = rm.meta.title.track ? rm.meta.title.track : rm.meta.title.item;\r\n\r\n trackingContent.push(name);\r\n } else {\r\n trackingContent.push('');\r\n }\r\n\r\n // Portabilidade\r\n if (getters.isPathActive('telefone.extra.portabilidade')) {\r\n const [portability] = state.content.filter(item => item.path === 'telefone.extra.portabilidade');\r\n const name = portability.meta.title.track ? portability.meta.title.track : portability.meta.title.item;\r\n\r\n trackingContent.push(name);\r\n } else {\r\n trackingContent.push('');\r\n }\r\n }\r\n\r\n // if (namespace === 'plano') {\r\n // // Portabilidade\r\n // if (getters.isPathActive('plano.extra.portabilidade')) {\r\n // const [portability] = state.content.filter(item => item.path === 'plano.extra.portabilidade');\r\n // const name = portability.meta.title.track ? portability.meta.title.track : portability.meta.title.item;\r\n\r\n // trackingContent.push(name);\r\n // } else {\r\n // trackingContent.push('');\r\n // }\r\n // }\r\n });\r\n\r\n return `${sid};${time};${trackingContent.join(';')}`;\r\n};\r\n\r\nexport const getParsedContent = (state, getters, rootState, rootGetters) => {\r\n if (!state.content) {\r\n return false;\r\n }\r\n\r\n const activeItems = state.content.filter(item => item.quantity >= 1);\r\n\r\n const parsedCart = {\r\n content: [],\r\n totals: {\r\n cart: {\r\n key: 'Total',\r\n strikedValue: null,\r\n value: 0\r\n },\r\n installation: {\r\n key: 'Instalação',\r\n value: 0\r\n },\r\n payment: {\r\n key: 'Débito Direto',\r\n value: ''\r\n },\r\n portability: {\r\n key: 'Portabilidade',\r\n value: 0\r\n },\r\n fidelization: {\r\n key: 'Fidelização',\r\n value: ''\r\n },\r\n invoice: {\r\n key: 'Fatura Eletrónica',\r\n value: ''\r\n }\r\n },\r\n offers: null\r\n };\r\n\r\n activeItems.forEach((item) => {\r\n if (!item.config.isListable) {\r\n return false;\r\n }\r\n\r\n const activePrice = getters.determineActivePrice(item.price);\r\n\r\n let parsedPrice;\r\n\r\n if ((!isOffer(getters, rootGetters, item.path) && (activePrice && !activePrice.included)) || !item.config.isResumable) {\r\n const basePrice = typeof item.config.basePrice === 'number' ? item.config.basePrice : 0;\r\n let finalPrice = 0;\r\n if (!(item.config.namespace === 'fatura_detalhe')) {\r\n // const shouldUseNewPrice = !!getters.getPath('fatura.components.digital_debitodireto').quantity;\r\n // if (!shouldUseNewPrice && activePrice.old) {\r\n // finalPrice = (basePrice + activePrice.old) * item.quantity;\r\n // } else {\r\n // finalPrice = (basePrice + activePrice.value) * item.quantity;\r\n // }\r\n finalPrice = activePrice.old ? (basePrice + activePrice.old) * item.quantity : (basePrice + activePrice.value) * item.quantity;\r\n const style = finalPrice === 0 ? ' style=\"color: #B2B2B2\"' : '';\r\n\r\n parsedCart.totals.cart.value += finalPrice;\r\n\r\n parsedPrice = `€${finalPrice.toFixed(2).replace('.', ',')}`;\r\n parsedPrice = activePrice.recurring ? `${parsedPrice} /mês` : parsedPrice;\r\n }\r\n } else if (!isOffer(getters, rootGetters, item.path)) {\r\n parsedPrice = 'INCLUÍDO';\r\n } else {\r\n parsedPrice = 'OFERTA';\r\n }\r\n\r\n const activeItemQuantity = item.quantity > 1 ? `x${item.quantity} ` : '';\r\n\r\n const noPricePaths = [\r\n 'fatura.components.digital',\r\n 'fatura.components.digital_debitodireto',\r\n 'fatura.components.analog',\r\n 'fatura.components.analog_debitodireto'\r\n ];\r\n\r\n const excludedPaths = [\r\n 'fatura.components.digital',\r\n 'fatura.components.digital_debitodireto',\r\n 'fatura.components.analog',\r\n 'fatura.components.analog_debitodireto'\r\n ];\r\n\r\n if (!excludedPaths.includes(item.path)) {\r\n const activeItem = {\r\n title: `${activeItemQuantity}${item.meta.title.cart}`,\r\n price: noPricePaths.includes(item.path) ? '' : parsedPrice\r\n };\r\n\r\n if (item.meta.content) {\r\n let contents = '';\r\n\r\n item.meta.content.forEach((contentItem) => {\r\n contents += `
  • ${contentItem}
  • `;\r\n });\r\n\r\n activeItem.content = ``;\r\n }\r\n\r\n parsedCart.content.push(activeItem);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n let total = parsedCart.totals.cart.value;\r\n\r\n parsedCart.totals.cart.value = `€${total.toFixed(2).replace('.', ',')}`;\r\n\r\n if (getters.namespaceExists('permanencia')) {\r\n const permanenciaItem = getters.activeItemsInNamespace('permanencia')[0];\r\n parsedCart.totals.fidelization.value = permanenciaItem.meta.title.cart;\r\n }\r\n\r\n if (getters.namespaceExists('fatura')) {\r\n const faturaItem = getters.activeItemsInNamespace('fatura')[0];\r\n parsedCart.totals.invoice.key = faturaItem.meta.title.cart;\r\n if (!faturaItem.path.includes('debitodireto')) {\r\n if (faturaItem.path !== 'fatura.components.analog' && (getters.activeItemsInNamespace('permanencia')[0].path === 'permanencia.components.months_1')) {\r\n parsedCart.totals.cart.value = `€${(total - 2).toFixed(2).replace('.', ',')}`;\r\n }\r\n delete parsedCart.totals.payment;\r\n }\r\n\r\n if (faturaItem.path.includes('debitodireto')) {\r\n if (faturaItem.path === 'fatura.components.digital_debitodireto' && getters.activeItemsInNamespace('permanencia')[0].path === 'permanencia.components.months_1') {\r\n parsedCart.totals.cart.value = `€${(total - 2).toFixed(2).replace('.', ',')}`;\r\n }\r\n parsedCart.totals.payment.value = 'ATIVO';\r\n }\r\n }\r\n\r\n const simulationPackage = rootGetters['simulation/getPackage'];\r\n\r\n let installation = getters.activeItemsInNamespacePrice('permanencia');\r\n const freeString = simulationPackage.startsWith('movel') ? 'GRATUITO' : 'OFERTA';\r\n if (simulationPackage.startsWith('movel')) parsedCart.totals.installation.key = 'Cartão SIM';\r\n installation = installation === 0 ? freeString : `€${installation.toFixed(2).replace('.', ',')}`;\r\n\r\n if (simulationPackage.startsWith('movel.carregamentos')) {\r\n installation = getters.isPathActive('numero.components.new') ?\r\n `€${getters.getPath('numero.components.new').price.value.toFixed(2).replace('.', ',')}` :\r\n `€${getters.getPath('numero.components.keep').price.value.toFixed(2).replace('.', ',')}`;\r\n }\r\n\r\n parsedCart.totals.installation.value = installation;\r\n\r\n if (getters.isPathActive('numero.extra.portabilidade')) {\r\n let portability = getters.getPathPrice('numero.extra.portabilidade').value;\r\n portability = portability === 0 ? 'GRATUITA' : `€${portability.toFixed(2).replace('.', ',')}`;\r\n\r\n parsedCart.totals.portability.value = portability;\r\n } else {\r\n delete parsedCart.totals.portability;\r\n }\r\n\r\n const activeOffers = [];\r\n const offers = rootGetters['offers/getContent'].filter(offer => offer.subject.type !== 'discount' && rootGetters['offers/isOfferValid'](offer) && !offer.subject.silentOnStrikedPrice);\r\n\r\n if (offers.length) {\r\n const offersContents = [];\r\n offers.forEach((offer) => {\r\n if (!offer.subject.silentOnStrikedPrice) {\r\n offersContents.push(`

    ${offer.emailDescription ? offer.emailDescription : offer.description}

    `);\r\n }\r\n });\r\n\r\n activeOffers.push(...offersContents);\r\n }\r\n\r\n // check for discount offers\r\n const discountOffers = rootGetters['offers/getContent'].filter(offer => offer.subject.type === 'discount' && rootGetters['offers/isOfferValid'](offer));\r\n\r\n if (discountOffers.length) {\r\n const validDiscountOffers = [];\r\n\r\n const activeDiscountOffers = discountOffers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (validDiscountOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n validDiscountOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n const discountOffersContents = [];\r\n activeDiscountOffers.forEach((offer) => {\r\n if (!offer.subject.silentOnStrikedPrice) {\r\n discountOffersContents.push(`

    ${offer.description}

    `);\r\n }\r\n });\r\n\r\n activeOffers.push(...discountOffersContents);\r\n\r\n // need to remove after end of campaign\r\n const mappedDiscountOffers = activeDiscountOffers.map(offer => offer.subject.value && !offer.description.includes('15GB') && !offer.description.includes('1GB'));\r\n\r\n let totalDiscount = mappedDiscountOffers.reduce((sum, x) => sum + x);\r\n\r\n const campaignValue = activeDiscountOffers.filter(offer => offer.description.includes('15GB') || offer.description.includes('1GB'));\r\n\r\n if (campaignValue.length) {\r\n const campaignItems = activeItems.filter(item => item.path.includes('gb_15') || item.path.includes('gb_1'));\r\n\r\n let disc = 0;\r\n campaignItems.forEach((item) => {\r\n disc += (item.price[0].old - item.price[0].value) * item.quantity;\r\n });\r\n\r\n totalDiscount += disc;\r\n }\r\n\r\n const faturaDiscountFiltered = activeDiscountOffers.filter(el => el.subject.family === 'discount_fatura');\r\n\r\n if (faturaDiscountFiltered.length) {\r\n totalDiscount -= faturaDiscountFiltered[0].subject.value;\r\n }\r\n\r\n\r\n if (activeItems.filter(i => i.path.includes('fatura.components.analog_debitodireto')).length) {\r\n total += 2;\r\n }\r\n\r\n if (activeItems.filter(i => i.path.includes('fatura.components.analog')).length) {\r\n parsedCart.totals.cart.value = `€${(total + 2).toFixed(2).replace('.', ',')}`;\r\n }\r\n\r\n if (totalDiscount) {\r\n const totalWithDiscount = total - totalDiscount;\r\n\r\n if (rootGetters['packages/getActivePackageMeta'] === 'casa') {\r\n parsedCart.totals.cart.strikedValue = parsedCart.totals.cart.value;\r\n }\r\n\r\n if (rootGetters['packages/getActivePackageMeta'].name === 'pospago' && (rootGetters['cart/getContent'].filter(item => item.path.includes('gb_15'))[0].quantity >= 1 || rootGetters['cart/getContent'].filter(item => item.path.includes('gb_1'))[0].quantity >= 1) && campaignValue.length) {\r\n parsedCart.totals.cart.strikedValue = `€${(total - 2).toFixed(2).replace('.', ',')}`;\r\n }\r\n\r\n parsedCart.totals.cart.value = `€${totalWithDiscount.toFixed(2).replace('.', ',')}`;\r\n }\r\n }\r\n\r\n if (rootGetters['packages/getActivePackageMeta'].name === 'carregamentos') {\r\n delete parsedCart.totals.payment;\r\n delete parsedCart.totals.fidelization;\r\n delete parsedCart.totals.invoice;\r\n }\r\n\r\n if (rootGetters['packages/getActivePackageMeta'].name === 'iptv') {\r\n delete parsedCart.totals.fidelization;\r\n }\r\n\r\n parsedCart.offers = activeOffers.join('');\r\n\r\n return parsedCart;\r\n};\r\n\r\nexport const getItemQuantity = state => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (content && content.quantity) {\r\n return content.quantity;\r\n }\r\n\r\n return 0;\r\n};\r\n\r\nexport const getPath = state => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n return content;\r\n};\r\n\r\nexport const getPathPrice = (state, getters) => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n return getters.determineActivePrice(content.price);\r\n};\r\n\r\nexport const getPathNonFidelizedPrice = (state, getters) => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n return getters.determineNonFidelizedPrice(content.price);\r\n};\r\n\r\nexport const isPathInCart = state => path => __cloneDeep(__get(state.content, path));\r\n\r\nexport const isPathActive = state => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n return content && content.quantity > 0;\r\n};\r\n\r\nexport const areAllPathsActive = (state, getters) => (paths) => {\r\n if (Array.isArray(paths)) {\r\n let size = paths.length;\r\n\r\n paths.forEach((path) => {\r\n if (Array.isArray(path)) {\r\n let isActive = false;\r\n path.forEach((subPath) => {\r\n if (getters.isPathActive(subPath)) {\r\n isActive = true;\r\n }\r\n });\r\n\r\n if (isActive) size -= 1;\r\n } else if (getters.isPathActive(path)) {\r\n size -= 1;\r\n }\r\n });\r\n\r\n return !size;\r\n }\r\n\r\n return getters.isPathActive(paths);\r\n};\r\n\r\nexport const isPathBeginningWithActive = state => (path) => {\r\n const [content] = state.content.filter(item => item.path.startsWith(path) && item.quantity > 0);\r\n\r\n return content && content.quantity > 0;\r\n};\r\n\r\nexport const isPathDisabled = state => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (content) {\r\n return content.config.disabled;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const isPathHidden = state => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (content) {\r\n return content.config.hidden;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const isPathSuspended = state => (path) => {\r\n const [content] = state.content.filter(item => item.path === path);\r\n\r\n if (content) {\r\n return content.config.suspended;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const namespaceExists = state => (namespace) => {\r\n const activeNamespace = state.content.filter(item => item.config.namespace === namespace);\r\n\r\n return !!activeNamespace.length;\r\n};\r\n\r\nexport const activeItemsInNamespace = state => (namespace) => {\r\n if (!state.content) {\r\n return [];\r\n }\r\n\r\n return state.content.filter(item => item.config.namespace === namespace && item.quantity);\r\n};\r\n\r\nexport const activeItemsInNamespacePrice = (state, getters) => (namespace) => {\r\n const activeItems = state.content.filter(item => item.config.namespace === namespace && item.quantity);\r\n\r\n let total = 0;\r\n activeItems.forEach((item) => {\r\n const activePrice = getters.determineActivePrice(item.price);\r\n\r\n total += item.quantity * activePrice.value;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const activeItemsInNamespaceListingPrice = (state, getters) => (namespace) => {\r\n const activeItems = state.content.filter(item => item.config.namespace === namespace && item.quantity);\r\n\r\n let total = 0;\r\n activeItems.forEach((item) => {\r\n const activePrice = getters.determineActivePrice(item.price);\r\n const activeValue = activePrice.listingValue || activePrice.value;\r\n\r\n total += activeValue;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const activeComponentItemsInNameSpacePrice = (state, getters) => (namespace) => {\r\n const searchString = `${namespace}.components`;\r\n const activeItems = state.content.filter(item => item.config.namespace === namespace && item.path.startsWith(searchString) && item.quantity);\r\n\r\n let total = 0;\r\n activeItems.forEach((item) => {\r\n const activePrice = getters.determineActivePrice(item.price);\r\n\r\n total += activePrice.value;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const activeItemsLength = (state) => {\r\n if (state.content) {\r\n const activeItems = state.content.filter(item => item.quantity > 0);\r\n\r\n return activeItems.length;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getPreviousContent = state => state.previousContent;\r\n\r\nexport const getBaseServicesPrice = (state, getters) => {\r\n const baseServices = state.content.filter(c => ((c.quantity > 0) && (!_.isNil(c.meta.fis) && c.meta.fis.type !== 'additional')));\r\n let total = 0;\r\n\r\n baseServices.forEach((item) => {\r\n total += getters.getPathPrice(item.path).value * item.quantity;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getMovelServicePrice = (state, getters) => {\r\n const activeMovelItem = getters.activeItemsInNamespace('movel');\r\n\r\n if (activeMovelItem.length) {\r\n return getters.getPathPrice(activeMovelItem[0].path).value * activeMovelItem[0].quantity;\r\n }\r\n\r\n return 0;\r\n};\r\n\r\nexport const getMovelAdicionaisServicesPrice = (state, getters) => {\r\n const activeMovelItem = getters.activeItemsInNamespace('movel_adicionais');\r\n\r\n if (activeMovelItem.length) {\r\n return getters.getPathPrice(activeMovelItem[0].path).value * activeMovelItem[0].quantity;\r\n }\r\n\r\n return 0;\r\n};\r\n\r\nexport const getCoverageString = (state, getters) => {\r\n const activeCoverage = getters.activeItemsInNamespace('_coverage_control');\r\n\r\n if (!activeCoverage.length) return '';\r\n\r\n return activeCoverage[0].meta.title.cart || '';\r\n};\r\n\r\nexport const getTotalCardsValue = (state, getters) => {\r\n const activeCards = [\r\n ...getters.activeItemsInNamespace('movel'),\r\n ...getters.activeItemsInNamespace('movel_adicionais'),\r\n ...getters.activeItemsInNamespace('plano')\r\n ];\r\n\r\n let total = 0;\r\n activeCards.forEach((item) => {\r\n total += item.quantity;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport default {\r\n activeComponentItemsInNameSpacePrice,\r\n activeItemsInNamespace,\r\n activeItemsInNamespaceListingPrice,\r\n activeItemsInNamespacePrice,\r\n activeItemsLength,\r\n areAllPathsActive,\r\n determineActivePrice,\r\n determineNonFidelizedPrice,\r\n getActiveItems,\r\n getBaseServicesPrice,\r\n getContent,\r\n getContentServices,\r\n getCoverageString,\r\n getItemQuantity,\r\n getMovelAdicionaisServicesPrice,\r\n getMovelServicePrice,\r\n getParsedContent,\r\n getPath,\r\n getPathNonFidelizedPrice,\r\n getPathPrice,\r\n getPreviousContent,\r\n getStringifiedContent,\r\n getStringifiedContentAll,\r\n getTotalCardsValue,\r\n getTrackingContent,\r\n isPathActive,\r\n isPathBeginningWithActive,\r\n isPathDisabled,\r\n isPathHidden,\r\n isPathInCart,\r\n isPathSuspended,\r\n namespaceExists,\r\n testConditionalPrice\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/cart/getters.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/cart/index.js","import __cloneDeep from 'lodash/cloneDeep';\r\n\r\nimport {\r\n INIT,\r\n UPDATE,\r\n RESET_NAMESPACE,\r\n SET_PREVIOUS_CONTENT\r\n} from './types';\r\n\r\nexport default {\r\n [INIT](state, { content, hasBundle, rootGetters }) {\r\n state.content = content;\r\n\r\n if (!hasBundle) {\r\n content.forEach((entry) => {\r\n if (entry.quantity && entry.relationships) {\r\n if (entry.relationships.block) {\r\n entry.relationships.block.forEach((blockPath) => {\r\n if (blockPath.endsWith('*')) {\r\n const relativeBlockPath = blockPath.replace('.*', '');\r\n\r\n state.content.filter(item => item.path.startsWith(relativeBlockPath)).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = entry.quantity > 0;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === blockPath).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = entry.quantity > 0;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (entry.relationships.exclude) {\r\n entry.relationships.exclude.forEach((excludePath) => {\r\n if (excludePath.endsWith('*')) {\r\n const relativeExcludePath = excludePath.replace('.*', '');\r\n\r\n state.content.filter(item => item.quantity && item.path.startsWith(relativeExcludePath)).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n } else {\r\n state.content.filter(item => item.quantity && item.path === excludePath).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (entry.relationships.hide) {\r\n entry.relationships.hide.forEach((hidePath) => {\r\n if (hidePath.endsWith('*')) {\r\n const relativeHidePath = hidePath.replace('.*', '');\r\n\r\n state.content.filter(item => item.path.startsWith(relativeHidePath)).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n item.config.hidden = true;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === hidePath).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n item.config.hidden = true;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (entry.relationships.include) {\r\n if (entry.quantity) {\r\n entry.relationships.include.forEach((includePath) => {\r\n state.content.filter(item => item.path === includePath).forEach((item) => {\r\n item.quantity = 1;\r\n });\r\n });\r\n } else {\r\n entry.relationships.include.forEach((includePath) => {\r\n const peerIncludes = state.content.filter(item => item.quantity > 0 && item.relationships && item.relationships.include && item.relationships.include.indexOf(includePath) > -1);\r\n\r\n if (peerIncludes.length === 0) {\r\n state.content.filter(item => item.path === includePath).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (entry.relationships.show) {\r\n entry.relationships.show.forEach((showPath) => {\r\n if (showPath.endsWith('*')) {\r\n const relativeshowPath = showPath.replace('.*', '');\r\n\r\n state.content.filter(item => item.path.startsWith(relativeshowPath)).forEach((item) => {\r\n item.config.hidden = false;\r\n item.config.disabled = false;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === showPath).forEach((item) => {\r\n item.config.hidden = false;\r\n item.config.disabled = false;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n const relationships = rootGetters['relationships/getContent'];\r\n const isPathActive = rootGetters['cart/isPathActive'];\r\n const relevantRelationships = relationships.filter(relationship => relationship.conditions.includes(entry.path));\r\n\r\n if (entry.quantity && relevantRelationships.length) {\r\n relevantRelationships.forEach((relationship) => {\r\n let conditionsLeft = relationship.conditions.length;\r\n\r\n relationship.conditions.forEach((conditionPath) => {\r\n if (isPathActive(conditionPath)) {\r\n conditionsLeft -= 1;\r\n }\r\n });\r\n\r\n if (conditionsLeft === 0) {\r\n if (relationship.block) {\r\n relationship.block.forEach((includePath) => {\r\n state.content.filter(item => item.path === includePath).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n });\r\n });\r\n }\r\n\r\n if (relationship.include) {\r\n relationship.include.forEach((includePath) => {\r\n state.content.filter(item => item.path === includePath).forEach((item) => {\r\n item.quantity = 1;\r\n });\r\n });\r\n }\r\n\r\n if (relationship.hide) {\r\n relationship.hide.forEach((hidePath) => {\r\n state.content.filter(item => item.path === hidePath).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n item.config.hidden = true;\r\n });\r\n });\r\n }\r\n\r\n if (relationship.show) {\r\n relationship.show.forEach((showPath) => {\r\n state.content.filter(item => item.path === showPath).forEach((item) => {\r\n item.config.hidden = false;\r\n item.config.disabled = false;\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n\r\n [RESET_NAMESPACE](state, namespace) {\r\n const peers = state.content.filter(item => item.config.namespace === namespace && item.quantity > 0);\r\n\r\n peers.forEach((item) => {\r\n const subPeers = state.content.filter(subItem => subItem.config.parent === item.path);\r\n\r\n if (item.relationships) {\r\n if (item.relationships.block) {\r\n item.relationships.block.forEach((blockPath) => {\r\n state.content.filter(peerItem => peerItem.path === blockPath).forEach((peerItem) => {\r\n peerItem.config.disabled = false;\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (item.relationships) {\r\n if (item.relationships.hide) {\r\n item.relationships.hide.forEach((hidePath) => {\r\n state.content.filter(peerItem => peerItem.path === hidePath).forEach((peerItem) => {\r\n peerItem.config.disabled = false;\r\n peerItem.config.hidden = false;\r\n });\r\n });\r\n }\r\n }\r\n\r\n subPeers.forEach((subItem) => {\r\n subItem.quantity = 0;\r\n });\r\n\r\n item.quantity = 0;\r\n });\r\n },\r\n\r\n [UPDATE](state, { path, quantity, uniqueInNamespace, provenance, rootGetters }) {\r\n const [target] = state.content.filter(item => item.path === path);\r\n\r\n // backup cart\r\n state.previousContent = __cloneDeep(state.content);\r\n\r\n target.quantity = quantity;\r\n // eslint-disable-next-line\r\n target.provenance = provenance ? provenance : 'manual';\r\n\r\n\r\n if (uniqueInNamespace) {\r\n const peers = state.content.filter(item => item.path !== path && item.config.namespace === target.config.namespace && item.quantity > 0 && item.config.type === target.config.type);\r\n peers.forEach((item) => {\r\n const subPeers = state.content.filter(subItem => subItem.config.parent === item.path);\r\n\r\n if (item.relationships) {\r\n if (item.relationships.block) {\r\n item.relationships.block.forEach((blockPath) => {\r\n state.content.filter(peerItem => peerItem.path === blockPath).forEach((peerItem) => {\r\n peerItem.config.disabled = false;\r\n });\r\n });\r\n }\r\n\r\n if (item.relationships.hide) {\r\n item.relationships.hide.forEach((hidePath) => {\r\n state.content.filter(peerItem => peerItem.path === hidePath).forEach((peerItem) => {\r\n peerItem.config.disabled = false;\r\n peerItem.config.hidden = false;\r\n });\r\n });\r\n }\r\n }\r\n\r\n subPeers.forEach((subItem) => {\r\n subItem.quantity = 0;\r\n });\r\n\r\n item.quantity = 0;\r\n });\r\n }\r\n\r\n if (target.relationships) {\r\n if (quantity === 0 && target.relationships.dependencies) {\r\n target.relationships.dependencies.forEach((dependencyPath) => {\r\n if (dependencyPath.endsWith('*')) {\r\n const relativeDependencyPath = dependencyPath.replace('.*', '');\r\n state.content.filter(item => item.path.startsWith(relativeDependencyPath)).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === dependencyPath).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (target.relationships.block) {\r\n target.relationships.block.forEach((blockPath) => {\r\n if (blockPath.endsWith('*')) {\r\n const relativeBlockPath = blockPath.replace('.*', '');\r\n state.content.filter(item => item.path.startsWith(relativeBlockPath)).forEach((item) => {\r\n const includedInOtherItems = !!state.content.filter(cartItem => cartItem.quantity > 0 && cartItem.relationships && cartItem.relationships.include && cartItem.relationships.include.includes(blockPath)).length;\r\n item.quantity = includedInOtherItems ? item.quantity : 0;\r\n item.config.disabled = quantity > 0;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === blockPath).forEach((item) => {\r\n const includedInOtherItems = !!state.content.filter(cartItem => cartItem.quantity > 0 && cartItem.relationships && cartItem.relationships.include && cartItem.relationships.include.includes(blockPath)).length;\r\n item.quantity = includedInOtherItems ? item.quantity : 0;\r\n item.config.disabled = quantity > 0;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (target.relationships.exclude) {\r\n target.relationships.exclude.forEach((excludePath) => {\r\n if (excludePath.endsWith('*')) {\r\n const relativeExcludePath = excludePath.replace('.*', '');\r\n\r\n state.content.filter(item => item.quantity && item.path.startsWith(relativeExcludePath)).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n } else {\r\n state.content.filter(item => item.quantity && item.path === excludePath).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (target.relationships.hide) {\r\n target.relationships.hide.forEach((hidePath) => {\r\n if (hidePath.endsWith('*')) {\r\n const relativeHidePath = hidePath.replace('.*', '');\r\n\r\n state.content.filter(item => item.path.startsWith(relativeHidePath)).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n item.config.hidden = true;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === hidePath).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n item.config.hidden = true;\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (target.relationships.include) {\r\n if (quantity) {\r\n target.relationships.include.forEach((includePath) => {\r\n state.content.filter(item => item.path === includePath).forEach((item) => {\r\n item.quantity = 1;\r\n item.provenance = 'manual';\r\n });\r\n });\r\n } else {\r\n target.relationships.include.forEach((includePath) => {\r\n const peerIncludes = state.content.filter(item => item.quantity > 0 && item.relationships && item.relationships.include && item.relationships.include.indexOf(includePath) > -1);\r\n\r\n if (peerIncludes.length === 0) {\r\n state.content.filter(item => item.path === includePath).forEach((item) => {\r\n item.quantity = 0;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (target.relationships.show) {\r\n target.relationships.show.forEach((showPath) => {\r\n if (showPath.endsWith('*')) {\r\n const relativeshowPath = showPath.replace('.*', '');\r\n\r\n state.content.filter(item => item.path.startsWith(relativeshowPath)).forEach((item) => {\r\n item.config.hidden = false;\r\n item.config.disabled = false;\r\n });\r\n } else {\r\n state.content.filter(item => item.path === showPath).forEach((item) => {\r\n item.config.hidden = false;\r\n item.config.disabled = false;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n const relationships = rootGetters['relationships/getContent'];\r\n const isPathActive = rootGetters['cart/isPathActive'];\r\n const relevantRelationships = relationships.filter(relationship => relationship.conditions.includes(target.path));\r\n\r\n if (quantity && relevantRelationships.length) {\r\n relevantRelationships.forEach((relationship) => {\r\n let conditionsLeft = relationship.conditions.length;\r\n\r\n relationship.conditions.forEach((conditionPath) => {\r\n if (isPathActive(conditionPath)) {\r\n conditionsLeft -= 1;\r\n }\r\n });\r\n\r\n if (conditionsLeft === 0) {\r\n if (relationship.hide) {\r\n relationship.hide.forEach((hidePath) => {\r\n state.content.filter(item => item.path === hidePath).forEach((item) => {\r\n item.quantity = 0;\r\n item.config.disabled = true;\r\n item.config.hidden = true;\r\n });\r\n });\r\n }\r\n\r\n if (relationship.show) {\r\n relationship.show.forEach((showPath) => {\r\n state.content.filter(item => item.path === showPath).forEach((item) => {\r\n item.config.hidden = false;\r\n item.config.disabled = false;\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n },\r\n\r\n [SET_PREVIOUS_CONTENT](state) {\r\n state.content = state.previousContent;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/cart/mutations.js","export default {\r\n content: null,\r\n previousContent: null\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/cart/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movel/index.js","import * as types from './types';\r\n\r\nexport const setPortability = ({ commit }, payload) => {\r\n commit(types.SET_PORTABILITY, payload);\r\n};\r\n\r\nexport const setAddicionalNumbers = ({ commit }, payload) => {\r\n commit(types.SET_ADDICIONAL_NUMBERS, payload);\r\n};\r\n\r\nexport const updateAdditionalPlanValue = ({ commit }, payload) => {\r\n commit(types.UPDATE_ADDITIONAL_PLAN_VALUE, payload);\r\n};\r\n\r\nexport const updateMovelNumberPortabilityInfo = ({ commit }, payload) => {\r\n commit(types.UPDATE_PORTABILITY_INFO_VALUE, payload);\r\n};\r\n\r\nexport const setAvailableNumbers = ({ commit }, payload) => {\r\n commit(types.SET_AVAILABLE_NUMBERS, payload);\r\n};\r\n\r\nexport const setChosenNumber = ({ commit }, payload) => {\r\n commit(types.SET_CHOSEN_NUMBER, payload);\r\n};\r\n\r\nexport const setPaymentEntity = ({ commit }, payload) => {\r\n commit(types.SET_PAYMENT_ENTITY, payload);\r\n};\r\n\r\nexport const setPaymentRef = ({ commit }, payload) => {\r\n commit(types.SET_PAYMENT_REF, payload);\r\n};\r\n\r\nexport const setPaymentTotal = ({ commit }, payload) => {\r\n commit(types.SET_PAYMENT_TOTAL, payload);\r\n};\r\n\r\nexport const setLastSessionId = ({ commit }, payload) => {\r\n commit(types.SET_LAST_SESSION_ID, payload);\r\n};\r\n\r\nexport default {\r\n setPortability,\r\n setAddicionalNumbers,\r\n updateAdditionalPlanValue,\r\n updateMovelNumberPortabilityInfo,\r\n setAvailableNumbers,\r\n setChosenNumber,\r\n setPaymentEntity,\r\n setPaymentRef,\r\n setPaymentTotal,\r\n setLastSessionId\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movel/actions.js","export const SET_PORTABILITY = 'SET_PORTABILITY';\r\nexport const SET_AVAILABLE_NUMBERS = 'SET_AVAILABLE_NUMBERS';\r\nexport const SET_ADDICIONAL_NUMBERS = 'SET_ADDICIONAL_NUMBERS';\r\nexport const UPDATE_ADDITIONAL_PLAN_VALUE = 'UPDATE_ADDITIONAL_PLAN_VALUE';\r\nexport const SET_CHOSEN_NUMBER = 'SET_CHOSEN_NUMBER';\r\nexport const SET_PAYMENT_ENTITY = 'SET_PAYMENT_ENTITY';\r\nexport const SET_PAYMENT_REF = 'SET_PAYMENT_REF';\r\nexport const SET_PAYMENT_TOTAL = 'SET_PAYMENT_TOTAL';\r\nexport const SET_LAST_SESSION_ID = 'SET_LAST_SESSION_ID';\r\nexport const UPDATE_PORTABILITY_INFO_VALUE = 'UPDATE_PORTABILITY_INFO_VALUE';\r\n\r\nexport default {\r\n SET_PORTABILITY,\r\n SET_ADDICIONAL_NUMBERS,\r\n UPDATE_ADDITIONAL_PLAN_VALUE,\r\n UPDATE_PORTABILITY_INFO_VALUE,\r\n SET_AVAILABLE_NUMBERS,\r\n SET_CHOSEN_NUMBER,\r\n SET_PAYMENT_ENTITY,\r\n SET_PAYMENT_REF,\r\n SET_PAYMENT_TOTAL,\r\n SET_LAST_SESSION_ID\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movel/types.js","export const getHasNowoNumber = (state) => {\r\n if (!state.portability) return true;\r\n\r\n return state.addicionalNumbers.some(number => !number.portability);\r\n};\r\nexport const getPortability = state => state.portability;\r\nexport const getAddicionalNumbers = state => state.addicionalNumbers;\r\nexport const getAvailableNumbers = state => state.availableNumbers;\r\nexport const getChosenNumber = state => state.chosenNumber;\r\nexport const getPaymentEntity = state => state.paymentInfo.entity;\r\nexport const getPaymentRef = state => state.paymentInfo.ref;\r\nexport const getPaymentTotal = state => state.paymentInfo.total;\r\nexport const getLastSessionId = state => state.lastSessionId;\r\nexport const getPortabilityInfo = state => state.portabilityInfo;\r\nexport const getPortabilityInfoProvider = state => state.portabilityInfo.provider;\r\n\r\nexport default {\r\n getHasNowoNumber,\r\n getPortability,\r\n getAddicionalNumbers,\r\n getAvailableNumbers,\r\n getChosenNumber,\r\n getPaymentEntity,\r\n getPaymentRef,\r\n getPaymentTotal,\r\n getLastSessionId,\r\n getPortabilityInfo,\r\n getPortabilityInfoProvider\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movel/getters.js","import {\r\n SET_PORTABILITY,\r\n SET_ADDICIONAL_NUMBERS,\r\n UPDATE_ADDITIONAL_PLAN_VALUE,\r\n UPDATE_PORTABILITY_INFO_VALUE,\r\n SET_AVAILABLE_NUMBERS,\r\n SET_CHOSEN_NUMBER,\r\n SET_PAYMENT_ENTITY,\r\n SET_PAYMENT_REF,\r\n SET_PAYMENT_TOTAL,\r\n SET_LAST_SESSION_ID\r\n} from './types';\r\n\r\nexport default {\r\n [SET_PORTABILITY](state, payload) {\r\n state.portability = payload;\r\n },\r\n\r\n [SET_ADDICIONAL_NUMBERS](state, payload) {\r\n state.addicionalNumbers = payload;\r\n },\r\n\r\n [UPDATE_ADDITIONAL_PLAN_VALUE](state, payload) {\r\n const position = state.addicionalNumbers.findIndex(plan => plan.phone === payload.plan.phone);\r\n state.addicionalNumbers[position][payload.key] = payload.value;\r\n },\r\n\r\n [UPDATE_PORTABILITY_INFO_VALUE](state, payload) {\r\n state.portabilityInfo[payload.key] = payload.value;\r\n },\r\n\r\n [SET_AVAILABLE_NUMBERS](state, payload) {\r\n state.availableNumbers = payload;\r\n },\r\n\r\n [SET_CHOSEN_NUMBER](state, payload) {\r\n state.chosenNumber = payload;\r\n },\r\n\r\n [SET_PAYMENT_ENTITY](state, payload) {\r\n state.paymentInfo.entity = payload;\r\n },\r\n\r\n [SET_PAYMENT_REF](state, payload) {\r\n state.paymentInfo.ref = payload;\r\n },\r\n\r\n [SET_PAYMENT_TOTAL](state, payload) {\r\n state.paymentInfo.total = payload;\r\n },\r\n\r\n [SET_LAST_SESSION_ID](state, payload) {\r\n state.lastSessionId = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movel/mutations.js","export default {\r\n portability: false,\r\n addicionalNumbers: [],\r\n availableNumbers: [],\r\n lastSessionId: null,\r\n chosenNumber: null,\r\n paymentInfo: {\r\n entity: null,\r\n ref: null,\r\n total: null\r\n },\r\n portabilityInfo: {\r\n isCVPValid: null,\r\n isOTPValid: false,\r\n otpTries: 3,\r\n cvp: '',\r\n provider: '',\r\n sentSMS: false,\r\n otp: '',\r\n date: '',\r\n isNumberValid: null,\r\n showDate: false\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movel/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/offers/index.js","import * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport default {\r\n setContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/offers/actions.js","export const SET_CONTENT = 'SET_CONTENT';\r\n\r\nexport default {\r\n SET_CONTENT\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/offers/types.js","export const getContent = (state, getters, rootState) => {\r\n const packageName = rootState.simulation.package;\r\n\r\n if (!packageName) {\r\n return null;\r\n }\r\n\r\n const parentPackage = packageName.indexOf('.') >= 0 ? packageName.split('.')[0] : null;\r\n\r\n const filteredContent = state.content.filter(offer => offer.subject.scope === '*' || offer.subject.scope === packageName || (parentPackage && offer.subject.scope === parentPackage));\r\n\r\n return filteredContent;\r\n};\r\n\r\nexport const getValidOffers = (state, getters) => {\r\n const offers = getters.getContent.filter(offer => getters.isOfferValid(offer));\r\n\r\n const activeOffers = [];\r\n const displayOffers = offers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (activeOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n activeOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return displayOffers;\r\n};\r\n\r\nexport const getValidDiscountOffers = (state, getters) => {\r\n const offers = getters.getValidOffers.filter(offer => offer.subject.type === 'discount');\r\n\r\n const activeOffers = [];\r\n const displayOffers = offers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (activeOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n activeOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return displayOffers;\r\n};\r\n\r\nexport const getValidDiscountOffersValue = (state, getters) => {\r\n const offers = getters.getValidDiscountOffers;\r\n\r\n if (!offers.length) {\r\n return 0;\r\n }\r\n\r\n const mappedOffers = offers.map(offer => offer.subject.value);\r\n const total = mappedOffers.reduce((sum, x) => sum + x);\r\n\r\n return total;\r\n};\r\n\r\nexport const getValidDiscountLoudOffers = (state, getters) => {\r\n const offers = getters.getValidDiscountOffers.filter(offer => !offer.subject.silentOnStrikedPrice);\r\n\r\n return offers;\r\n};\r\n\r\nexport const getValidDiscountLoudOffersValue = (state, getters) => {\r\n const offers = getters.getValidDiscountLoudOffers;\r\n\r\n if (!offers.length) {\r\n return 0;\r\n }\r\n\r\n const mappedOffers = offers.map(offer => offer.subject.value);\r\n const total = mappedOffers.reduce((sum, x) => sum + x);\r\n\r\n return total;\r\n};\r\n\r\nexport const getValidDiscountSilentOffers = (state, getters) => {\r\n const offers = getters.getValidDiscountOffers.filter(offer => offer.subject.silentOnStrikedPrice);\r\n\r\n return offers;\r\n};\r\n\r\nexport const getValidDiscountSilentOffersValue = (state, getters) => {\r\n const offers = getters.getValidDiscountSilentOffers;\r\n\r\n if (!offers.length) {\r\n return 0;\r\n }\r\n\r\n const mappedOffers = offers.map(offer => offer.subject.value);\r\n const total = mappedOffers.reduce((sum, x) => sum + x);\r\n\r\n return total;\r\n};\r\n\r\nexport const getValidPercentageOffers = (state, getters) => {\r\n const offers = getters.getValidOffers.filter(offer => offer.subject.type === 'percentage');\r\n\r\n const activeOffers = [];\r\n const displayOffers = offers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (activeOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n activeOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return displayOffers;\r\n};\r\n\r\nexport const getValidPercentageOffersValue = (satte, getters) => {\r\n const offers = getters.getValidPercentageOffers;\r\n\r\n if (!offers.length) {\r\n return 0;\r\n }\r\n\r\n const mappedOffers = offers.map(offer => offer.subject.value);\r\n const total = mappedOffers.reduce((sum, x) => sum + x);\r\n\r\n return total;\r\n};\r\n\r\nexport const getValidExternalOffers = (state, getters) => {\r\n const offers = getters.getValidOffers.filter(offer => offer.subject.type === 'external');\r\n\r\n const activeOffers = [];\r\n const displayOffers = offers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (activeOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n activeOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return displayOffers;\r\n};\r\n\r\nexport const getValidInternalOffers = (state, getters) => {\r\n const offers = getters.getValidOffers.filter(offer => offer.subject.type === 'internal');\r\n\r\n const activeOffers = [];\r\n const displayOffers = offers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (activeOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n activeOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return displayOffers;\r\n};\r\n\r\nexport const isOfferVoid = (state, getters, rootState, rootGetters) => (_offer) => {\r\n // If any void path is active, the offer resolves to void.\r\n const voidItemsQuantity = _offer.relationships && _offer.relationships.void ? _offer.relationships.void.length : 0;\r\n\r\n if (voidItemsQuantity) {\r\n return _offer.relationships.void.some((path) => {\r\n // In a void relationship, an array means that all paths within the array are required to be active in order to void the offer\r\n if (Array.isArray(path)) {\r\n return path.every((itemPath) => {\r\n // If an element of an array is itself an array, at least one of the paths must be active in order to resolve that element to true\r\n if (Array.isArray(itemPath)) {\r\n return itemPath.some((subItemPath) => {\r\n const isExcluding = subItemPath.startsWith('!');\r\n const isWildcard = subItemPath.endsWith('*');\r\n const computedPath = subItemPath.replace('!', '').replace('*', '');\r\n\r\n if (isWildcard) {\r\n return isExcluding ? !rootGetters['cart/isPathBeginningWithActive'](computedPath)(computedPath) : rootGetters['cart/isPathBeginningWithActive'](computedPath);\r\n }\r\n\r\n return isExcluding ? !rootGetters['cart/isPathActive'](computedPath) : rootGetters['cart/isPathActive'](computedPath);\r\n });\r\n }\r\n\r\n const isExcluding = itemPath.startsWith('!');\r\n const isWildcard = itemPath.endsWith('*');\r\n const computedPath = itemPath.replace('!', '').replace('*', '');\r\n\r\n if (isWildcard) {\r\n return isExcluding ? !rootGetters['cart/isPathBeginningWithActive'](computedPath) : rootGetters['cart/isPathBeginningWithActive'](computedPath);\r\n }\r\n\r\n return isExcluding ? !rootGetters['cart/isPathActive'](computedPath) : rootGetters['cart/isPathActive'](computedPath);\r\n });\r\n }\r\n\r\n const isExcluding = path.startsWith('!');\r\n const isWildcard = path.endsWith('*');\r\n const computedPath = path.replace('!', '').replace('*', '');\r\n\r\n if (isWildcard) {\r\n return isExcluding ? !rootGetters['cart/isPathBeginningWithActive'](computedPath) : rootGetters['cart/isPathBeginningWithActive'](computedPath);\r\n }\r\n\r\n return isExcluding ? !rootGetters['cart/isPathActive'](computedPath) : rootGetters['cart/isPathActive'](computedPath);\r\n });\r\n }\r\n\r\n // If there are no defined relationships, the offer is not void.\r\n return false;\r\n};\r\n\r\nexport const isOfferValid = (state, getters, rootState, rootGetters) => (_offer) => {\r\n // Bail if offer is void.\r\n if (getters.isOfferVoid(_offer)) {\r\n return false;\r\n }\r\n\r\n // If all required paths are active, the offer resolves to valid.\r\n const requiredItemsQuantity = _offer.relationships && _offer.relationships.required ? _offer.relationships.required.length : 0;\r\n\r\n if (requiredItemsQuantity) {\r\n return _offer.relationships.required.every((path) => {\r\n if (Array.isArray(path)) {\r\n return path.some(itemPath => rootGetters['cart/isPathActive'](itemPath));\r\n }\r\n\r\n return rootGetters['cart/isPathActive'](path);\r\n });\r\n }\r\n\r\n // If there are no defined relationships, the offer resolves to valid.\r\n return true;\r\n};\r\n\r\nexport const isPathAnOffer = (state, getters) => (_path) => {\r\n const offers = getters.getContent.filter(offer => offer.subject.target === _path && getters.isOfferValid(offer));\r\n\r\n return !!offers.length;\r\n};\r\n\r\nexport default {\r\n getContent,\r\n getValidOffers,\r\n getValidDiscountOffers,\r\n getValidDiscountOffersValue,\r\n getValidDiscountLoudOffers,\r\n getValidDiscountLoudOffersValue,\r\n getValidDiscountSilentOffers,\r\n getValidDiscountSilentOffersValue,\r\n getValidExternalOffers,\r\n getValidInternalOffers,\r\n getValidPercentageOffers,\r\n getValidPercentageOffersValue,\r\n isOfferVoid,\r\n isOfferValid,\r\n isPathAnOffer\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/offers/getters.js","import {\r\n SET_CONTENT\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/offers/mutations.js","export default {\r\n content: []\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/offers/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/simulation/index.js","import * as types from './types';\r\n\r\nexport const setActivePackage = ({ commit }, activePackage) => {\r\n commit(types.SET_ACTIVE, activePackage);\r\n};\r\n\r\nexport const setLeaveIntention = ({ commit }, leaveIntention) => {\r\n commit(types.SET_LEAVE_INTENTION, leaveIntention);\r\n};\r\n\r\nexport const setContactIntention = ({ commit }, payload) => {\r\n commit(types.SET_CONTACT_INTENTION, payload);\r\n};\r\n\r\nexport const setStatus = ({ commit }, status) => {\r\n commit(types.SET_STATUS, status);\r\n};\r\n\r\nexport const setScroll = ({ commit }, hasScroll) => {\r\n commit(types.SET_SCROLL, hasScroll);\r\n};\r\n\r\nexport const setId = ({ commit }, id) => {\r\n commit(types.SET_ID, id);\r\n};\r\n\r\nexport const setVersion = ({ commit }, version) => {\r\n commit(types.SET_VERSION, version);\r\n};\r\n\r\nexport const setExternal = ({ commit }, payload) => {\r\n commit(types.SET_EXTERNAL, payload);\r\n};\r\n\r\nexport const setPackage = ({ commit }, payload) => {\r\n commit(types.SET_PACKAGE, payload);\r\n};\r\n\r\nexport const setPrePackage = ({ commit }, payload) => {\r\n commit(types.SET_PREPACKAGE, payload);\r\n};\r\n\r\nexport const setTrackingPackage = ({ commit }, payload) => {\r\n commit(types.SET_TRACKING_PACKAGE, payload);\r\n};\r\n\r\nexport const setAvailableNumbers = ({ commit }, payload) => {\r\n commit(types.SET_AVAILABLE_NUMBERS, payload);\r\n};\r\n\r\nexport const setSettingsName = ({ commit }, payload) => {\r\n commit(types.SET_SETTINGS_NAME, payload);\r\n};\r\n\r\nexport const setFrameVisibility = ({ commit }, payload) => {\r\n commit(types.SET_FRAME_VISIBILITY, payload);\r\n};\r\n\r\nexport const setFrameUrl = ({ commit }, payload) => {\r\n commit(types.SET_FRAME_URL, payload);\r\n};\r\n\r\nexport const setAuth = ({ commit }, payload) => {\r\n commit(types.SET_AUTH, payload);\r\n};\r\n\r\nexport const setAuthToken = ({ commit }, payload) => {\r\n commit(types.SET_AUTH_TOKEN, payload);\r\n};\r\n\r\nexport const setSalesGateway = ({ commit }, payload) => {\r\n commit(types.SET_SALES_GATEWAY, payload);\r\n};\r\n\r\nexport const setMode = ({ commit }, payload) => {\r\n commit(types.SET_MODE, payload);\r\n};\r\n\r\nexport const setReferral = ({ commit }, payload) => {\r\n if (typeof payload === 'number' && payload.toString().length === 8) {\r\n commit(types.SET_REFERRAL, payload);\r\n }\r\n};\r\n\r\nexport const setEditable = ({ commit }, payload) => {\r\n commit(types.SET_EDITABLE, payload);\r\n};\r\n\r\nexport const setAsBundle = ({ commit }, payload = true) => {\r\n commit(types.SET_AS_BUNDLE, payload);\r\n};\r\nexport const setPortableInfo = ({ commit }, payload) => {\r\n commit(types.SET_PORTABLE_INFO, payload);\r\n};\r\n\r\nexport default {\r\n setActivePackage,\r\n setLeaveIntention,\r\n setContactIntention,\r\n setScroll,\r\n setStatus,\r\n setId,\r\n setVersion,\r\n setExternal,\r\n setPackage,\r\n setPrePackage,\r\n setTrackingPackage,\r\n setAvailableNumbers,\r\n setSettingsName,\r\n setFrameVisibility,\r\n setFrameUrl,\r\n setAuth,\r\n setAuthToken,\r\n setSalesGateway,\r\n setMode,\r\n setReferral,\r\n setEditable,\r\n setAsBundle,\r\n setPortableInfo\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/simulation/actions.js","export const SET_ACTIVE = 'SET_ACTIVE';\r\nexport const SET_LEAVE_INTENTION = 'SET_LEAVE_INTENTION';\r\nexport const SET_CONTACT_INTENTION = 'SET_CONTACT_INTENTION';\r\nexport const SET_SCROLL = 'SET_SCROLL';\r\nexport const SET_STATUS = 'SET_STATUS';\r\nexport const SET_ID = 'SET_ID';\r\nexport const SET_VERSION = 'SET_VERSION';\r\nexport const SET_EXTERNAL = 'SET_EXTERNAL';\r\nexport const SET_PACKAGE = 'SET_PACKAGE';\r\nexport const SET_PREPACKAGE = 'SET_PREPACKAGE';\r\nexport const SET_TRACKING_PACKAGE = 'SET_TRACKING_PACKAGE';\r\nexport const SET_AVAILABLE_NUMBERS = 'SET_AVAILABLE_NUMBERS';\r\nexport const SET_SETTINGS_NAME = 'SET_SETTINGS_NAME';\r\nexport const SET_FRAME_VISIBILITY = 'SET_FRAME_VISIBILITY';\r\nexport const SET_FRAME_URL = 'SET_FRAME_URL';\r\nexport const SET_AUTH = 'SET_AUTH';\r\nexport const SET_AUTH_TOKEN = 'SET_AUTH_TOKEN';\r\nexport const SET_SALES_GATEWAY = 'SET_SALES_GATEWAY';\r\nexport const SET_MODE = 'SET_MODE';\r\nexport const SET_REFERRAL = 'SET_REFERRAL';\r\nexport const SET_EDITABLE = 'SET_EDITABLE';\r\nexport const SET_AS_BUNDLE = 'SET_AS_BUNDLE';\r\nexport const SET_PORTABLE_INFO = 'SET_PORTABLE_INFO';\r\n\r\nexport default {\r\n SET_ACTIVE,\r\n SET_LEAVE_INTENTION,\r\n SET_CONTACT_INTENTION,\r\n SET_SCROLL,\r\n SET_STATUS,\r\n SET_ID,\r\n SET_VERSION,\r\n SET_EXTERNAL,\r\n SET_PACKAGE,\r\n SET_PREPACKAGE,\r\n SET_TRACKING_PACKAGE,\r\n SET_AVAILABLE_NUMBERS,\r\n SET_SETTINGS_NAME,\r\n SET_FRAME_VISIBILITY,\r\n SET_FRAME_URL,\r\n SET_AUTH,\r\n SET_AUTH_TOKEN,\r\n SET_SALES_GATEWAY,\r\n SET_MODE,\r\n SET_REFERRAL,\r\n SET_EDITABLE,\r\n SET_AS_BUNDLE,\r\n SET_PORTABLE_INFO\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/simulation/types.js","import __cloneDeep from 'lodash/cloneDeep';\r\nimport __get from 'lodash/get';\r\n\r\nexport const getActivePackage = state => state.activePackage;\r\nexport const getLeaveIntention = state => state.leaveIntention;\r\nexport const getContactIntention = state => state.contactIntention;\r\nexport const getModule = state => name => state.activePackage[name];\r\nexport const getModuleComponents = state => name => state.activePackage[name].components;\r\nexport const getModuleExtra = state => name => state.activePackage[name].extra;\r\nexport const getModuleChildren = state => name => state.activePackage[name].children;\r\nexport const getModuleConfig = state => name => state.activePackage[name].config;\r\nexport const getByPath = state => path => __cloneDeep(__get(state.activePackage, path));\r\nexport const getStatus = state => state.status;\r\nexport const getHasScroll = state => state.hasScroll;\r\nexport const getId = state => state.id;\r\nexport const getVersion = state => state.version;\r\nexport const getExternal = state => state.external;\r\nexport const getPackage = state => state.package;\r\nexport const getPrePackage = state => state.prePackage;\r\nexport const getTrackingPackage = state => state.trackingPackage;\r\nexport const getAvailableNumbers = state => state.availableNumbers;\r\nexport const getSettingsName = state => state.settingsName;\r\n\r\nexport const getSimulationType = (state, getters, rootState, rootGetters) => {\r\n const config = rootGetters['packages/getActivePackageConfig'];\r\n\r\n if (!config || !config.simulationType) {\r\n return null;\r\n }\r\n\r\n return config.simulationType;\r\n};\r\nexport const getFrameVisibility = state => state.isFrameVisible;\r\nexport const getFrameUrl = state => state.frameUrl;\r\nexport const getAuth = state => state.authed;\r\nexport const getAuthToken = state => state.authToken;\r\nexport const getSalesGateway = state => state.salesGateway;\r\nexport const getMode = state => state.mode;\r\nexport const getReferral = state => state.referral;\r\nexport const getEditable = state => state.editable;\r\nexport const getBundled = state => state.isBundle;\r\nexport const getPortableInfo = state => state.isInfoVisible;\r\n\r\nexport default {\r\n getActivePackage,\r\n getLeaveIntention,\r\n getContactIntention,\r\n getByPath,\r\n getModule,\r\n getModuleComponents,\r\n getModuleExtra,\r\n getModuleChildren,\r\n getModuleConfig,\r\n getStatus,\r\n getHasScroll,\r\n getId,\r\n getVersion,\r\n getExternal,\r\n getPackage,\r\n getAvailableNumbers,\r\n getPrePackage,\r\n getTrackingPackage,\r\n getSettingsName,\r\n getSimulationType,\r\n getFrameVisibility,\r\n getFrameUrl,\r\n getAuth,\r\n getAuthToken,\r\n getSalesGateway,\r\n getMode,\r\n getReferral,\r\n getEditable,\r\n getBundled,\r\n getPortableInfo\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/simulation/getters.js","import {\r\n SET_ACTIVE,\r\n SET_LEAVE_INTENTION,\r\n SET_CONTACT_INTENTION,\r\n SET_SCROLL,\r\n SET_STATUS,\r\n SET_ID,\r\n SET_VERSION,\r\n SET_EXTERNAL,\r\n SET_PACKAGE,\r\n SET_PREPACKAGE,\r\n SET_TRACKING_PACKAGE,\r\n SET_AVAILABLE_NUMBERS,\r\n SET_SETTINGS_NAME,\r\n SET_FRAME_VISIBILITY,\r\n SET_FRAME_URL,\r\n SET_AUTH,\r\n SET_AUTH_TOKEN,\r\n SET_SALES_GATEWAY,\r\n SET_MODE,\r\n SET_REFERRAL,\r\n SET_EDITABLE,\r\n SET_AS_BUNDLE,\r\n SET_PORTABLE_INFO\r\n} from './types';\r\n\r\nexport default {\r\n [SET_ACTIVE](state, activePackage) {\r\n state.activePackage = activePackage;\r\n },\r\n\r\n [SET_LEAVE_INTENTION](state, intention) {\r\n state.leaveIntention = intention;\r\n },\r\n\r\n [SET_CONTACT_INTENTION](state, payload) {\r\n state.contactIntention = payload;\r\n },\r\n\r\n [SET_SCROLL](state, hasScroll) {\r\n state.hasScroll = hasScroll;\r\n },\r\n\r\n [SET_STATUS](state, status) {\r\n state.status = status;\r\n },\r\n\r\n [SET_ID](state, id) {\r\n state.id = id;\r\n },\r\n\r\n [SET_VERSION](state, version) {\r\n state.version = version;\r\n },\r\n\r\n [SET_EXTERNAL](state, payload) {\r\n state.external = payload;\r\n },\r\n\r\n [SET_PACKAGE](state, payload) {\r\n window.simulationPackage = window.simulationPackage || payload;\r\n\r\n state.package = payload;\r\n },\r\n\r\n [SET_PREPACKAGE](state, payload) {\r\n state.prePackage = payload;\r\n },\r\n\r\n [SET_TRACKING_PACKAGE](state, payload) {\r\n state.trackingPackage = payload;\r\n },\r\n\r\n [SET_AVAILABLE_NUMBERS](state, payload) {\r\n state.availableNumbers = payload;\r\n },\r\n\r\n [SET_SETTINGS_NAME](state, payload) {\r\n state.settingsName = payload;\r\n },\r\n\r\n [SET_FRAME_VISIBILITY](state, payload) {\r\n state.isFrameVisible = payload;\r\n },\r\n\r\n [SET_FRAME_URL](state, payload) {\r\n state.frameUrl = payload;\r\n },\r\n\r\n [SET_AUTH](state, payload) {\r\n state.authed = payload;\r\n },\r\n\r\n [SET_AUTH_TOKEN](state, payload) {\r\n state.authToken = payload;\r\n },\r\n\r\n [SET_SALES_GATEWAY](state, payload) {\r\n state.salesGateway = payload;\r\n },\r\n\r\n [SET_MODE](state, payload) {\r\n state.mode = payload;\r\n },\r\n\r\n [SET_REFERRAL](state, payload) {\r\n state.referral = payload;\r\n },\r\n\r\n [SET_EDITABLE](state, payload) {\r\n state.editable = payload;\r\n },\r\n\r\n [SET_AS_BUNDLE](state, payload) {\r\n state.isBundle = payload;\r\n },\r\n [SET_PORTABLE_INFO](state, payload) {\r\n state.isInfoVisible = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/simulation/mutations.js","export default {\r\n id: null,\r\n version: null,\r\n activePackage: null,\r\n leaveIntention: false,\r\n contactIntention: false,\r\n status: null,\r\n hasScroll: null,\r\n external: false,\r\n package: null,\r\n prePackage: null,\r\n trackingPackage: null,\r\n availableNumbers: [],\r\n settingsName: null,\r\n isFrameVisible: false,\r\n frameUrl: '',\r\n authed: false,\r\n authToken: null,\r\n salesGateway: null,\r\n mode: '',\r\n referral: null,\r\n editable: true,\r\n isBundle: null,\r\n isInfoVisible: null\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/simulation/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/timeline/index.js","import * as types from './types';\r\n\r\nexport const initialize = ({ dispatch, rootGetters }) => {\r\n const _package = rootGetters['simulation/getActivePackage'];\r\n const activePackageConfig = rootGetters['packages/getActivePackageConfig'];\r\n\r\n const hideModules = [\r\n 'fatura_detalhe'\r\n ];\r\n\r\n if (activePackageConfig.simulationType !== 'msaPosPago' && activePackageConfig.simulationType !== 'PartnersPostPaid') {\r\n hideModules.push('movel_adicionais');\r\n }\r\n\r\n const items = [];\r\n\r\n if (!activePackageConfig.features.disablePackageStartPage) {\r\n items.push({\r\n name: 'Início',\r\n handle: 'inicio',\r\n navigatable: false,\r\n display: true\r\n });\r\n }\r\n\r\n Object.keys(_package).forEach((moduleName) => {\r\n if (!moduleName.startsWith('_')) {\r\n const $module = _package[moduleName];\r\n\r\n items.push({\r\n name: $module.meta.title,\r\n handle: moduleName,\r\n navigatable: true,\r\n display: !hideModules.includes(moduleName)\r\n });\r\n\r\n if ($module.children && !$module.config.childrenNotNavigatable) {\r\n Object.keys($module.children).forEach((childName) => {\r\n items.push({\r\n name: $module.meta.title,\r\n handle: childName,\r\n navigatable: true,\r\n display: false\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n items.push({\r\n name: 'Concluir',\r\n handle: 'concluir',\r\n navigatable: false,\r\n display: true\r\n });\r\n\r\n dispatch('setNavigation', items);\r\n};\r\n\r\nexport const setBlocked = ({ commit }, payload) => {\r\n commit(types.SET_BLOCKED, payload);\r\n};\r\n\r\nexport const setCurrent = ({ commit }, payload) => {\r\n commit(types.SET_CURRENT, payload);\r\n};\r\n\r\nexport const setNavigation = ({ commit }, payload) => {\r\n commit(types.SET_NAVIGATION, payload);\r\n};\r\n\r\nexport const setVisibility = ({ commit }, payload) => {\r\n commit(types.SET_VISIBILITY, payload);\r\n};\r\n\r\nexport default {\r\n initialize,\r\n setBlocked,\r\n setCurrent,\r\n setNavigation,\r\n setVisibility\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/timeline/actions.js","export const SET_CURRENT = 'SET_CURRENT';\r\nexport const SET_NAVIGATION = 'SET_NAVIGATION';\r\nexport const SET_BLOCKED = 'SET_BLOCKED';\r\nexport const SET_VISIBILITY = 'SET_VISIBILITY';\r\n\r\nexport default {\r\n SET_CURRENT,\r\n SET_NAVIGATION,\r\n SET_BLOCKED,\r\n SET_VISIBILITY\r\n};\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/timeline/types.js","export const getBlocked = state => state.blocked;\r\nexport const getCurrent = state => state.current;\r\nexport const getItems = state => state.items;\r\nexport const getItemsLength = state => state.items.filter(item => item.display).length;\r\nexport const getVisibility = state => state.isVisible;\r\n\r\nexport default {\r\n getBlocked,\r\n getCurrent,\r\n getItems,\r\n getItemsLength,\r\n getVisibility\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/timeline/getters.js","import {\r\n SET_CURRENT,\r\n SET_NAVIGATION,\r\n SET_BLOCKED,\r\n SET_VISIBILITY\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CURRENT](state, payload) {\r\n state.current = payload;\r\n },\r\n\r\n [SET_NAVIGATION](state, payload) {\r\n state.items = payload;\r\n },\r\n\r\n [SET_BLOCKED](state, payload) {\r\n state.blocked = payload;\r\n },\r\n\r\n [SET_VISIBILITY](state, payload) {\r\n state.isVisible = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/timeline/mutations.js","export default {\r\n current: 0,\r\n items: [],\r\n blocked: false,\r\n isVisible: false\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/timeline/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/errors/index.js","import * as types from './types';\r\n\r\nexport const setShowError = ({ commit }, payload) => {\r\n commit(types.SET_SHOW_ERROR, payload);\r\n};\r\nexport const setErrorMessage = ({ commit }, payload) => {\r\n commit(types.SET_ERROR_MESSAGE, payload);\r\n};\r\nexport const setErrorTitle = ({ commit }, payload) => {\r\n commit(types.SET_ERROR_TITLE, payload);\r\n};\r\nexport const setRedirectPageOnError = ({ commit }, payload) => {\r\n commit(types.SET_REDIRECT_PAGE_ON_ERROR, payload);\r\n};\r\nexport const setRedirectPageOnErrorMessage = ({ commit }, payload) => {\r\n commit(types.SET_REDIRECT_PAGE_ON_ERROR_MESSAGE, payload);\r\n};\r\nexport const setBlockEmailSubmission = ({ commit }, payload) => {\r\n commit(types.SET_BLOCK_EMAIL_SUBMISSION, payload);\r\n};\r\n\r\nexport default {\r\n setShowError,\r\n setErrorMessage,\r\n setErrorTitle,\r\n setRedirectPageOnError,\r\n setRedirectPageOnErrorMessage,\r\n setBlockEmailSubmission\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/errors/actions.js","export const SET_SHOW_ERROR = 'SET_SHOW_ERROR';\r\nexport const SET_ERROR_MESSAGE = 'SET_ERROR_MESSAGE';\r\nexport const SET_ERROR_TITLE = 'SET_ERROR_TITLE';\r\nexport const SET_REDIRECT_PAGE_ON_ERROR = 'SET_REDIRECT_PAGE_ON_ERROR';\r\nexport const SET_REDIRECT_PAGE_ON_ERROR_MESSAGE = 'SET_REDIRECT_PAGE_ON_ERROR_MESSAGE';\r\nexport const SET_BLOCK_EMAIL_SUBMISSION = 'SET_BLOCK_EMAIL_SUBMISSION';\r\n\r\nexport default {\r\n SET_SHOW_ERROR,\r\n SET_ERROR_MESSAGE,\r\n SET_ERROR_TITLE,\r\n SET_REDIRECT_PAGE_ON_ERROR,\r\n SET_REDIRECT_PAGE_ON_ERROR_MESSAGE,\r\n SET_BLOCK_EMAIL_SUBMISSION\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/errors/types.js","export const getShowError = state => state.showError;\r\nexport const getErrorMessage = state => state.errorMessage;\r\nexport const getErrorTitle = state => state.errorTitle;\r\nexport const getRedirectPageOnError = state => state.redirectPageOnError;\r\nexport const getRedirectPageOnErrorMessage = state => state.redirectPageOnErrorMessage;\r\nexport const getBlockEmailSubmission = state => state.blockEmailSubmission;\r\n\r\nexport default {\r\n getShowError,\r\n getErrorMessage,\r\n getErrorTitle,\r\n getRedirectPageOnError,\r\n getRedirectPageOnErrorMessage,\r\n getBlockEmailSubmission\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/errors/getters.js","import {\r\n SET_SHOW_ERROR,\r\n SET_ERROR_MESSAGE,\r\n SET_ERROR_TITLE,\r\n SET_REDIRECT_PAGE_ON_ERROR,\r\n SET_REDIRECT_PAGE_ON_ERROR_MESSAGE,\r\n SET_BLOCK_EMAIL_SUBMISSION\r\n} from './types';\r\n\r\nexport default {\r\n [SET_SHOW_ERROR](state, payload) {\r\n state.showError = payload;\r\n },\r\n\r\n [SET_ERROR_MESSAGE](state, payload) {\r\n state.errorMessage = payload;\r\n },\r\n\r\n [SET_ERROR_TITLE](state, payload) {\r\n state.errorTitle = payload;\r\n },\r\n\r\n [SET_REDIRECT_PAGE_ON_ERROR](state, payload) {\r\n state.redirectPageOnError = payload;\r\n },\r\n\r\n [SET_REDIRECT_PAGE_ON_ERROR_MESSAGE](state, payload) {\r\n state.redirectPageOnErrorMessage = payload;\r\n },\r\n\r\n [SET_BLOCK_EMAIL_SUBMISSION](state, payload) {\r\n state.blockEmailSubmission = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/errors/mutations.js","export default {\r\n showError: null,\r\n errorMessage: null,\r\n errorTitle: null,\r\n redirectPageOnError: null,\r\n redirectPageOnErrorMessage: null,\r\n blockEmailSubmission: null\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/errors/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/overlay/index.js","import * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport const setTitle = ({ commit }, payload = null) => {\r\n commit(types.SET_TITLE, payload);\r\n};\r\n\r\nexport const setVisibility = ({ commit }, payload) => {\r\n commit(types.SET_VISIBILITY, payload);\r\n};\r\n\r\nexport default {\r\n setContent,\r\n setTitle,\r\n setVisibility\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/overlay/actions.js","export const SET_CONTENT = 'SET_CONTENT';\r\nexport const SET_TITLE = 'SET_TITLE';\r\nexport const SET_VISIBILITY = 'SET_VISIBILITY';\r\n\r\nexport default {\r\n SET_CONTENT,\r\n SET_TITLE,\r\n SET_VISIBILITY\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/overlay/types.js","export const getContent = state => state.content;\r\nexport const getTitle = state => state.title;\r\nexport const getVisibility = state => state.isVisible;\r\n\r\nexport default {\r\n getContent,\r\n getTitle,\r\n getVisibility\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/overlay/getters.js","import {\r\n SET_CONTENT,\r\n SET_TITLE,\r\n SET_VISIBILITY\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n },\r\n\r\n [SET_TITLE](state, payload) {\r\n state.title = payload;\r\n },\r\n\r\n [SET_VISIBILITY](state, payload) {\r\n state.isVisible = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/overlay/mutations.js","export default {\r\n title: null,\r\n content: [],\r\n isVisible: false\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/overlay/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/prompt/index.js","import * as types from './types';\r\n\r\nexport const reset = ({ commit }) => {\r\n commit(types.RESET);\r\n};\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport const setVisibility = ({ commit }, payload) => {\r\n commit(types.SET_VISIBILITY, payload);\r\n};\r\n\r\nexport const setStatus = ({ commit }, payload) => {\r\n commit(types.SET_STATUS, payload);\r\n};\r\n\r\nexport default {\r\n reset,\r\n setContent,\r\n setVisibility,\r\n setStatus\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/prompt/actions.js","export const RESET = 'RESET';\r\nexport const SET_CONTENT = 'SET_CONTENT';\r\nexport const SET_VISIBILITY = 'SET_VISIBILITY';\r\nexport const SET_STATUS = 'SET_STATUS';\r\n\r\nexport default {\r\n RESET,\r\n SET_CONTENT,\r\n SET_VISIBILITY,\r\n SET_STATUS\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/prompt/types.js","export const getVisibility = state => state.isVisible;\r\nexport const getContent = state => state.content;\r\nexport const getStatus = state => state.status;\r\n\r\nexport default {\r\n getVisibility,\r\n getContent,\r\n getStatus\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/prompt/getters.js","import {\r\n RESET,\r\n SET_CONTENT,\r\n SET_VISIBILITY,\r\n SET_STATUS\r\n} from './types';\r\n\r\nexport default {\r\n [RESET](state) {\r\n state.isVisible = false;\r\n state.content = [];\r\n state.status = null;\r\n },\r\n\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n },\r\n\r\n [SET_VISIBILITY](state, payload) {\r\n state.isVisible = payload;\r\n },\r\n\r\n [SET_STATUS](state, payload) {\r\n state.status = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/prompt/mutations.js","export default {\r\n isVisible: false,\r\n content: [],\r\n status: null\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/prompt/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/promptXmas/index.js","import * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport const setVisibility = ({ commit }, payload) => {\r\n commit(types.SET_VISIBILITY, payload);\r\n};\r\n\r\nexport const setStatus = ({ commit }, payload) => {\r\n commit(types.SET_STATUS, payload);\r\n};\r\n\r\nexport default {\r\n setContent,\r\n setVisibility,\r\n setStatus\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/promptXmas/actions.js","export const RESET = 'RESET';\r\nexport const SET_CONTENT = 'SET_CONTENT';\r\nexport const SET_VISIBILITY = 'SET_VISIBILITY';\r\nexport const SET_STATUS = 'SET_STATUS';\r\n\r\nexport default {\r\n SET_CONTENT,\r\n SET_VISIBILITY,\r\n SET_STATUS\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/promptXmas/types.js","export const getVisibility = state => state.isVisible;\r\nexport const getContent = state => state.content;\r\nexport const getStatus = state => state.status;\r\n\r\nexport default {\r\n getVisibility,\r\n getContent,\r\n getStatus\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/promptXmas/getters.js","import {\r\n SET_CONTENT,\r\n SET_VISIBILITY,\r\n SET_STATUS\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n },\r\n\r\n [SET_VISIBILITY](state, payload) {\r\n state.isVisible = payload;\r\n },\r\n\r\n [SET_STATUS](state, payload) {\r\n state.status = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/promptXmas/mutations.js","export default {\r\n isVisible: false,\r\n content: null,\r\n status: null\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/promptXmas/state.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/relationships/index.js","import * as types from './types';\r\n\r\nexport const setContent = ({ commit }, payload) => {\r\n commit(types.SET_CONTENT, payload);\r\n};\r\n\r\nexport default {\r\n setContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/relationships/actions.js","export const SET_CONTENT = 'SET_CONTENT';\r\n\r\nexport default {\r\n SET_CONTENT\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/relationships/types.js","export const getContent = (state, getters, rootState) => {\r\n const packageName = rootState.simulation.package;\r\n\r\n if (!packageName) {\r\n return null;\r\n }\r\n\r\n const parentPackage = packageName.indexOf('.') >= 0 ? packageName.split('.')[0] : null;\r\n\r\n const filteredContent = state.content.filter(relationship => relationship.scope === '*' || relationship.scope === packageName || (parentPackage && relationship.scope === parentPackage));\r\n\r\n return filteredContent;\r\n};\r\n\r\nexport default {\r\n getContent\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/relationships/getters.js","import {\r\n SET_CONTENT\r\n} from './types';\r\n\r\nexport default {\r\n [SET_CONTENT](state, payload) {\r\n state.content = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/relationships/mutations.js","export default {\r\n content: []\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/relationships/state.js","import * as types from './types';\r\n\r\nexport const setModalVisibility = ({ commit }, payload = null) => {\r\n commit(types.SET_MODAL_VISIBILITY, payload);\r\n};\r\nexport const setUser = ({ commit }, payload = null) => {\r\n commit(types.SET_USER, payload);\r\n};\r\n\r\nexport default {\r\n setModalVisibility,\r\n setUser\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/fis/actions.js","export const SET_MODAL_VISIBILITY = 'SET_MODAL_VISIBILITY';\r\nexport const SET_USER = 'SET_USER';\r\n\r\nexport default {\r\n SET_MODAL_VISIBILITY,\r\n SET_USER\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/fis/types.js","// eslint-disable-next-line\r\nconst NOT_AVAILABLE = 'N/A';\r\nconst CURRENCY = '€';\r\nconst RECURRENCE = '/mês';\r\n\r\nconst MOBILE_NAMESPACES = [\r\n 'movel',\r\n 'movel_adicionais',\r\n 'plano'\r\n];\r\n\r\nconst generateExtraItems = (_items) => {\r\n const extraItems = _items.map((i) => {\r\n if (i.meta.fis.type !== 'base') {\r\n return undefined;\r\n }\r\n\r\n return `

    Inclui ${i.meta.fis.title}

    `;\r\n });\r\n\r\n return extraItems.join('');\r\n};\r\n\r\nconst generateSoftExtraItems = (_items) => {\r\n const extraItems = _items.map(i => `

    Inclui ${i}

    `);\r\n\r\n return extraItems.join('');\r\n};\r\n\r\nconst generateItem = (_namespace, _title, _rootGetters, _extraItems = null, _includePath = null) => {\r\n const activeItem = _rootGetters['cart/activeItemsInNamespace'](_namespace).filter(i => i.meta.fis && !i.meta.fis.mergeWith);\r\n const mobileItem = activeItem.filter(i => i.path.includes('plano'));\r\n const chosenNumber = mobileItem[mobileItem.length - 1];\r\n const mobileFixoItem = activeItem.filter(m => m.path.includes('movel'));\r\n const chosenFixoMobile = mobileFixoItem[mobileFixoItem.length - 1];\r\n\r\n // No need for this after the campaign endeds\r\n // Has 15gb fidelization discount (NET250 + TV FAMILIA + TLF + 15GB MOVEL)\r\n const fidelizationDiscount = 'Desconto de 5€ durante fidelização';\r\n const fidelization15gbCampaignDiscount = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description === fidelizationDiscount);\r\n const mobile15Gg = mobileFixoItem.filter(m => m.path.includes('gb_15'));\r\n\r\n const item = activeItem.length ? activeItem.map((i) => {\r\n if (_namespace === 'plano') {\r\n if (i.path === chosenNumber.path) {\r\n return `${i.meta.fis.title_description}`;\r\n }\r\n return '';\r\n }\r\n\r\n if (_namespace === 'movel') {\r\n if (fidelization15gbCampaignDiscount.length && i.path.includes('gb_15')) {\r\n return `${mobile15Gg[0].meta.fis.title_description}`;\r\n }\r\n if (!fidelization15gbCampaignDiscount.length && i.path === chosenFixoMobile.path) {\r\n return `${i.meta.fis.title_description}`;\r\n }\r\n return '';\r\n }\r\n\r\n return `${i.meta.fis.title}`;\r\n }).join('') : `${NOT_AVAILABLE}`;\r\n let extra = '';\r\n\r\n if (_includePath && _rootGetters['cart/getPath'](_includePath)) {\r\n const mergeableItems = _rootGetters['cart/getActiveItems'].filter(i => i.meta.fis && i.meta.fis.mergeWith === _includePath);\r\n const mergedItems = mergeableItems.length ? mergeableItems.map(i => ` com ${i.meta.fis.title}`).join('') : '';\r\n\r\n extra = `Inclui ${_rootGetters['cart/getPath'](_includePath).meta.fis.title}${mergedItems}`;\r\n }\r\n\r\n extra = activeItem.length ? `${extra}${generateExtraItems(_rootGetters['cart/activeItemsInNamespace'](activeItem[0].config.name).filter(i => i.meta.fis && !i.meta.fis.mergeWith))}` : extra;\r\n\r\n if (activeItem.length && _extraItems) {\r\n extra = `${generateSoftExtraItems(_extraItems)}${extra}`;\r\n }\r\n\r\n const policy = MOBILE_NAMESPACES.includes(_namespace) ? '
    Política de utilização responsável em roaming disponível para consulta na secção 5.1 em nowo.pt/pdf/Condicoes-de-Oferta-dos-Servicos.pdf' : '';\r\n return `

    ${_title}

    ${item}${extra}${policy}

    `;\r\n};\r\n\r\nconst generateAdditionalItems = (getters, _rootGetters) => {\r\n // Get all additional Services\r\n const items = _rootGetters['fis/getAdditionalServices'];\r\n // Get mobile items to determinate principal card (chosenNumber)\r\n const mobileItems = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const chosenNumber = mobileItems[mobileItems.length - 1];\r\n\r\n const isIpTv = _rootGetters['cart/getActiveItems'].filter(item => item.path === 'tv.components.chan_base' || item.path === 'tv.components.chan_advanced');\r\n let fidelization = _rootGetters['cart/namespaceExists']('permanencia') ? _rootGetters['cart/activeItemsInNamespace']('permanencia')[0].meta.code : 0;\r\n if (isIpTv) fidelization = 1;\r\n\r\n // Has 15gb fidelization discount (NET250 + TV FAMILIA + TLF + 15GB MOVEL)\r\n const fidelizationDiscount = 'Desconto de 5€ durante fidelização';\r\n const fidelization15gbCampaignDiscount = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description === fidelizationDiscount);\r\n // Has mobile discount campaign 1GB and 15GB mobile cards\r\n const mobileCampaign = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('gb_15') || i.path.includes('gb_1'));\r\n\r\n const additionalItems = [];\r\n\r\n const additionalMobileItems = new Set();\r\n\r\n items.forEach((item) => {\r\n let campaignDuration = '1º ao 12º mês';\r\n const hasMobileCampaign = mobileCampaign.filter(i => i.path.includes(item.path)).length;\r\n\r\n if (item.path.includes('movel') || item.path.includes('plano')) {\r\n if (item.path !== chosenNumber.path) {\r\n const additionalMobileCard = item.quantity > 1 && item.meta.fis.multiple_selection_title ?\r\n `${item.quantity} ${item.meta.fis.multiple_selection_title}` : item.meta.fis.title;\r\n const priceMobileAdditional = item.price.length ? _rootGetters['cart/getPathPrice'](item.path).value * item.quantity : 0;\r\n const priceMobileAdditionalWithoutDiscount = item.price.length ? item.price[item.price.length - 1].value * item.quantity : 0;\r\n const priceOldMobileAdditional = item.price.length ? _rootGetters['cart/getPathPrice'](item.path).old * item.quantity : 0;\r\n\r\n if (hasMobileCampaign && !additionalMobileItems.has(item) && item.path.includes('plano')) {\r\n additionalItems.push({\r\n item: `

    ${additionalMobileCard}

    `\r\n });\r\n\r\n additionalItems.push({\r\n item: `

    Serviços e descontos incluídos do ${campaignDuration}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${priceMobileAdditional.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceMobileAdditionalWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceMobileAdditionalWithoutDiscount - priceMobileAdditional).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${additionalMobileCard}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n\r\n campaignDuration = '13º ao 24º mês';\r\n\r\n additionalItems.push({\r\n item: `

    Serviços e descontos incluídos do ${campaignDuration}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${priceOldMobileAdditional.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceMobileAdditionalWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceMobileAdditionalWithoutDiscount - priceOldMobileAdditional).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${additionalMobileCard}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n // adding the item to the set so in next iteration it´s not goint to be repeat\r\n additionalMobileItems.add(item);\r\n } else {\r\n additionalItems.push({\r\n item: `

    ${additionalMobileCard}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${priceMobileAdditional.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceMobileAdditionalWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceMobileAdditionalWithoutDiscount - priceMobileAdditional).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${additionalMobileCard}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (item.path === chosenNumber.path) {\r\n // eslint-disable-next-line no-nested-ternary\r\n const mobileCard = (chosenNumber.quantity > 1 && chosenNumber.quantity !== 2) && (chosenNumber.meta.fis.multiple_selection_title) ?\r\n `${chosenNumber.quantity - 1} ${chosenNumber.meta.fis.multiple_selection_title}` : chosenNumber.meta.fis.title;\r\n let price = 0;\r\n let priceWithoutDiscount = 0;\r\n\r\n if (fidelization15gbCampaignDiscount.length) {\r\n price = chosenNumber.price.length && (chosenNumber.quantity > 1) ? _rootGetters['cart/getPathPrice'](item.path).value * (chosenNumber.quantity - 1) : _rootGetters['cart/getPathPrice'](item.path).value;\r\n priceWithoutDiscount = chosenNumber.price.length && (chosenNumber.quantity > 1) ? chosenNumber.price[chosenNumber.price.length - 1].value * (chosenNumber.quantity - 1) : chosenNumber.price[chosenNumber.price.length - 1].value;\r\n } else {\r\n price = chosenNumber.price.length && (chosenNumber.quantity > 1) ? _rootGetters['cart/getPathPrice'](item.path).value * (chosenNumber.quantity - 1) : 0;\r\n priceWithoutDiscount = chosenNumber.price.length && (chosenNumber.quantity > 1) ? chosenNumber.price[chosenNumber.price.length - 1].value * (chosenNumber.quantity - 1) : 0;\r\n }\r\n\r\n if (hasMobileCampaign && !additionalMobileItems.has(item) && item.path.includes('plano')) {\r\n additionalItems.push({\r\n item: `

    ${mobileCard}

    `\r\n });\r\n\r\n additionalItems.push({\r\n item: `

    Serviços e descontos incluídos do ${campaignDuration}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscount - price).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${mobileCard}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n\r\n price = chosenNumber.price.length && (chosenNumber.quantity > 1) ? _rootGetters['cart/getPathPrice'](item.path).old * (chosenNumber.quantity - 1) : 0;\r\n campaignDuration = ' 13º ao 24º mês';\r\n\r\n additionalItems.push({\r\n item: `

    Serviços e descontos incluídos do ${campaignDuration}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscount - price).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${mobileCard}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n\r\n additionalMobileItems.add(item);\r\n } else {\r\n additionalItems.push({\r\n item: `

    ${mobileCard}

    `,\r\n fidelization: chosenNumber.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscount - price).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${mobileCard}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n }\r\n }\r\n } else if (_rootGetters['offers/getValidDiscountOffers'].filter(i => i.description.includes(item.meta.title.item)).length) {\r\n /* added to meet wifi mesh campaign */\r\n // eslint-disable-next-line no-nested-ternary\r\n const itemName = (item.quantity > 1) && (item.meta.fis.multiple_selection_title) ?\r\n `${item.quantity} ${item.meta.fis.price_title_multiple}` :\r\n item.meta.fis.price_title ? item.meta.fis.price_title : item.meta.fis.title;\r\n const price = item.price.length ? _rootGetters['cart/getPathPrice'](item.path).value * item.quantity : item.price.value * item.quantity;\r\n const priceWithoutDiscounts = item.price.length ? item.price[item.price.length - 1].value * item.quantity : item.price.value * item.quantity;\r\n const validOffer = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description.includes(item.meta.title.item));\r\n const validOffersValue = validOffer.length ? validOffer[0].subject.value : 0;\r\n\r\n additionalItems.push({\r\n item: `

    ${itemName}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${(price - validOffersValue).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscounts.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscounts - validOffersValue).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${itemName}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n } else {\r\n // eslint-disable-next-line no-nested-ternary\r\n const itemName = (item.quantity > 1) && (item.meta.fis.multiple_selection_title) ?\r\n `${item.quantity} ${item.meta.fis.price_title_multiple}` :\r\n item.meta.fis.price_title ? item.meta.fis.price_title : item.meta.fis.title;\r\n const price = item.price.length ? _rootGetters['cart/getPathPrice'](item.path).value * item.quantity : item.price.value * item.quantity;\r\n const priceWithoutDiscounts = item.price.length ? item.price[item.price.length - 1].value * item.quantity : item.price.value * item.quantity;\r\n\r\n additionalItems.push({\r\n item: `

    ${itemName}

    `,\r\n fidelization: item.meta.fis.noFidelization ? 0 : fidelization,\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscounts.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscounts - price).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n installation: {\r\n label: `${itemName}`,\r\n price: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n discount: `${CURRENCY} 0,00 ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} 0,00 ${RECURRENCE}`\r\n }\r\n });\r\n }\r\n });\r\n\r\n return additionalItems;\r\n};\r\n\r\nexport const generateServiceName = (_rootGetters) => {\r\n const items = _rootGetters['cart/getActiveItems'].filter(item => item.meta.title.name);\r\n let serviceName = '';\r\n\r\n items.forEach((item) => {\r\n if (serviceName.length) serviceName += '; ';\r\n serviceName += item.quantity > 1 ? `${item.quantity} ${item.meta.title.name}` : item.meta.title.name;\r\n });\r\n\r\n return serviceName;\r\n};\r\n\r\nexport const generateIncludedPriceWithoutDiscount = (getters, _rootGetters) => {\r\n const hasPeriodicPrice = _rootGetters['offers/getValidExternalOffers'].filter(item => item.subject.isPeriodic);\r\n let priceWithoutDiscount = 0;\r\n\r\n if (hasPeriodicPrice.length) {\r\n priceWithoutDiscount = getters.getTotalBaseServicesPrice * 2;\r\n }\r\n\r\n return priceWithoutDiscount;\r\n};\r\n\r\nexport const generateIncludedPrice = (getters, _rootGetters) => {\r\n const hasPeriodicPrice = _rootGetters['offers/getValidExternalOffers'].filter(item => item.subject.isPeriodic);\r\n\r\n if (hasPeriodicPrice.length) {\r\n return getters.getTotalBaseServicesPrice / 2;\r\n }\r\n\r\n return getters.getTotalBaseServicesPrice;\r\n};\r\n\r\nexport const generateIncludedDiscount = (getters, _rootGetters) => getters.getTotalBaseServicesPrice - generateIncludedPrice(getters, _rootGetters);\r\n\r\nexport const generateIncludedTotal = (getters, _rootGetters) => {\r\n // Periodic Offer\r\n const hasPeriodicOffer = _rootGetters['offers/getValidDiscountOffers'].filter(item => item.subject.isPeriodic);\r\n\r\n // Check if it is Carregamentos\r\n const isChargeOption = getters.getBaseServices[0].path.includes('carregamentos');\r\n\r\n if (isChargeOption) {\r\n return [\r\n {\r\n label: 'N/A',\r\n price: '€ 0,00 /mês',\r\n discount: '€ 0,00 /mês',\r\n priceWithoutDiscount: '€ 0,00 /mês'\r\n }\r\n ];\r\n }\r\n\r\n const totals = [];\r\n\r\n const mobileItems = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const chosenNumber = mobileItems.length ? mobileItems[mobileItems.length - 1] : null;\r\n const chosenBasePrice = mobileItems.length ? chosenNumber.price[chosenNumber.price.length - 1].value : 0;\r\n\r\n if (getters.getBaseServices[0].path.includes('pospago')) {\r\n let chosenPriceWithDiscount = chosenNumber.price[0].value;\r\n\r\n const ddCost = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('debitodireto')).length ? 0 : 1;\r\n const feCost = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('digital')).length ? 0 : 1;\r\n\r\n chosenPriceWithDiscount += ddCost + feCost;\r\n\r\n const hasFidelization = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('months_24')).length ? 1 : 0;\r\n\r\n const totalDiscount = hasFidelization > 0 ? chosenBasePrice - chosenPriceWithDiscount : 0;\r\n const totalPrice = hasFidelization > 0 ? chosenPriceWithDiscount : chosenBasePrice;\r\n\r\n if (hasPeriodicOffer.length && (chosenNumber.path.includes('gb_15') || chosenNumber.path.includes('gb_1'))) {\r\n totals.push(\r\n {\r\n label: 'Serviços e equipamentos incluídos 1º ao 12º mês',\r\n price: `${CURRENCY} ${totalPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${chosenBasePrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${totalDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`\r\n }\r\n );\r\n\r\n const chosenBasePriceOld = chosenNumber.price[0].old;\r\n const discAfterPeriod = chosenBasePrice - chosenBasePriceOld;\r\n\r\n totals.push(\r\n {\r\n label: 'Serviços e equipamentos incluídos 13º ao 24º mês',\r\n price: `${CURRENCY} ${chosenBasePriceOld.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${chosenBasePrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(discAfterPeriod).toFixed(2).replace('.', ',')} ${RECURRENCE}`\r\n }\r\n );\r\n } else {\r\n let chosenPriceWithoutOffers = chosenNumber.price[0].old ? chosenNumber.price[0].old : chosenNumber.price[0].value;\r\n\r\n chosenPriceWithoutOffers += ddCost + feCost;\r\n\r\n const priceWithouOffers = hasFidelization > 0 ? chosenPriceWithoutOffers : chosenBasePrice;\r\n const totalDiscountWithoutOffers = hasFidelization > 0 ? chosenBasePrice - chosenPriceWithoutOffers : 0;\r\n totals.push(\r\n {\r\n label: 'Serviços e equipamentos incluídos',\r\n price: `${CURRENCY} ${priceWithouOffers.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${chosenBasePrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${totalDiscountWithoutOffers.toFixed(2).replace('.', ',')} ${RECURRENCE}`\r\n }\r\n );\r\n }\r\n }\r\n\r\n // check if casa\r\n const packageName = _rootGetters['packages/getActivePackageMeta'].name;\r\n if (packageName.toLowerCase() === 'casa') {\r\n // Has 15gb & 1gb Campaign\r\n const mobileCampaign = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('gb_15') || i.path.includes('gb_1'));\r\n const chosenHasMobileCampaign = mobileCampaign.length ? (chosenNumber.path.includes('gb_15') || chosenNumber.path.includes('gb_1')) : null;\r\n // Has just 15gb campaign\r\n const mobile15GbCampaign = mobileCampaign.filter(i => i.path.includes('gb_15'));\r\n\r\n // Has 15gb fidelization discount (NET250 + TV FAMILIA + TLF + 15GB MOVEL)\r\n const fidelizationDiscount = 'Desconto de 5€ durante fidelização';\r\n const fidelization15gbCampaignDiscount = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description === fidelizationDiscount);\r\n\r\n // Mobile Base Price\r\n let chosenMobilePriceWithDiscount = 0;\r\n let chosenMobilePriceOld = 0;\r\n if (mobileItems.length) {\r\n // if 15gb campaign is eligible then the principal mobile card is allways the 15gb card even if there´s a 30gb card chosen, this override the logic that the biggest card is the principal card\r\n chosenMobilePriceWithDiscount = fidelization15gbCampaignDiscount.length ? mobile15GbCampaign[0].price[0].value : chosenNumber.price[0].value;\r\n\r\n // Price after ending 15gb || 1gb campaign discount period and forcing the 15gb as the chosen if fidelization15gbCampaignDiscount.length\r\n if (fidelization15gbCampaignDiscount.length) {\r\n chosenMobilePriceOld = mobile15GbCampaign[0].price[0].old;\r\n } else {\r\n chosenMobilePriceOld = mobileCampaign.length && chosenHasMobileCampaign ? chosenNumber.price[0].old : chosenNumber.price[0].value;\r\n }\r\n }\r\n\r\n // PREÇO BASE SEM DESCONTOS\r\n // removed the ternary if ending fidelization 15gb campaign and the need to force the 15gb has a principal card. Leaving just the end of the ternary\r\n const totalStandardPrice = fidelization15gbCampaignDiscount.length && !chosenHasMobileCampaign ? (getters.getTotalNonFidelizedBaseServicesPrice - chosenBasePrice) + mobile15GbCampaign[0].price[1].value : getters.getTotalNonFidelizedBaseServicesPrice;\r\n\r\n // PREÇO BASE COM DESCONTOS\r\n const totalBasePrice = getters.getTotalBaseServicesPrice;\r\n const totalBasePriceWithoutMobile = chosenNumber !== null ? totalBasePrice - chosenNumber.price[0].value : totalBasePrice;\r\n\r\n if (hasPeriodicOffer.length) {\r\n // removed the mobile cards discounts, to simplify when we´ve more than one card and the principal card hasn´t any campaign.\r\n const validOffers = _rootGetters['offers/getValidDiscountOffers'].filter(offer => offer.description !== fidelizationDiscount && !offer.description.includes('Débito') && !offer.description.includes('Fatura') && !offer.description.includes('GB') && !offer.description.includes('MESH'));\r\n const validOffersDiscount = validOffers.length ? validOffers.map(offer => offer.subject.value).reduce((sum, x) => sum + x) : 0;\r\n // mobile cards discounts if available\r\n const mobileValidDiscount = mobileCampaign.length && chosenHasMobileCampaign ? (chosenMobilePriceOld - chosenMobilePriceWithDiscount) : 0;\r\n const periodicPrice = ((totalBasePriceWithoutMobile - validOffersDiscount) + chosenMobilePriceWithDiscount) - mobileValidDiscount;\r\n\r\n totals.push(\r\n {\r\n label: 'Serviços e equipamentos incluídos 1º ao 12º mês',\r\n price: `${CURRENCY} ${periodicPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalStandardPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalStandardPrice - periodicPrice).toFixed(2).replace('.', ',')} ${RECURRENCE}`\r\n }\r\n );\r\n\r\n // check for silent offers ignoring DD and FE discount and taking it from de base value\r\n const validSilentOffers = _rootGetters['offers/getValidDiscountSilentOffers'].filter(offer => !offer.description.includes('Débito') && !offer.description.includes('Fatura') && !offer.description.includes('MESH'));\r\n const validSilentOffersValue = validSilentOffers.length ? validSilentOffers.map(offer => offer.subject.value).reduce((sum, x) => sum + x) : 0;\r\n const periodicPriceUntilFidelization = fidelization15gbCampaignDiscount.length && !chosenHasMobileCampaign ? (totalBasePriceWithoutMobile - validSilentOffersValue) + chosenMobilePriceOld : (((totalBasePrice - chosenMobilePriceOld) - validSilentOffersValue) + chosenMobilePriceOld);\r\n\r\n totals.push(\r\n {\r\n label: 'Serviços e equipamentos incluídos 13º ao 24º mês',\r\n price: `${CURRENCY} ${periodicPriceUntilFidelization.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalStandardPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalStandardPrice - periodicPriceUntilFidelization).toFixed(2).replace('.', ',')} ${RECURRENCE}`\r\n }\r\n );\r\n } else {\r\n const ddCost = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('debitodireto')).length ? 0 : 1;\r\n const feCost = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('digital')).length ? 0 : 1;\r\n\r\n const hasFidelization = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('months_24')).length ? 1 : 0;\r\n\r\n const fidelizationFlashDescription = 'durante fidelização';\r\n const fidelizationFlashDiscount = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description.includes(fidelizationFlashDescription));\r\n const fidelizationFlashDiscountValue = fidelizationFlashDiscount.length ? fidelizationFlashDiscount.map(i => i.subject.value).reduce((sum, x) => sum + x) : 0;\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n const price = hasFidelization > 0 ? (getters.getTotalBaseServicesPrice - fidelizationFlashDiscountValue) + ddCost + feCost : totalStandardPrice - getters.getTotalBaseServicesPrice;\r\n\r\n totals.push(\r\n {\r\n label: 'Serviços e equipamentos incluídos',\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalStandardPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalStandardPrice - price).toFixed(2).replace('.', ',')} ${RECURRENCE}`\r\n }\r\n );\r\n }\r\n }\r\n\r\n return totals;\r\n};\r\n\r\nexport const generateIncludedItems = (_rootGetters) => {\r\n const items = {};\r\n\r\n const tv = generateItem('tv', 'TELEVISÃO', _rootGetters, null, 'tv.children.premium.components.not_categorized.components.box');\r\n const internet = generateItem('internet', 'INTERNET FIXA', _rootGetters, ['Router WiFi']);\r\n const landline = generateItem('telefone', 'TELEFONE FIXO', _rootGetters);\r\n const mobile = generateItem(_rootGetters['cart/namespaceExists']('movel') ? 'movel' : 'plano', 'TELEFONE MÓVEL', _rootGetters);\r\n if (!tv.includes(`${NOT_AVAILABLE}`)) items.tv = tv;\r\n if (!internet.includes(`${NOT_AVAILABLE}`)) items.internet = internet;\r\n if (!landline.includes(`${NOT_AVAILABLE}`)) items.landline = landline;\r\n if (!mobile.includes(`${NOT_AVAILABLE}`)) items.mobile = mobile;\r\n\r\n return items;\r\n};\r\n\r\nexport const getAdditionalServicesDescription = (_rootGetters) => {\r\n const items = _rootGetters['fis/getAdditionalServices'];\r\n const additionalServices = [];\r\n const tv = items.filter(item => item.path.includes('tv'));\r\n const internet = items.filter(item => item.path.includes('internet'));\r\n const additionalMobile = items.filter(item => item.path.includes('movel') || item.path.includes('plano'));\r\n const mobile = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const chosenMobile = mobile[mobile.length - 1];\r\n\r\n if (additionalMobile.length) {\r\n additionalServices.push(\r\n `

    TELEFONE MÓVEL

    ${additionalMobile.map((item) => {\r\n if (item.path !== chosenMobile.path && item.quantity > 1) return (item.quantity > 1) && (item.meta.fis.multiple_selection_title) ? `${item.quantity} ${item.meta.fis.multiple_selection_title}` : item.meta.fis.title;\r\n if (item.path === chosenMobile.path && item.quantity > 2) return (item.quantity > 2) && (item.meta.fis.multiple_selection_title) ? `${item.quantity - 1} ${item.meta.fis.multiple_selection_title}` : item.meta.fis.title;\r\n if (item.path === chosenMobile.path && item.quantity === 2) return item.meta.fis.title.replace(1, item.quantity - 1);\r\n return item.meta.fis.title.replace(1, item.quantity);\r\n }).toString().replaceAll(',', '
    ')}
    Política de utilização responsável em roaming disponível para consulta na secção 5.1 em nowo.pt/pdf/Condicoes-de-Oferta-dos-Servicos.pdf

    `\r\n );\r\n }\r\n\r\n if (internet.length) {\r\n additionalServices.push(\r\n `

    INTERNET FIXA

    ${internet.map(item => (item.meta.fis.description ? item.meta.fis.description : item.meta.fis.title)).toString().replaceAll(',', '; ')}

    `\r\n );\r\n }\r\n\r\n if (tv.length) {\r\n additionalServices.push(\r\n `

    TELEVISÃO

    ${tv.map(item => (item.meta.fis.description ? item.meta.fis.description : item.meta.fis.title)).toString().replaceAll(',', '; ')}

    `\r\n );\r\n }\r\n\r\n if (!additionalServices.length) {\r\n additionalServices.push(\r\n '

    N/A

    '\r\n );\r\n }\r\n\r\n return additionalServices;\r\n};\r\n\r\nexport const getInternetServiceCharges = (_rootGetters) => {\r\n const items = _rootGetters['fis/getBaseServices'];\r\n const internetServiceCharges = [];\r\n const internet = items.filter(item => item.path.includes('internet'));\r\n const movel = items.filter(item => item.path.includes('movel'));\r\n const posPago = items.filter(item => item.path.includes('pospago'));\r\n const carregamentos = items.filter(item => item.path.includes('carregamentos'));\r\n\r\n if (internet.length) {\r\n const speed = internet[0].meta.fis.speed;\r\n\r\n internetServiceCharges.push(\r\n `

    INTERNET FIXA:

    \r\n

    Velocidade anunciada = Velocidade máxima = Velocidade normalmente disponível: ${speed.download.max}Mbps download, ${speed.upload.max}Mbps upload. Velocidade mínima = ${speed.download.min}Mbps download, ${speed.upload.min}Mbps upload.
    Para uma explicação clara e compreensível destes parâmetros, consultar a seção 9 das Condições de Oferta de Serviços, disponível em nowo.pt/pdf/condicoes-de-oferta-dos-servicos.pdf

    `\r\n );\r\n }\r\n\r\n if (movel.length || posPago.length || carregamentos.length) {\r\n internetServiceCharges.push(\r\n '

    INTERNET NO TELEMÓVEL:

    ' +\r\n '

    3G: Velocidade anunciada = Estimativa velocidade máxima = 16Mbps download, 5Mbps upload
    4G: Velocidade anunciada = Estimativa velocidade máxima 150Mbps download, 40Mbps upload
    Para uma explicação clara e compreensível destes parâmetros, consultar a seção 11 das Condições de Oferta de Serviços, disponível em nowo.pt/pdf/Condicoes-de-Oferta-dos-Servicos.pdf

    '\r\n );\r\n }\r\n\r\n return internetServiceCharges;\r\n};\r\n\r\nexport const getTelephoneServiceCharges = (_rootGetters) => {\r\n const items = _rootGetters['fis/getBaseServices'];\r\n const telephoneServiceCharges = [];\r\n\r\n const movel = items.filter(item => item.path.includes('movel'));\r\n const telefone = items.filter(item => item.path.includes('telefone'));\r\n const posPago = items.filter(item => item.path.includes('pospago'));\r\n const carregamentos = items.filter(item => item.path.includes('carregamentos'));\r\n\r\n if (telefone.length) {\r\n telephoneServiceCharges.push(\r\n '

    TELEFONE FIXO:

    ' +\r\n '

    Após esgotamento dos plafonds: 4,8 cênt/min em horário económico, 8 cênt/min em horário normal para chamadas rede fixa nacional e 39,7 cênt/min para redes móveis nacionais.

    '\r\n );\r\n }\r\n\r\n if (movel.length || posPago.length) {\r\n telephoneServiceCharges.push(\r\n '

    TELEFONE MÓVEL:

    ' +\r\n '

    Após esgotamento dos plafonds: 17,2 cênt/min ou SMS. Após esgotar os dados o acesso é bloqueado e subscrição de um plano extra de dados é opcional.

    '\r\n );\r\n }\r\n\r\n if (carregamentos.length) {\r\n telephoneServiceCharges.push(\r\n '

    TELEFONE MÓVEL:

    ' +\r\n '

    Após esgotamento dos plafonds o acesso é bloqueado.

    ' +\r\n '

    Opções de carregamento:
    1) 500 Minutos/SMS + 500MB por 7,50€
    2) 1000 Minutos/SMS + 1GB por 13,50€
    3) 2000 Minutos/SMS + 2GB por 16,00€
    Os plafonds incluídos no plano escolhido são renovados sempre que é efetuado um carregamento e incluem minutos/SMS para a rede fixa e móvel nacional e em roaming no EEE e Reino Unido e Internet no telemóvel em Portugal e em roaming no EEE e Reino Unido.
    Os plafonds acumulados podem ser utilizados durante 60 dias, desde que seja efetuado um carregamento a cada 30 dias.
    Se o carregamento não for efetuado, deixa de poder realizar comunicações e perde os plafonds não consumidos.
    Após 90 dias sem carregamentos o cartão é desativado.

    ');\r\n }\r\n\r\n return telephoneServiceCharges;\r\n};\r\n\r\nexport const getTotals = (getters, _rootGetters, fidelization) => {\r\n const isChargeOption = getters.getBaseServices[0].path.includes('carregamentos');\r\n\r\n if (isChargeOption) {\r\n return [\r\n {\r\n price: '€ 0,00 /mês',\r\n priceWithoutDiscount: '€ 0,00 /mês',\r\n discount: '€ 0,00 /mês',\r\n label: 'Total',\r\n fidelization\r\n }\r\n ];\r\n }\r\n\r\n const hasPeriodicOffer = _rootGetters['offers/getValidDiscountOffers'].filter(item => item.subject.isPeriodic);\r\n const totalPrice = [];\r\n const totalPriceWithoutDiscount = getters.getTotalNonFidelizedPrice;\r\n\r\n let totalBasePrice = getters.getTotalBaseServicesPrice;\r\n\r\n const ddCost = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('debitodireto')).length ? 0 : 1;\r\n const feCost = _rootGetters['cart/getActiveItems'].filter(item => item.path.includes('digital')).length ? 0 : 1;\r\n\r\n totalBasePrice += ddCost + feCost;\r\n\r\n let totalLabel = 'Total';\r\n\r\n const additionalsItems = getters.getTotalAdditionalServicesPrice;\r\n const additionItemsOld = getters.getTotalAdditionalOldServicesPrice;\r\n\r\n // Principal mobile number\r\n const mobileItems = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const chosenNumber = mobileItems.length ? mobileItems[mobileItems.length - 1] : null;\r\n\r\n // Principal price\r\n // eslint-disable-next-line no-nested-ternary\r\n const chosenPrice = mobileItems.length ? (chosenNumber.price[0].old ? chosenNumber.price[0].old : chosenNumber.price[0].value) : 0;\r\n const mobileCampaign = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('gb_15') || i.path.includes('gb_1'));\r\n\r\n // This is for the 15gb campaign if the principal is a 15gb card\r\n const chosenDiscount = mobileCampaign.filter(i => i.path.includes(chosenNumber.path));\r\n const chosenMobilePriceWithDiscount = chosenDiscount.length ? chosenDiscount.map(i => i.price[0].old)[0] - chosenDiscount.map(i => i.price[0].value)[0] : 0;\r\n\r\n // check for silent offers ignoring DD and FE discount and taking it from de base value\r\n const validSilentOffers = _rootGetters['offers/getValidDiscountSilentOffers'].filter(i => !i.description.includes('Débito') && !i.description.includes('Fatura'));\r\n const validSilentOffersValue = validSilentOffers.length ? validSilentOffers.map(i => i.subject.value).reduce((sum, x) => sum + x) : 0;\r\n\r\n if (hasPeriodicOffer.length && _rootGetters['packages/getActivePackageMeta'].name === 'casa') {\r\n // FIXO\r\n // Verify the valid offers to FIXO and exclude the DD, FE and the 5€ fidelization (need to review this offer)\r\n const fidelizationDiscount = 'Desconto de 5€ durante fidelização';\r\n const validOffers = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description !== fidelizationDiscount && !i.description.includes('Débito') && !i.description.includes('Fatura') && !i.description.includes('GB'));\r\n const validOffersDiscount = validOffers.length ? validOffers.map(i => i.subject.value).reduce((sum, x) => sum + x) : 0;\r\n\r\n const mobile15Gb = _rootGetters['cart/getActiveItems'].filter(i => i.path.includes('gb_15'));\r\n\r\n // Has 15gb fidelization discount (NET250 + TV FAMILIA + TLF + 15GB MOVEL)\r\n const fidelization15gbCampaignDiscount = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description === fidelizationDiscount);\r\n\r\n // Chosen Mobile\r\n // eslint-disable-next-line no-nested-ternary\r\n const fixoChosenMobilePriceWithDiscount = fidelization15gbCampaignDiscount.length ? mobile15Gb[0].price[0].value : (chosenNumber !== null ? chosenNumber.price[0].value : 0);\r\n let fixoChosenMobilePriceOld = 0;\r\n if (fidelization15gbCampaignDiscount.length) {\r\n fixoChosenMobilePriceOld = mobile15Gb[0].price[0].old;\r\n } else {\r\n // eslint-disable-next-line no-nested-ternary\r\n fixoChosenMobilePriceOld = mobileCampaign.length && mobileCampaign ? chosenNumber.price[0].old : (chosenNumber !== null ? chosenNumber.price[0].value : 0);\r\n }\r\n // additionals\r\n const mobile15GbPrice = mobile15Gb.length ? mobile15Gb[0].price[0].value : 0;\r\n const additionalServicesPrice = fidelization15gbCampaignDiscount.length && additionalsItems.length ? (additionalsItems - chosenPrice) + mobile15GbPrice : additionalsItems;\r\n\r\n const totalBasePriceWithoutMobile = chosenNumber !== null ? totalBasePrice - chosenNumber.price[0].value : totalBasePrice;\r\n const mobileValidDiscount = mobileCampaign.length ? (fixoChosenMobilePriceOld - fixoChosenMobilePriceWithDiscount) : 0;\r\n\r\n const periodicPrice = (((totalBasePriceWithoutMobile - validOffersDiscount) + fixoChosenMobilePriceWithDiscount) - mobileValidDiscount) + additionalServicesPrice;\r\n const totalNonFidPrice = fidelization15gbCampaignDiscount.length ? totalPriceWithoutDiscount - (chosenNumber.price[1].value - mobile15Gb[0].price[1].value) : totalPriceWithoutDiscount;\r\n\r\n totalPrice.push({\r\n price: `${CURRENCY} ${periodicPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalNonFidPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalNonFidPrice - periodicPrice).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n label: 'Total entre 1º e 12º mês',\r\n fidelization\r\n });\r\n\r\n totalLabel = totalLabel.concat(' entre 13º e 24º mês');\r\n\r\n const priceWithoutPeriodicOffer = fidelization15gbCampaignDiscount.length ? ((getters.getTotalBaseServicesPrice - validSilentOffersValue) + additionItemsOld) - (chosenNumber.price[1].value - mobile15Gb[0].price[1].value) : (getters.getTotalBaseServicesPrice - validSilentOffersValue) + additionItemsOld;\r\n\r\n totalPrice.push({\r\n price: `${CURRENCY} ${(priceWithoutPeriodicOffer).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalNonFidPrice.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalNonFidPrice - priceWithoutPeriodicOffer).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n label: totalLabel,\r\n fidelization\r\n });\r\n }\r\n\r\n const additionalOldPrice = getters.getTotalAdditionalOldServicesPrice;\r\n if (hasPeriodicOffer.length && _rootGetters['packages/getActivePackageMeta'].name !== 'casa') {\r\n totalPrice.push({\r\n price: `${CURRENCY} ${(totalBasePrice + additionalsItems).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalPriceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalPriceWithoutDiscount - (totalBasePrice + additionalsItems)).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n label: 'Total entre 1º e 12º mês',\r\n fidelization\r\n });\r\n\r\n totalLabel = totalLabel.concat(' entre 13º e 24º mês');\r\n\r\n totalPrice.push({\r\n price: `${CURRENCY} ${(chosenPrice + additionalOldPrice).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalPriceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalPriceWithoutDiscount - (chosenPrice + additionalOldPrice)).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n label: totalLabel,\r\n fidelization\r\n });\r\n }\r\n\r\n if (!hasPeriodicOffer.length) {\r\n if (fidelization === '1 mês') {\r\n totalPrice.push({\r\n price: `${CURRENCY} ${totalPriceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalPriceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalPriceWithoutDiscount - totalPriceWithoutDiscount).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n label: totalLabel,\r\n fidelization\r\n });\r\n } else {\r\n const fidelizationFlashDescription = 'durante fidelização';\r\n const fidelizationFlashDiscount = _rootGetters['offers/getValidDiscountOffers'].filter(i => i.description.includes(fidelizationFlashDescription));\r\n const fidelizationFlashDiscountValue = fidelizationFlashDiscount.length ? fidelizationFlashDiscount.map(i => i.subject.value).reduce((sum, x) => sum + x) : 0;\r\n const fixo = _rootGetters['packages/getActivePackageMeta'].name === 'casa';\r\n\r\n /* Need to add this condition because when its 24 months but has no offer in 15gb mobile campaign. Removed this when campaign end */\r\n const basePrice = mobileItems.length && mobileCampaign.length && !fixo ? (totalBasePrice - chosenMobilePriceWithDiscount) + chosenPrice : totalBasePrice;\r\n const total = fixo ? (basePrice + additionalsItems) - fidelizationFlashDiscountValue : chosenPrice + additionalOldPrice + ddCost + feCost;\r\n\r\n totalPrice.push({\r\n price: `${CURRENCY} ${(total).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n priceWithoutDiscount: `${CURRENCY} ${totalPriceWithoutDiscount.toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n discount: `${CURRENCY} ${(totalPriceWithoutDiscount - total).toFixed(2).replace('.', ',')} ${RECURRENCE}`,\r\n label: totalLabel,\r\n fidelization\r\n });\r\n }\r\n }\r\n return totalPrice;\r\n};\r\n\r\nexport const generateNonRecurringTotal = (getters, _rootGetters) => {\r\n const nonRecurringTotal = {\r\n items: [],\r\n total: {\r\n label: 'Total',\r\n price: 0,\r\n discount: 0,\r\n priceWithoutDiscount: 0\r\n }\r\n };\r\n const items = _rootGetters['packages/getActivePackageConfig'].totalsExtraItems;\r\n\r\n items.forEach((item) => {\r\n if ((!item.requires || (item.requires && _rootGetters['cart/isPathActive'](item.requires))) && (item.showNonRecurringPriceFIS && item.showNonRecurringPriceFIS.includes(_rootGetters['simulation/getPackage']))) {\r\n if (item.namespace) {\r\n const price = _rootGetters['cart/activeItemsInNamespacePrice'](item.namespace);\r\n const priceWithoutDiscount = item.namespace.includes('permanencia') ?\r\n _rootGetters['cart/getPathPrice']('permanencia.components.months_1').value :\r\n _rootGetters['cart/activeItemsInNamespacePrice'](item.namespace);\r\n if (priceWithoutDiscount) {\r\n nonRecurringTotal.items.push(\r\n {\r\n label: item.name,\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscount - price).toFixed(2).replace('.', ',')}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscount.toFixed(2).replace('.', ',')}`\r\n }\r\n );\r\n nonRecurringTotal.total.price += price;\r\n nonRecurringTotal.total.priceWithoutDiscount += priceWithoutDiscount;\r\n }\r\n } else if (item.path && item.showNonRecurringPriceFIS.includes(_rootGetters['simulation/getPackage'])) {\r\n const price = _rootGetters['cart/getPathPrice'](item.path).value;\r\n const priceWithoutDiscount = _rootGetters['cart/getPathNonFidelizedPrice'](item.path).value;\r\n if (priceWithoutDiscount) {\r\n nonRecurringTotal.items.push(\r\n {\r\n label: item.name,\r\n price: `${CURRENCY} ${price.toFixed(2).replace('.', ',')}`,\r\n discount: `${CURRENCY} ${(priceWithoutDiscount - price).toFixed(2).replace('.', ',')}`,\r\n priceWithoutDiscount: `${CURRENCY} ${priceWithoutDiscount.toFixed(2).replace('.', ',')}`\r\n }\r\n );\r\n nonRecurringTotal.total.price += price;\r\n nonRecurringTotal.total.priceWithoutDiscount += priceWithoutDiscount;\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n nonRecurringTotal.total.discount = `${CURRENCY} ${(nonRecurringTotal.total.priceWithoutDiscount - nonRecurringTotal.total.price).toFixed(2).replace('.', ',')}`;\r\n nonRecurringTotal.total.price = `${CURRENCY} ${nonRecurringTotal.total.price.toFixed(2).replace('.', ',')}`;\r\n nonRecurringTotal.total.priceWithoutDiscount = `${CURRENCY} ${nonRecurringTotal.total.priceWithoutDiscount.toFixed(2).replace('.', ',')}`;\r\n\r\n return nonRecurringTotal;\r\n};\r\n\r\nexport const getFidelizationValue = (value) => {\r\n if (!value) {\r\n return '1 mês';\r\n }\r\n return `${value} meses`;\r\n};\r\n\r\nexport const generateContent = (state, getters, rootState, rootGetters) => (name, email, taxId) => {\r\n const address = rootGetters['addresses/getSelectedAddressFormatted'] || null;\r\n\r\n const fidelization = `${rootGetters['cart/namespaceExists']('permanencia') ? getFidelizationValue(rootGetters['cart/activeItemsInNamespace']('permanencia')[0].meta.code) : '1 mês'}`;\r\n\r\n const isChargesOption = getters.getBaseServices[0].path.includes('carregamentos');\r\n\r\n const isMsaOption = getters.getBaseServices[0].path.includes('pospago');\r\n\r\n let installation = rootGetters['cart/namespaceExists']('permanencia') ? rootGetters['cart/activeItemsInNamespacePrice']('permanencia') : 0;\r\n\r\n installation = rootGetters['cart/isPathActive']('numero.components.new') ? installation + rootGetters['cart/getPathPrice']('numero.components.new').value : installation;\r\n installation = rootGetters['cart/isPathActive']('numero.components.keep') ? installation + rootGetters['cart/getPathPrice']('numero.components.keep').value : installation;\r\n\r\n if (rootGetters['simulation/getPackage'].startsWith('iptv')) {\r\n installation += rootGetters['cart/getPathPrice']('tv.children.premium.components.not_categorized.components.box').value;\r\n }\r\n\r\n const generatedAdditionalItems = generateAdditionalItems(getters, rootGetters);\r\n\r\n const generatedServiceName = generateServiceName(rootGetters);\r\n\r\n // Get included Services Descriptions\r\n const includedItems = generateIncludedItems(rootGetters);\r\n\r\n const additionalDescriptions = getAdditionalServicesDescription(rootGetters);\r\n\r\n const internetServiceCharges = getInternetServiceCharges(rootGetters);\r\n\r\n const telephoneServiceCharges = getTelephoneServiceCharges(rootGetters);\r\n\r\n const totals = getTotals(getters, rootGetters, fidelization);\r\n\r\n const NIF = taxId === '' ? 'N/A' : taxId;\r\n\r\n const isBillingAddress = rootGetters['simulation/getPackage'].includes('movel.');\r\n\r\n const structure = {\r\n simulationId: rootGetters['simulation/getId'],\r\n serviceName: generatedServiceName,\r\n isCharges: isChargesOption,\r\n isMsa: isMsaOption,\r\n fidelization,\r\n user: {\r\n name,\r\n email,\r\n address,\r\n NIF,\r\n isBillingAddress\r\n },\r\n services: {\r\n included: {\r\n totals: generateIncludedTotal(getters, rootGetters),\r\n installation: installation.toFixed(2).replace('.', ',')\r\n },\r\n additional: generatedAdditionalItems,\r\n additionalDescriptions,\r\n internetServiceCharges,\r\n telephoneServiceCharges,\r\n totals,\r\n nonRecurringTotal: generateNonRecurringTotal(getters, rootGetters)\r\n },\r\n offers: {\r\n fidelization: getters.generateFidelizedOffers,\r\n nonFidelization: getters.generateNonFidelizedOffers\r\n }\r\n };\r\n\r\n Object.assign(structure.services.included, includedItems);\r\n\r\n return structure;\r\n};\r\n\r\nexport const generateFidelizedOffers = (state, getters, rootState, rootGetters) => {\r\n const content = [];\r\n let total = 0;\r\n const fidelization = rootGetters['cart/namespaceExists']('permanencia') ? rootGetters['cart/activeItemsInNamespace']('permanencia')[0].meta.code : 0;\r\n const installation = rootGetters['cart/namespaceExists']('permanencia') ? rootGetters['cart/activeItemsInNamespacePrice']('permanencia') : 0;\r\n const maxInstallation = rootGetters['cart/namespaceExists']('permanencia') ? rootGetters['cart/getPathPrice']('permanencia.components.months_1').value : 0;\r\n const totalBasePrice = getters.getTotalBaseServicesPrice;\r\n const totalBaseNonFidelizedPrice = getters.getTotalNonFidelizedBaseServicesPrice;\r\n const totalAdditionalNonFidelizedPrice = getters.getTotalAdditionalNonFidelizedServicesPrice;\r\n const hasPeriodicOffer = rootGetters['offers/getValidDiscountOffers'].filter(item => item.subject.isPeriodic);\r\n const mobileCampaign = rootGetters['cart/getActiveItems'].filter(i => i.path.includes('gb_15') || i.path.includes('gb_1'));\r\n // need to FIXO discounts calculus\r\n const mappedDiscountOffers = hasPeriodicOffer.map(v => v.subject.value);\r\n const hasPeriodicOfferValue = hasPeriodicOffer.length ? mappedDiscountOffers.reduce((sum, x) => sum + x) : 0;\r\n const hasExtraOffer = rootGetters['offers/getValidDiscountSilentOffers'].filter(offer => offer.description.includes('fidelização'));\r\n const hasExtraOfferVal = hasExtraOffer.length ? hasExtraOffer.map(item => item.subject.value) : 0;\r\n const hasExtraOfferPrice = hasExtraOffer.length ? hasExtraOfferVal.reduce((sum, x) => sum + x) : 0;\r\n const mobileItems = rootGetters['cart/getActiveItems'].filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const chosenMobile = mobileItems[mobileItems.length - 1];\r\n // primary mobile with discount campaign (using it in MSA)\r\n const chosenDiscount = mobileCampaign.filter(i => i.path.includes(chosenMobile.path));\r\n const chosenDiscountValue = chosenDiscount.length ? chosenDiscount.map(i => i.price[0].old)[0] - chosenDiscount.map(i => i.price[0].value)[0] : 0;\r\n const validOffer = rootGetters['offers/getValidDiscountOffers'].filter(item => !item.subject.isPeriodic && !item.description.includes('Fatura') && !item.description.includes('Débito') && !item.description.includes('fidelização'));\r\n const validOffersValue = validOffer.length ? validOffer.map(v => v.subject.value) : 0;\r\n const allNonPeriodicOffers = validOffer.length ? validOffersValue.reduce((sum, x) => sum + x) : 0;\r\n\r\n // Need the mobile additionals to added to the periodic discounts in FIXO\r\n const mobileCampaignFIXO = getters.getTotalAdditionalOldServicesPrice - getters.getTotalAdditionalServicesPrice;\r\n\r\n // Check type of package\r\n const packageName = rootGetters['packages/getActivePackageMeta'].name;\r\n\r\n // IPTV AND CARREGAMENTOS -> RETURN N/A\r\n if (packageName.toLowerCase() === 'carregamentos' || packageName.toLowerCase() === 'iptv') {\r\n return {\r\n content: [\r\n {\r\n title: NOT_AVAILABLE,\r\n value: `${CURRENCY} 0,00`\r\n }\r\n ],\r\n total: '0,00'\r\n };\r\n }\r\n\r\n // INSTALLATION\r\n if (installation < maxInstallation) {\r\n total += maxInstallation - installation;\r\n content.push({\r\n title: 'Desconto incluído na Instalação',\r\n value: `€${(maxInstallation - installation).toFixed(2).replace('.', ',')}`\r\n });\r\n } else {\r\n content.push({\r\n title: 'Desconto incluído na Instalação',\r\n value: '€ 0,00'\r\n });\r\n }\r\n\r\n let faturaDiscount = 0;\r\n let faturaDiscountText = '';\r\n\r\n if (rootGetters['cart/isPathActive']('fatura.components.digital_debitodireto')) {\r\n let movelDiscount = 0;\r\n if (packageName.toLowerCase() === 'pospago' || packageName.toLowerCase() === 'movel') movelDiscount = !rootGetters['cart/isPathActive']('permanencia.components.months_1') ? 2 : 0;\r\n faturaDiscount = packageName.toLowerCase() === 'casa' && rootGetters['cart/isPathActive']('permanencia.components.months_24') ? 2 : movelDiscount;\r\n faturaDiscountText = faturaDiscountText.concat(' e Débito Direto');\r\n }\r\n\r\n if (rootGetters['cart/isPathActive']('fatura.components.digital')) {\r\n let movelDiscount = 0;\r\n if (packageName.toLowerCase() === 'pospago' || packageName.toLowerCase() === 'movel') movelDiscount = !rootGetters['cart/isPathActive']('permanencia.components.months_1') ? 1 : 0;\r\n faturaDiscount = packageName.toLowerCase() === 'casa' && rootGetters['cart/isPathActive']('permanencia.components.months_24') ? 1 : movelDiscount;\r\n }\r\n\r\n const totalFidelizationPriceDiff = totalBaseNonFidelizedPrice - totalBasePrice;\r\n\r\n const feCost = rootGetters['cart/isPathActive']('fatura.components.analog') ? 2 : 0;\r\n const deCost = rootGetters['cart/isPathActive']('fatura.components.digital') ? 1 : 0;\r\n const ddCost = rootGetters['cart/isPathActive']('fatura.components.analog_debitodireto') ? 1 : 0;\r\n const losingDiscount = deCost + feCost + ddCost;\r\n\r\n // Serviços e Equipamentos\r\n if (totalFidelizationPriceDiff > 0) {\r\n if (packageName.toLowerCase() === 'pospago') {\r\n const extraValue = chosenDiscount.length ? chosenDiscountValue : 0;\r\n total += (totalFidelizationPriceDiff - faturaDiscount - losingDiscount - extraValue) * fidelization;\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos',\r\n value: `€${(totalFidelizationPriceDiff - faturaDiscount - losingDiscount - extraValue).toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${((totalFidelizationPriceDiff - faturaDiscount - losingDiscount - extraValue) * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n\r\n if (packageName.toLowerCase() === 'casa') {\r\n const discountFid = (totalFidelizationPriceDiff - faturaDiscount - losingDiscount) + hasExtraOfferPrice;\r\n total += discountFid * fidelization;\r\n\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos',\r\n value: `€${(discountFid).toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${(discountFid * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n } else {\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos',\r\n value: '€ 0,00'\r\n });\r\n }\r\n\r\n // Serviços e Equipamentos com FE e/ou DD\r\n if (faturaDiscount) {\r\n total += (faturaDiscount * fidelization);\r\n content.push({\r\n title: `Desconto incluído em Serviços e equipamentos, mediante ativação da Fatura Eletrónica${faturaDiscountText}`,\r\n value: `€${faturaDiscount.toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${(faturaDiscount * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n } else {\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos, mediante ativação da Fatura Eletrónica e Débito Direto',\r\n value: '€ 0,00'\r\n });\r\n }\r\n\r\n if (hasPeriodicOffer.length) {\r\n if (rootGetters['packages/getActivePackageMeta'].name !== 'casa') {\r\n const campaignValue = getters.getTotalMobileBaseServicesPrice - getters.getTotalPrice;\r\n total += campaignValue * (fidelization / 2);\r\n\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos do 1º ao 12º mês, mediante ativação da Fatura Eletrónica e Débito Direto',\r\n value: `€${(campaignValue).toFixed(2).replace('.', ',')} durante ${fidelization / 2} meses = €${(campaignValue * (fidelization / 2)).toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n\r\n if (rootGetters['packages/getActivePackageMeta'].name === 'casa') {\r\n const totalOffer = mobileCampaign.length && chosenMobile.path.includes('gb_15') ? (hasPeriodicOfferValue - chosenDiscountValue) + mobileCampaignFIXO : hasPeriodicOfferValue + mobileCampaignFIXO;\r\n\r\n total += totalOffer * (fidelization / 2);\r\n\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos do 1º ao 12º mês, mediante ativação da Fatura Eletrónica e Débito Direto',\r\n value: `€${(totalOffer).toFixed(2).replace('.', ',')} durante ${fidelization / 2} meses = €${(totalOffer * (fidelization / 2)).toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n }\r\n\r\n if (((totalAdditionalNonFidelizedPrice - getters.getTotalAdditionalServicesPrice) + allNonPeriodicOffers) > 0) {\r\n let additionalServicesValue = getters.getTotalAdditionalServicesPrice;\r\n\r\n // Get only the fidelized discount from moveis adicionais and only if !casa\r\n if (rootGetters['packages/getActivePackageMeta'].name !== 'casa') {\r\n rootGetters['cart/activeItemsInNamespace']('plano').forEach((item) => {\r\n let fidelizationDiscount = 0;\r\n\r\n if (rootGetters['cart/isPathActive']('permanencia.components.months_24')) fidelizationDiscount = 4;\r\n else if (!rootGetters['cart/isPathActive']('permanencia.components.months_1')) fidelizationDiscount = 1;\r\n additionalServicesValue -= item.path === chosenMobile.path ? rootGetters['cart/getPathPrice'](item.path).value * (item.quantity - 1) : rootGetters['cart/getPathPrice'](item.path).value * item.quantity;\r\n const price = item.path === chosenMobile.path ? (rootGetters['cart/getPathNonFidelizedPrice'](item.path).value - fidelizationDiscount) * (item.quantity - 1) : (rootGetters['cart/getPathNonFidelizedPrice'](item.path).value - fidelizationDiscount) * item.quantity;\r\n additionalServicesValue += price;\r\n });\r\n }\r\n\r\n total += mobileItems.length ? (((totalAdditionalNonFidelizedPrice - getters.getTotalAdditionalOldServicesPrice) + allNonPeriodicOffers) * fidelization) : (((totalAdditionalNonFidelizedPrice - additionalServicesValue) + allNonPeriodicOffers) * fidelization);\r\n if (rootGetters['packages/getActivePackageMeta'].name === 'casa') {\r\n if (mobileCampaign.length) {\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos adicionais',\r\n value: `€${((totalAdditionalNonFidelizedPrice - getters.getTotalAdditionalOldServicesPrice) + allNonPeriodicOffers).toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${(((totalAdditionalNonFidelizedPrice - getters.getTotalAdditionalOldServicesPrice) + allNonPeriodicOffers) * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n } else {\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos adicionais',\r\n value: `€${((totalAdditionalNonFidelizedPrice - additionalServicesValue) + allNonPeriodicOffers).toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${(((totalAdditionalNonFidelizedPrice - additionalServicesValue) + allNonPeriodicOffers) * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n }\r\n\r\n // Get only the fidelized discount from moveis adicionais and only if !casa\r\n if (rootGetters['packages/getActivePackageMeta'].name !== 'casa') {\r\n if (mobileCampaign.length) {\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos adicionais',\r\n value: `€${(totalAdditionalNonFidelizedPrice - getters.getTotalAdditionalOldServicesPrice).toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${((totalAdditionalNonFidelizedPrice - getters.getTotalAdditionalOldServicesPrice) * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n } else {\r\n let movelAdicionaisDiscount = 0;\r\n rootGetters['cart/activeItemsInNamespace']('plano').forEach((item) => {\r\n movelAdicionaisDiscount += item.path === chosenMobile.path ? rootGetters['cart/getPathPrice'](item.path).value * (item.quantity - 1) : rootGetters['cart/getPathPrice'](item.path).value * item.quantity;\r\n });\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos adicionais',\r\n value: `€${(totalAdditionalNonFidelizedPrice - movelAdicionaisDiscount).toFixed(2).replace('.', ',')} durante ${fidelization} meses = €${((totalAdditionalNonFidelizedPrice - movelAdicionaisDiscount) * fidelization).toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n }\r\n } else {\r\n content.push({\r\n title: 'Desconto incluído em Serviços e equipamentos adicionais',\r\n value: '€ 0,00'\r\n });\r\n }\r\n\r\n const mensalityOffers = rootGetters['offers/getValidExternalOffers'].find(offer => offer.subject.category === 'mensality');\r\n const mensalityOffersQuantity = (mensalityOffers && mensalityOffers.subject.quantity) || 0;\r\n\r\n if (mensalityOffersQuantity) {\r\n const extraMobileCards = rootGetters['cart/namespaceExists']('movel_adicionais') ? rootGetters['cart/activeItemsInNamespacePrice']('movel_adicionais') : 0;\r\n\r\n total += mensalityOffersQuantity * (totalBasePrice + extraMobileCards);\r\n content.push({\r\n title: 'Oferta de Mensalidades',\r\n value: `${mensalityOffersQuantity} Mensalidade${mensalityOffersQuantity > 1 ? 's' : ''} = €${(mensalityOffersQuantity * (totalBasePrice + extraMobileCards)).toFixed(2).replace('.', ',')}`\r\n });\r\n } else {\r\n content.push({\r\n title: 'Oferta de Mensalidades',\r\n value: '€ 0,00'\r\n });\r\n }\r\n\r\n if (rootGetters['packages/getActivePackageMeta'].name === 'casa') {\r\n const channelsOffers = rootGetters['offers/getValidInternalOffers'].find(offer => offer.subject.category === 'channels');\r\n const channelsOffersQuantity = (channelsOffers && channelsOffers.subject.quantity) || 0;\r\n\r\n if (channelsOffersQuantity) {\r\n // TODO\r\n // Oferta de € durante x meses = €\r\n total += channelsOffersQuantity * getters.getTotalPrice;\r\n } else {\r\n content.push({\r\n title: 'Oferta de Pack de canais',\r\n value: '€ 0,00'\r\n });\r\n }\r\n }\r\n\r\n const landlinePortPath = 'telefone.extra.portabilidade';\r\n const mobilePortPath = 'movel.extra.portabilidade';\r\n const mobilePlanPortPath = 'numero.extra.portabilidade';\r\n const isLandlinePortActive = rootGetters['cart/isPathActive'](landlinePortPath);\r\n const isMobilePortActive = rootGetters['cart/isPathActive'](mobilePortPath);\r\n const isMobilePlanPortActive = rootGetters['cart/isPathActive'](mobilePlanPortPath);\r\n\r\n if (isLandlinePortActive || isMobilePortActive || isMobilePlanPortActive) {\r\n let totalPorts = 0;\r\n let totalPortValue = 0;\r\n\r\n if (isLandlinePortActive && rootGetters['cart/getPathNonFidelizedPrice'](landlinePortPath).value > rootGetters['cart/getPathPrice'](landlinePortPath).value) {\r\n totalPorts += 1;\r\n totalPortValue += rootGetters['cart/getPathNonFidelizedPrice'](landlinePortPath).value - rootGetters['cart/getPathPrice'](landlinePortPath).value;\r\n }\r\n\r\n if (isMobilePortActive && rootGetters['cart/getPathNonFidelizedPrice'](mobilePortPath).value > rootGetters['cart/getPathPrice'](mobilePortPath).value) {\r\n totalPorts += 1;\r\n totalPortValue += rootGetters['cart/getPathNonFidelizedPrice'](mobilePortPath).value - rootGetters['cart/getPathPrice'](mobilePortPath).value;\r\n }\r\n\r\n if (isMobilePlanPortActive && rootGetters['cart/getPathNonFidelizedPrice'](mobilePlanPortPath).value > rootGetters['cart/getPathPrice'](mobilePlanPortPath).value) {\r\n totalPorts += 1;\r\n totalPortValue += rootGetters['cart/getPathNonFidelizedPrice'](mobilePlanPortPath).value - rootGetters['cart/getPathPrice'](mobilePlanPortPath).value;\r\n }\r\n\r\n if (totalPorts) {\r\n total += totalPortValue;\r\n content.push({\r\n title: 'Oferta de Portabilidades',\r\n value: `${totalPorts} Portabilidade${totalPorts > 1 ? 's' : ''} = €${totalPortValue.toFixed(2).replace('.', ',')}`\r\n });\r\n }\r\n }\r\n\r\n total = total.toFixed(2).replace('.', ',');\r\n\r\n return {\r\n total,\r\n content\r\n };\r\n};\r\n\r\nexport const getAdditionalServices = (state, getters, rootState, rootGetters) => {\r\n const additionItems = rootGetters['cart/getActiveItems'];\r\n const activeMobileItem = rootGetters['cart/getActiveItems'].filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const chosenNumber = activeMobileItem[activeMobileItem.length - 1];\r\n const packageName = rootGetters['packages/getActivePackageMeta'].name;\r\n\r\n // Has 15gb fidelization discount (NET250 + TV FAMILIA + TLF + 15GB MOVEL)\r\n const fidelizationDiscount = 'Desconto de 5€ durante fidelização';\r\n const fidelization15gbCampaignDiscount = rootGetters['offers/getValidDiscountOffers'].filter(i => i.description === fidelizationDiscount);\r\n\r\n const additionalServices = [];\r\n\r\n additionItems.forEach((i) => {\r\n if (packageName.toLowerCase() === 'pospago') {\r\n if (i.meta.fis && i.meta.fis.type === 'additional') {\r\n additionalServices.push(i);\r\n }\r\n if (activeMobileItem.length && i.path.includes('pospago') && !i.path.includes(chosenNumber.path)) {\r\n additionalServices.push(i);\r\n }\r\n if (activeMobileItem.length && i.path === chosenNumber.path && chosenNumber.quantity > 1) {\r\n additionalServices.push(i);\r\n }\r\n }\r\n if (packageName.toLowerCase() === 'casa') {\r\n if (i.meta.fis && i.meta.fis.type === 'additional') {\r\n additionalServices.push(i);\r\n }\r\n if (!fidelization15gbCampaignDiscount.length) {\r\n if (activeMobileItem.length && i.path.includes('movel') && !i.path.includes(chosenNumber.path)) {\r\n additionalServices.push(i);\r\n }\r\n if (activeMobileItem.length && i.path === chosenNumber.path && chosenNumber.quantity > 1) {\r\n additionalServices.push(i);\r\n }\r\n } else {\r\n // this is used to change the chosen to additional when the 15gb campaign is on at fixo. Need to be removed in the end of campaign\r\n if (activeMobileItem.length && i.path.includes('movel') && !i.path.includes(chosenNumber.path) && !i.path.includes('gb_15')) {\r\n additionalServices.push(i);\r\n }\r\n if (activeMobileItem.length && i.path.includes('movel') && !i.path.includes(chosenNumber.path) && (i.path.includes('gb_15') && i.quantity > 1)) {\r\n additionalServices.push(i);\r\n }\r\n if (activeMobileItem.length && i.path === chosenNumber.path && (i.path.includes('gb_15') && i.quantity > 1)) {\r\n additionalServices.push(i);\r\n }\r\n if (activeMobileItem.length && i.path === chosenNumber.path && !chosenNumber.path.includes('gb_15')) {\r\n additionalServices.push(i);\r\n }\r\n }\r\n }\r\n if (packageName.toLowerCase() === 'carregamentos') {\r\n if (i.meta.fis && i.meta.fis.type === 'additional') {\r\n additionalServices.push(i);\r\n }\r\n }\r\n });\r\n\r\n return additionalServices;\r\n};\r\n\r\nexport const getHiddenAdditionalServices = (state, getters, rootState, rootGetters) => rootGetters['cart/getActiveItems'].filter(i => i.meta.fis && i.meta.fis.type === 'hidden');\r\n\r\nexport const getBaseServices = (state, getters, rootState, rootGetters) => rootGetters['cart/getActiveItems'].filter(i => i.meta.fis && i.meta.fis.type === 'base');\r\n\r\nexport const getAdditionalMobileServices = (state, getters, rootState, rootGetters) => rootGetters['cart/getActiveItems'].filter(i => i.meta.fis && i.meta.fis.type === 'additional' && i.meta.fis.family === 'movel_adicionais');\r\n\r\nexport const getTotalHiddenAdditionalServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n getters.getHiddenAdditionalServices.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalAdditionalOldServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n const filteredAdditionalItems = getters.getAdditionalServices.filter(item => !item.config.isUnaccountable);\r\n const filteredItems = getters.getBaseServices.filter(item => !item.config.isUnaccountable);\r\n const mobileBaseItems = filteredItems.filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n\r\n filteredAdditionalItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n if (mobileBaseItems.length) {\r\n const mobileBaseChosen = mobileBaseItems[mobileBaseItems.length - 1];\r\n if (item.path === mobileBaseChosen.path && mobileBaseChosen.quantity > 1) {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = (item.quantity - 1) * (activePrice.old ? activePrice.old : (activePrice.value + basePrice));\r\n\r\n total += value;\r\n } else {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.old ? activePrice.old : (activePrice.value + basePrice));\r\n\r\n total += value;\r\n }\r\n } else {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.old ? activePrice.old : (activePrice.value + basePrice));\r\n\r\n total += value;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalAdditionalServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n const filteredAdditionalItems = getters.getAdditionalServices.filter(item => !item.config.isUnaccountable);\r\n const filteredItems = getters.getBaseServices.filter(item => !item.config.isUnaccountable);\r\n const mobileBaseItems = filteredItems.filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n\r\n filteredAdditionalItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n if (mobileBaseItems.length) {\r\n const mobileBaseChosen = mobileBaseItems[mobileBaseItems.length - 1];\r\n if (item.path === mobileBaseChosen.path && mobileBaseChosen.quantity > 1) {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = (item.quantity - 1) * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n } else {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = (item.quantity * (activePrice.value + basePrice));\r\n\r\n total += value;\r\n }\r\n } else {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = (item.quantity * (activePrice.value + basePrice));\r\n\r\n total += value;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalAdditionalServicesPriceWithPeriodicOffer = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n const hasPeriodicPrice = rootGetters['offers/getValidExternalOffers'].filter(item => item.subject.isPeriodic);\r\n const filteredItems = getters.getAdditionalServices.filter(item => !item.config.isUnaccountable);\r\n\r\n filteredItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * ((hasPeriodicPrice.length && item.path.includes('movel_adicionais') ? activePrice.value / 2 : activePrice.value) + basePrice);\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalAdditionalNonFidelizedServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n const filteredAdditionalItems = getters.getAdditionalServices.filter(item => !item.config.isUnaccountable);\r\n const filteredItems = getters.getBaseServices.filter(item => !item.config.isUnaccountable);\r\n const mobileBaseItems = filteredItems.filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n\r\n filteredAdditionalItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n if (mobileBaseItems.length) {\r\n const mobileBaseChosen = mobileBaseItems[mobileBaseItems.length - 1];\r\n\r\n if (item.path === mobileBaseChosen.path && mobileBaseChosen.quantity > 1) {\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = (item.quantity - 1) * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n } else {\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n }\r\n } else {\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n }\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalBaseServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n const filteredItems = getters.getBaseServices.filter(item => !item.config.isUnaccountable);\r\n const mobileItems = filteredItems.filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const mobileBaseChosen = mobileItems[mobileItems.length - 1];\r\n const packageName = rootGetters['packages/getActivePackageMeta'].name;\r\n\r\n filteredItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n if (packageName.toLowerCase() === 'pospago') {\r\n if (item.path !== mobileBaseChosen.path) {\r\n return false;\r\n }\r\n\r\n if (item.path === mobileBaseChosen.path) {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = activePrice.value + basePrice;\r\n\r\n total += value;\r\n }\r\n return true;\r\n }\r\n\r\n if (packageName.toLowerCase() === 'casa') {\r\n if (mobileItems.length && item.path === mobileBaseChosen.path) {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = activePrice.old ? activePrice.old : (activePrice.value + basePrice);\r\n\r\n total += value;\r\n }\r\n\r\n if (item.path.includes('movel') && !mobileBaseChosen.path) {\r\n return false;\r\n }\r\n\r\n if (!item.path.includes('movel')) {\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n }\r\n return true;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n return total + getters.getTotalHiddenAdditionalServicesPrice;\r\n};\r\n\r\nexport const getTotalMobileBaseServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n const filteredItems = getters.getBaseServices.filter(item =>\r\n !item.config.isUnaccountable && (\r\n item.config.namespace === 'plano' || item.config.namespace === 'movel' || item.config.namespace === 'movel_adicionais'\r\n ));\r\n\r\n filteredItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n let value = 0;\r\n if (activePrice.old) {\r\n value = item.quantity * (activePrice.old + basePrice);\r\n } else {\r\n value = item.quantity * (activePrice.value + basePrice);\r\n }\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n return total + getters.getTotalHiddenAdditionalServicesPrice;\r\n};\r\n\r\nexport const getTotalBaseServicesPriceWithoutDiscounts = (state, getters, rootState, rootGetters) => {\r\n const totalBaseServicesPrice = getters.getTotalBaseServicesPrice;\r\n const discountOffersValue = rootGetters['offers/getValidDiscountOffersValue'];\r\n\r\n return totalBaseServicesPrice + discountOffersValue;\r\n};\r\n\r\nexport const getTotalNonFidelizedBaseServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n const filteredItems = getters.getBaseServices.filter(item => !item.config.isUnaccountable);\r\n\r\n const mobileItems = filteredItems.filter(i => i.path.includes('movel') || i.path.includes('plano'));\r\n const mobileBaseChosen = mobileItems[mobileItems.length - 1];\r\n const packageName = rootGetters['packages/getActivePackageMeta'].name;\r\n\r\n filteredItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n if (packageName.toLowerCase() === 'pospago') {\r\n if (item.path !== mobileBaseChosen.path) {\r\n return false;\r\n }\r\n\r\n if (item.path === mobileBaseChosen.path) {\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = activePrice.value + basePrice;\r\n\r\n total += value;\r\n }\r\n return true;\r\n }\r\n\r\n if (packageName.toLowerCase() === 'casa') {\r\n if (mobileItems.length && item.path === mobileBaseChosen.path) {\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = activePrice.value + basePrice;\r\n\r\n total += value;\r\n }\r\n if (item.path.includes('movel') && !mobileBaseChosen.path) {\r\n return false;\r\n }\r\n if (!item.path.includes('movel')) {\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n\r\n\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalNonFidelizedMobilBaseServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n const filteredItems = getters.getBaseServices.filter(item =>\r\n !item.config.isUnaccountable && (\r\n item.config.namespace === 'plano' || item.config.namespace === 'movel' || item.config.namespace === 'movel_adicionais'\r\n ));\r\n\r\n filteredItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path);\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n getters.getAdditionalMobileServices.forEach((item) => {\r\n const nonFidelizedPrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path).value;\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path).value;\r\n\r\n total += (nonFidelizedPrice - activePrice) * item.quantity;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const getTotalAdditionalMovelServicesPrice = (state, getters, rootState, rootGetters) => {\r\n if (!rootState.cart.content) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n const filteredItems = getters.getAdditionalServices.filter(item => !item.config.isUnaccountable && item.path.includes('movel_adicionais'));\r\n\r\n filteredItems.map((item) => {\r\n if (rootGetters['offers/isPathAnOffer'](item.path)) {\r\n return false;\r\n }\r\n\r\n const activePrice = rootGetters['cart/getPathPrice'](item.path);\r\n const nonFidelizedPrice = rootGetters['cart/getPathNonFidelizedPrice'](item.path).value;\r\n\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n\r\n const value = item.quantity * (nonFidelizedPrice - (activePrice.value + basePrice));\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n return total;\r\n};\r\n\r\nexport const generateNonFidelizedOffers = (state, getters, rootState, rootGetters) => {\r\n let content = [];\r\n const total = null;\r\n const offers = [\r\n { offer: '2GB', title: 'Oferta de 2GB/cartão de 1GB durante 24 meses mediante ativação na App Área de Cliente, até 30 dias após ativação do serviço.' },\r\n { offer: '6GB', title: 'Oferta de 6GB/cartão de 15GB durante 24 meses mediante ativação na App Área de Cliente, até 30 dias após ativação do serviço.' }\r\n ];\r\n\r\n const validOffers = rootGetters['offers/getValidOffers'];\r\n const hasCampaign = offers.filter(offerDetail => validOffers.some(validOffer => validOffer.description.includes(offerDetail.offer)));\r\n\r\n if (hasCampaign.length > 0) {\r\n let title = '';\r\n\r\n if (hasCampaign.length === 1) {\r\n title = hasCampaign[0].title;\r\n } else if (hasCampaign.length === 2) {\r\n title = `${hasCampaign[0].title}
    ${hasCampaign[1].title}`;\r\n }\r\n\r\n content.push({\r\n title\r\n });\r\n } else {\r\n content = null;\r\n }\r\n\r\n return {\r\n total,\r\n content\r\n };\r\n};\r\n\r\nexport const getTotalPrice = (state, getters) => getters.getTotalAdditionalServicesPrice + getters.getTotalBaseServicesPrice;\r\n\r\nexport const getTotalPriceWithoutDiscounts = (state, getters) => getters.getTotalAdditionalServicesPrice + getters.getTotalBaseServicesPriceWithoutDiscounts;\r\n\r\nexport const getTotalNonFidelizedPrice = (state, getters) => getters.getTotalAdditionalNonFidelizedServicesPrice + getters.getTotalNonFidelizedBaseServicesPrice;\r\n\r\nexport const getModalVisibility = state => state.isModalVisible;\r\n\r\nexport default {\r\n getAdditionalServices,\r\n getHiddenAdditionalServices,\r\n getTotalHiddenAdditionalServicesPrice,\r\n getBaseServices,\r\n getAdditionalMobileServices,\r\n getTotalAdditionalServicesPrice,\r\n getTotalAdditionalServicesPriceWithPeriodicOffer,\r\n getTotalBaseServicesPrice,\r\n getTotalMobileBaseServicesPrice,\r\n getTotalBaseServicesPriceWithoutDiscounts,\r\n getTotalPrice,\r\n getTotalPriceWithoutDiscounts,\r\n getTotalAdditionalNonFidelizedServicesPrice,\r\n getTotalNonFidelizedBaseServicesPrice,\r\n getTotalNonFidelizedMobilBaseServicesPrice,\r\n getTotalNonFidelizedPrice,\r\n generateFidelizedOffers,\r\n generateNonFidelizedOffers,\r\n generateContent,\r\n getModalVisibility,\r\n getTotalAdditionalMovelServicesPrice,\r\n getTotalAdditionalOldServicesPrice\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/fis/getters.js","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport state from './state';\r\n\r\nexport default {\r\n namespaced: true,\r\n actions,\r\n getters,\r\n mutations,\r\n state\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/fis/index.js","import {\r\n SET_MODAL_VISIBILITY,\r\n SET_USER\r\n} from './types';\r\n\r\nexport default {\r\n [SET_MODAL_VISIBILITY](state, payload) {\r\n state.isModalVisible = payload;\r\n },\r\n\r\n [SET_USER](state, payload) {\r\n state.user = payload;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/fis/mutations.js","export default {\r\n isModalVisible: false,\r\n user: {\r\n name: '',\r\n email: ''\r\n },\r\n excludeFromBaseServices: [\r\n 'internet.components.mbps_250.components.wifi360',\r\n 'internet.components.mbps_120.components.wifi360',\r\n 'tv.components.chan_90.components.app_nowo',\r\n 'tv.components.chan_90_plus.components.app_nowo',\r\n 'tv.components.chan_33.components.app_nowo',\r\n 'tv.components.chan_82.components.app_nowo'\r\n ]\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/fis/state.js","/* ============\r\n * Vuex Store\r\n * ============\r\n *\r\n * The store of the application.\r\n *\r\n * http://vuex.vuejs.org/en/index.html\r\n */\r\n\r\nimport Vue from 'vue';\r\nimport Vuex from 'vuex';\r\n// import createLogger from 'vuex/dist/logger';\r\n\r\n// Modules\r\nimport addresses from './modules/addresses';\r\nimport bundles from './modules/bundles';\r\nimport customer from './modules/customer';\r\nimport modules from './modules/modules';\r\nimport packages from './modules/packages';\r\nimport cart from './modules/cart';\r\nimport movel from './modules/movel';\r\nimport offers from './modules/offers';\r\nimport simulation from './modules/simulation';\r\nimport timeline from './modules/timeline';\r\nimport errors from './modules/errors';\r\nimport overlay from './modules/overlay';\r\nimport prompt from './modules/prompt';\r\nimport promptXmas from './modules/promptXmas';\r\nimport relationships from './modules/relationships';\r\nimport fis from './modules/fis';\r\n\r\nVue.use(Vuex);\r\n\r\nconst debug = process.env.NODE_ENV !== 'production';\r\n\r\nexport default new Vuex.Store({\r\n /**\r\n * Assign the modules to the store.\r\n */\r\n modules: {\r\n addresses,\r\n bundles,\r\n customer,\r\n cart,\r\n movel,\r\n offers,\r\n simulation,\r\n timeline,\r\n modules,\r\n packages,\r\n errors,\r\n overlay,\r\n prompt,\r\n promptXmas,\r\n relationships,\r\n fis\r\n },\r\n\r\n /**\r\n * If strict mode should be enabled.\r\n */\r\n strict: debug\r\n\r\n /**\r\n * Plugins used in the store.\r\n */\r\n // plugins: debug ? [createLogger()] : []\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\n\r\nVue.use(Vuex);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vuex.js","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport store from '@/store';\r\n\r\nconst ERROR_SIMULATOR_CUSTOMER_WITH_DEBT = 'Simulator_CustomerWithDebt'.toLowerCase();\r\nconst INVALID_IBAN = 'iban_invalid';\r\nconst GENERIC_ERROR = 'Generic_Error';\r\n\r\naxios.defaults.baseURL = process.env.API_LOCATION;\r\naxios.defaults.headers.common.Accept = 'application/json';\r\n\r\naxios.interceptors.response.use((response) => {\r\n store.dispatch('errors/setBlockEmailSubmission', false);\r\n return response;\r\n}, (error) => {\r\n if (!error.config.url.includes('disableErrorWarning=true') && !error.response.data.Data.Otp) {\r\n let message = error.message;\r\n\r\n if (error.response && error.response.data.Data) {\r\n if (error.response.data.Data.UiMessage) {\r\n message = error.response.data.Data.UiMessage;\r\n }\r\n\r\n if (error.response.data.Code) {\r\n message = `${message}`;\r\n }\r\n }\r\n\r\n const errorResponse = error.response.data;\r\n if (errorResponse && errorResponse.Code && errorResponse.Code.toLowerCase() === ERROR_SIMULATOR_CUSTOMER_WITH_DEBT) {\r\n store.dispatch('errors/setRedirectPageOnError', true);\r\n store.dispatch('errors/setRedirectPageOnErrorMessage', error.response.data.Data.UiMessage);\r\n } else if (errorResponse.Code.toLowerCase() === INVALID_IBAN) {\r\n store.dispatch('errors/setShowError', false);\r\n } else {\r\n store.dispatch('errors/setErrorMessage', message);\r\n if (error.response.data.Code === GENERIC_ERROR) {\r\n store.dispatch('errors/setErrorTitle', '');\r\n } else {\r\n store.dispatch('errors/setErrorTitle', null);\r\n }\r\n store.dispatch('errors/setShowError', true);\r\n store.dispatch('errors/setBlockEmailSubmission', true);\r\n }\r\n }\r\n\r\n store.dispatch('errors/setBlockEmailSubmission', true);\r\n return Promise.reject(error);\r\n});\r\n\r\n// Bind axios to Vue.\r\nVue.$http = axios;\r\nObject.defineProperty(Vue.prototype, '$http', {\r\n get() {\r\n return axios;\r\n }\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/axios.js","import Vue from 'vue';\r\nimport IdleVue from 'idle-vue';\r\n\r\nVue.use(IdleVue, {\r\n eventEmitter: new Vue(),\r\n idleTime: 90000,\r\n keepTracking: true\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/idle-vue.js","\r\nimport store from '@/store';\r\n\r\nexport default [\r\n {\r\n path: '*',\r\n redirect: {\r\n path: '/'\r\n }\r\n },\r\n {\r\n name: 'start-page',\r\n path: '/',\r\n redirect: {\r\n name: 'home'\r\n }\r\n },\r\n {\r\n name: 'movel-triagem',\r\n path: '/simulador/movel-triagem',\r\n component: () => import('@/app/views/SubLobby'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n },\r\n beforeEnter: (to, from, next) => {\r\n if (!store.state.simulation.status || store.state.simulation.status === 'initial') {\r\n next({\r\n path: '/'\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n },\r\n {\r\n name: 'home',\r\n path: '/simulador/:package?',\r\n component: () => import('@/app/views/Lobby'),\r\n meta: {\r\n bodyClass: 'background-color--orange'\r\n },\r\n beforeEnter: (to, from, next) => {\r\n next();\r\n }\r\n },\r\n {\r\n name: 'cobertura',\r\n path: '/simulador/:package/:coverage?/cobertura',\r\n component: () => import('@/app/views/Coverage'),\r\n meta: {\r\n bodyClass: 'background-color--white'\r\n }\r\n },\r\n {\r\n name: 'procurar',\r\n path: '/simulador/:package/:coverage?/cobertura/procurar',\r\n component: () => import('@/app/views/ProcurarMorada'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'cobertura-contacto',\r\n path: '/simulador/:package/:coverage?/cobertura/contacto',\r\n component: () => import('@/app/views/CoberturaContacto'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'cobertura-obrigado',\r\n path: '/cobertura-obrigado',\r\n component: () => import('@/app/views/CoberturaObrigado'),\r\n meta: {\r\n bodyClass: 'background-color--orange',\r\n simulation: false\r\n }\r\n },\r\n {\r\n name: 'procurar_submeter_1',\r\n path: '/simulador/:package/:coverage?/cobertura/submeter/semcobertura',\r\n component: () => import('@/app/views/SubmeterMoradaSimples'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'procurar_submeter_2',\r\n path: '/simulador/:package/:coverage?/cobertura/submeter/cobertura',\r\n component: () => import('@/app/views/SubmeterMoradaCompleto'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'resumo',\r\n path: '/simulador/:package/:coverage?/resumo',\r\n component: () => import('@/app/views/simulator/Summary'),\r\n meta: {\r\n bodyClass: 'background-color--white',\r\n simulation: true\r\n },\r\n beforeEnter: (to, from, next) => {\r\n const activePackageConfigFeatures = store.getters['packages/getActivePackageConfig'].features;\r\n\r\n if (!store.state.addresses.isValid && !store.state.simulation.external && !activePackageConfigFeatures.disableCoverageVerification) {\r\n next({\r\n name: 'cobertura',\r\n params: {\r\n next: 'resumo'\r\n }\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n },\r\n {\r\n name: 'guardada',\r\n path: '/simulador/:package/:coverage?/guardada/resumo',\r\n component: () => import('@/app/views/simulator/Summary'),\r\n meta: {\r\n bodyClass: 'background-color--white',\r\n simulation: true\r\n },\r\n beforeEnter: (to, from, next) => {\r\n const activePackageConfigFeatures = store.getters['packages/getActivePackageConfig'].features;\r\n\r\n if (!store.state.addresses.isValid && !store.state.simulation.external && !activePackageConfigFeatures.disableCoverageVerification) {\r\n next({\r\n name: 'cobertura',\r\n params: {\r\n next: 'resumo'\r\n }\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n },\r\n {\r\n name: 'obrigado',\r\n path: '/simulador/:package/:coverage?/:from?/obrigado',\r\n component: () => import('@/app/views/Obrigado'),\r\n meta: {\r\n bodyClass: 'background-color--orange',\r\n simulation: false\r\n }\r\n },\r\n {\r\n name: 'contactar',\r\n path: '/simulador/:package/:coverage?/contactar',\r\n component: () => import('@/app/views/endings/Lead'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n },\r\n beforeEnter: (to, from, next) => {\r\n const activePackageConfigFeatures = store.getters['packages/getActivePackageConfig'].features;\r\n\r\n if (!store.state.addresses.isValid && !store.state.simulation.external && !activePackageConfigFeatures.disableCoverageVerification) {\r\n next({\r\n name: 'cobertura',\r\n params: {\r\n next: 'contactar'\r\n }\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n },\r\n {\r\n name: 'aderir',\r\n path: '/simulador/:package/:coverage?/aderir',\r\n component: () => import('@/app/views/endings/Enroll'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n },\r\n beforeEnter: (to, from, next) => {\r\n const activePackageConfigFeatures = store.getters['packages/getActivePackageConfig'].features;\r\n if (!store.state.addresses.isValid && store.state.simulation.external && !activePackageConfigFeatures.disableCoverageVerification) {\r\n next({\r\n name: 'cobertura',\r\n params: {\r\n next: 'aderir'\r\n }\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n },\r\n {\r\n name: 'finalizar',\r\n path: '/simulador/:package/:coverage?/aderir',\r\n component: () => import('@/app/views/endings/Subscribe'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'concluir',\r\n path: '/simulador/:package/:coverage?/aderir',\r\n component: () => import('@/app/views/endings/Print'),\r\n meta: {\r\n bodyClass: 'background-color--silver-faint',\r\n simulation: true\r\n }\r\n },\r\n {\r\n name: 'ok-sem-cobertura',\r\n path: '/simulador/:package/:coverage?/cobertura/submeter/semcobertura/obrigado',\r\n component: () => import('@/app/views/Ok'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'ok-com-cobertura',\r\n path: '/simulador/:package/:coverage?/cobertura/submeter/cobertura/obrigado',\r\n component: () => import('@/app/views/Ok'),\r\n meta: {\r\n bodyClass: 'background-color--silver'\r\n }\r\n },\r\n {\r\n name: 'referencia',\r\n path: '/simulador/:package/:coverage?/aderir/obrigado',\r\n component: () => import('@/app/views/ReferenciaBancaria'),\r\n meta: {\r\n bodyClass: 'background-color--orange',\r\n simulation: false\r\n }\r\n },\r\n {\r\n name: 'sem_sucesso',\r\n path: '/simulador/:package/:coverage?/aderir/semsucesso',\r\n component: () => import('@/app/views/SemSucesso'),\r\n meta: {\r\n bodyClass: 'background-color--orange',\r\n simulation: false\r\n }\r\n },\r\n {\r\n name: 'sem_sucesso_parceiros',\r\n path: '/simulador/:package/:coverage?/aderir/semsucesso',\r\n component: () => import('@/app/views/SemSucessoParceiros'),\r\n meta: {\r\n bodyClass: 'background-color--orange',\r\n simulation: false\r\n }\r\n },\r\n {\r\n name: 'simulador',\r\n path: '/simulador/:package/:coverage?/s/',\r\n component: () => import('@/app/views/Simulator'),\r\n meta: {\r\n bodyClass: 'background-color--white',\r\n simulation: true,\r\n showTimeline: true\r\n },\r\n children: [\r\n {\r\n name: 'inicio',\r\n path: 'inicio',\r\n component: () => import('@/app/views/simulator/Inicio'),\r\n beforeEnter: (to, from, next) => {\r\n const activePackageConfigFeatures = store.getters['packages/getActivePackageConfig'].features;\r\n const params = to.params;\r\n\r\n if (!store.state.addresses.isValid && !store.state.simulation.external && !activePackageConfigFeatures.disableCoverageVerification) {\r\n next({\r\n name: 'cobertura',\r\n params: {\r\n ...params,\r\n next: 'inicio'\r\n }\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n },\r\n {\r\n name: 'internet',\r\n path: 'internet',\r\n component: () => import('@/app/views/simulator/Internet')\r\n },\r\n {\r\n name: 'tv',\r\n path: 'tv',\r\n component: () => import('@/app/views/simulator/Tv')\r\n },\r\n {\r\n name: 'premium',\r\n path: 'tv/premium',\r\n component: () => import('@/app/views/simulator/TvPremium'),\r\n beforeEnter: (to, from, next) => {\r\n let direction;\r\n const fromView = from.name;\r\n\r\n switch (fromView) {\r\n case 'telefone':\r\n direction = -1;\r\n break;\r\n default:\r\n direction = 1;\r\n }\r\n\r\n const isChan90Active = store.getters['cart/isPathActive']('tv.components.chan_90');\r\n const activeItemsInTv = store.getters['cart/activeItemsInNamespace']('tv').length;\r\n const params = to.params;\r\n\r\n if (!isChan90Active && activeItemsInTv) {\r\n next();\r\n } else {\r\n const nextStepInt = store.state.timeline.current + direction;\r\n const nextStep = store.state.timeline.items[nextStepInt];\r\n\r\n store.commit('timeline/SET_CURRENT', store.state.timeline.current + direction);\r\n next({\r\n name: nextStep.handle,\r\n params: {\r\n ...params\r\n }\r\n });\r\n }\r\n }\r\n },\r\n {\r\n name: 'telefone',\r\n path: 'telefone',\r\n component: () => import('@/app/views/simulator/Telefone')\r\n },\r\n {\r\n name: 'voz',\r\n path: 'voz',\r\n component: () => import('@/app/views/simulator/Voz')\r\n },\r\n {\r\n name: 'movel',\r\n path: 'movel',\r\n component: () => import('@/app/views/simulator/Plano2')\r\n },\r\n {\r\n name: 'movel_adicionais',\r\n path: 'movel_adicionais',\r\n component: () => import('@/app/views/simulator/Movel'),\r\n beforeEnter: (to, from, next) => {\r\n let direction;\r\n const fromView = from.name;\r\n\r\n switch (fromView) {\r\n case 'fatura':\r\n direction = -1;\r\n break;\r\n default:\r\n direction = 1;\r\n }\r\n\r\n const activeItemsInNamespace = store.getters['cart/activeItemsInNamespace']('movel');\r\n store.getters['cart/activeItemsInNamespace']('plano').map(item => activeItemsInNamespace.push(item));\r\n const params = to.params;\r\n\r\n if (activeItemsInNamespace.length) {\r\n next();\r\n } else {\r\n const nextStepInt = store.state.timeline.current + direction;\r\n const nextStep = store.state.timeline.items[nextStepInt];\r\n\r\n store.commit('timeline/SET_CURRENT', store.state.timeline.current + direction);\r\n next({\r\n name: nextStep.handle,\r\n params: {\r\n ...params\r\n }\r\n });\r\n }\r\n }\r\n },\r\n {\r\n name: 'plano',\r\n path: 'plano',\r\n component: () => import('@/app/views/simulator/Plano')\r\n },\r\n {\r\n name: 'fatura_movel',\r\n path: 'fatura_movel',\r\n component: () => import('@/app/views/simulator/FaturaMovel')\r\n },\r\n {\r\n name: 'fatura',\r\n path: 'fatura',\r\n component: () => import('@/app/views/simulator/Fatura')\r\n },\r\n {\r\n name: 'fatura_detalhe',\r\n path: 'fatura_detalhe',\r\n component: () => import('@/app/views/simulator/FaturaDetalhe'),\r\n beforeEnter: (to, from, next) => {\r\n let direction;\r\n const fromView = from.name;\r\n\r\n switch (fromView) {\r\n case 'permanencia':\r\n direction = -1;\r\n break;\r\n default:\r\n direction = 1;\r\n }\r\n\r\n const activeItemsInNamespace = store.getters['cart/activeItemsInNamespace']('fatura_detalhe');\r\n const params = to.params;\r\n\r\n if (activeItemsInNamespace.length) {\r\n next();\r\n } else {\r\n const nextStepInt = store.state.timeline.current + direction;\r\n const nextStep = store.state.timeline.items[nextStepInt];\r\n\r\n store.commit('timeline/SET_CURRENT', store.state.timeline.current + direction);\r\n next({\r\n name: nextStep.handle,\r\n params: {\r\n ...params\r\n }\r\n });\r\n }\r\n }\r\n },\r\n {\r\n name: 'numero',\r\n path: 'numero',\r\n component: () => import('@/app/views/simulator/Numero')\r\n },\r\n {\r\n name: 'permanencia',\r\n path: 'permanencia',\r\n component: () => import('@/app/views/simulator/Permanencia')\r\n }\r\n ]\r\n },\r\n {\r\n name: 'em_manutencao',\r\n path: '/manutencao',\r\n component: () => import('@/app/views/EmManutencao')\r\n }\r\n];\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/routes/index.js","/* eslint-disable */\r\nimport Vue from 'vue';\r\nimport VueRouter from 'vue-router';\r\nimport routes from '@/routes';\r\nimport store from '@/store';\r\n\r\nVue.use(VueRouter);\r\n\r\nexport const router = new VueRouter({\r\n mode: 'history',\r\n routes,\r\n scrollBehavior(to, from, savedPosition) {\r\n return {\r\n x: 0,\r\n y: 0\r\n };\r\n }\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.matched.some(m => m.meta.simulation) && !store.state.simulation.activePackage) {\r\n next({\r\n path: '/',\r\n query: {\r\n ...to.query\r\n }\r\n });\r\n } else {\r\n next();\r\n }\r\n\r\n if ((!to.meta.showTimeline && !to.matched[0].meta.showTimeline) && store.getters['timeline/getVisibility']) {\r\n store.dispatch('timeline/setVisibility', false);\r\n }\r\n});\r\n\r\nrouter.afterEach((to) => {\r\n if ((to.meta.showTimeline || to.matched[0].meta.showTimeline) && !store.getters['timeline/getVisibility']) {\r\n store.dispatch('timeline/setVisibility', true);\r\n }\r\n});\r\n\r\nVue.router = router;\r\n\r\nexport default {\r\n router\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-router.js","import VuexRouterSync from 'vuex-router-sync';\r\nimport store from '@/store';\r\nimport { router } from './vue-router';\r\n\r\nVuexRouterSync.sync(store, router);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vuex-router-sync.js","import Vue from 'vue';\r\nimport VueMq from 'vue-mq';\r\n\r\nVue.use(VueMq, {\r\n breakpoints: {\r\n sm: 768,\r\n md: 992,\r\n lg: Infinity\r\n }\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-mq.js","import Vue from 'vue';\r\nimport VueBodyClass from 'vue-body-class';\r\nimport { router } from './vue-router';\r\n\r\nVue.use(VueBodyClass, router);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-body-class.js","import pt from './pt';\r\n\r\nexport default {\r\n pt\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/locale/index.js","import commons from './commons.json';\r\nimport coverage from './coverage.json';\r\nimport errors from './errors.json';\r\nimport header from './header.json';\r\nimport lobby from './lobby.json';\r\nimport summary from './summary.json';\r\n\r\nimport number from './modules/number.json';\r\n\r\nimport subscribe from './endings/subscribe.json';\r\n\r\nexport default {\r\n commons,\r\n coverage,\r\n errors,\r\n header,\r\n modules: {\r\n number\r\n },\r\n endings: {\r\n subscribe\r\n },\r\n lobby,\r\n summary\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/locale/pt/index.js","import Vue from 'vue';\r\nimport VueI18n from 'vue-i18n';\r\nimport messages from '@/locale';\r\n\r\nVue.use(VueI18n);\r\n\r\nexport const i18n = new VueI18n({\r\n locale: 'pt',\r\n fallbackLocale: 'pt',\r\n messages\r\n});\r\n\r\nexport default {\r\n i18n\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-i18n.js","import Vue from 'vue';\r\nimport vueSelect from 'vue-select';\r\n\r\nVue.component('v-select', vueSelect);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-select.js","import Vue from 'vue';\r\nimport VueTippy from 'vue-tippy';\r\n\r\nVue.use(VueTippy, {\r\n arrow: true,\r\n placement: 'right',\r\n inertia: true,\r\n animation: 'shift-toward',\r\n duration: '[600, 300]',\r\n delay: '[0, 350]',\r\n theme: 'purple',\r\n distance: 20,\r\n interactive: true\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-tippy.js","import Vue from 'vue';\r\nimport Vuelidate from 'vuelidate';\r\n\r\nVue.use(Vuelidate);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vuelidate.js","import Vue from 'vue';\r\nimport VuePrintNb from 'vue-print-nb';\r\n\r\nVue.use(VuePrintNb);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/vue-print-nb.js","import Vue from 'vue';\r\n\r\nVue.component('c-button', () => import('@/app/ui/Button'));\r\nVue.component('c-checkbox', () => import('@/app/ui/Checkbox'));\r\nVue.component('c-radio', () => import('@/app/ui/Radio'));\r\nVue.component('c-pill', () => import('@/app/ui/Pill'));\r\nVue.component('c-datepicker', () => import('@/app/ui/DatePickerInput'));\r\n\r\nVue.component('c-choice', () => import('@/app/components/Choice'));\r\nVue.component('c-choice-nullable', () => import('@/app/components/ChoiceNullable'));\r\nVue.component('c-choice-child', () => import('@/app/components/ChoiceChild'));\r\nVue.component('c-nav', () => import('@/app/components/Nav'));\r\n\r\nVue.component('c-cart', () => import('@/app/components/Cart'));\r\nVue.component('c-cart-kiosk', () => import('@/app/components/CartKiosk'));\r\n\r\nVue.component('c-cart-peak', () => import('@/app/components/CartPeak'));\r\nVue.component('c-cart-item', () => import('@/app/components/CartItem'));\r\n\r\nVue.component('c-timeline', () => import('@/app/components/Timeline'));\r\nVue.component('c-controls', () => import('@/app/components/Controls'));\r\n\r\nVue.component('c-section-header', () => import('@/app/components/SectionHeader'));\r\nVue.component('c-spinner', () => import('@/app/components/Spinner'));\r\n\r\nVue.component('c-fixed-container', () => import('@/app/components/FixedContainer'));\r\n\r\nVue.component('c-price-information', () => import('@/app/components/PriceInformation'));\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/_register.js","/* eslint-disable global-require */\r\n\r\nimport Vue from 'vue';\r\n\r\nexport default (function registerLayots() {\r\n Vue.component('l-default', () => import('@/app/layouts/LayoutDefault'));\r\n Vue.component('l-mobile', () => import('@/app/layouts/LayoutMobile'));\r\n Vue.component('l-kiosk', () => import('@/app/layouts/LayoutKiosk'));\r\n Vue.component('l-legacy', () => import('@/app/layouts/LayoutLegacy'));\r\n\r\n Vue.component('l-header-regular', () => import('@/app/layouts/HeaderRegular'));\r\n Vue.component('l-header-mobile', () => import('@/app/layouts/HeaderMobile'));\r\n Vue.component('l-header-kiosk', () => import('@/app/layouts/HeaderKiosk'));\r\n\r\n Vue.component('l-content-simple', () => import('@/app/layouts/ContentSimple'));\r\n Vue.component('l-content-cart', () => import('@/app/layouts/ContentWithCart'));\r\n Vue.component('l-content-no-cart', () => import('@/app/layouts/ContentWithoutCart'));\r\n}());\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/layouts/_register.js","import { mapActions, mapGetters } from 'vuex';\r\n\r\nexport default {\r\n computed: {\r\n ...mapGetters({\r\n $gm_error_message: 'errors/getErrorMessage'\r\n })\r\n },\r\n methods: {\r\n ...mapActions({\r\n $gm_error_setMessage: 'errors/setErrorMessage',\r\n $gm_error_setShow: 'errors/setShowError'\r\n }),\r\n $gm_error_show(message) {\r\n if (message) {\r\n this.$gm_error_setMessage(message);\r\n }\r\n\r\n this.$gm_error_setShow(true);\r\n }\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/global/error.js","import { mapGetters } from 'vuex';\r\n\r\nexport default {\r\n computed: {\r\n ...mapGetters({\r\n $gm_router_coverage: 'addresses/getCoverageType',\r\n $gm_router_package: 'simulation/getPackage'\r\n }),\r\n $gm_router_packageRoot() {\r\n if (!this.$gm_router_package) {\r\n return null;\r\n }\r\n\r\n return this.$gm_router_package.split('.')[0];\r\n }\r\n },\r\n methods: {\r\n $gm_router_push(name, params) {\r\n this.$router.push({\r\n name,\r\n params: {\r\n coverage: this.$gm_router_coverage,\r\n package: this.$gm_router_packageRoot,\r\n ...params\r\n }\r\n });\r\n },\r\n $gm_router_replace(name) {\r\n this.$router.replace({\r\n name,\r\n params: {\r\n coverage: this.$gm_router_coverage,\r\n package: this.$gm_router_packageRoot\r\n }\r\n });\r\n },\r\n $gm_router_goBack() {\r\n this.$router.push({\r\n name: this.route.from.name,\r\n params: {\r\n coverage: this.$gm_router_coverage,\r\n package: this.$gm_router_packageRoot\r\n }\r\n });\r\n }\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/global/router.js","import { mapGetters } from 'vuex';\r\nimport offersMixin from '../offers';\r\nimport determineActivePriceMixin from '../determineActivePrice';\r\n\r\nconst track = (content) => {\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push(content);\r\n};\r\n\r\nconst resolvePath = ($route, origin) => {\r\n const routes = ['/simulador'];\r\n\r\n if ($route.params.package) {\r\n routes.push(`/${$route.params.package}`);\r\n }\r\n\r\n if ($route.params.coverage) {\r\n routes.push(`/${$route.params.coverage}`);\r\n }\r\n\r\n return routes.join('') + origin;\r\n};\r\nexport default {\r\n mixins: [\r\n offersMixin,\r\n determineActivePriceMixin\r\n ],\r\n computed: {\r\n ...mapGetters({\r\n cart: 'cart/getContent',\r\n simulationPackage: 'simulation/getPackage',\r\n simulationTrackingPackage: 'simulation/getTrackingPackage',\r\n cartStringifiedContent: 'cart/getTrackingContent',\r\n globalConfig: 'packages/getConfig'\r\n })\r\n },\r\n methods: {\r\n\r\n $gm_tracker_trackMSA(data) {\r\n const url = window.location.href;\r\n\r\n const content = {\r\n event: data.event,\r\n page_title: data.title,\r\n step_name: data.name,\r\n page_url: url,\r\n step_number: data.step\r\n };\r\n\r\n if (data.class) content.simulator_class = data.class;\r\n\r\n if (data.subClass) content.simulator_sub_class = data.subClass;\r\n\r\n if (data.quantity) content.quantity_plans_added = data.quantity;\r\n\r\n if (data.fidelization) content.fidelity_months = data.fidelization;\r\n\r\n if (data.value) content.value = data.value;\r\n\r\n if (data.electronicReceipt) content.electronic_receipt = data.electronicReceipt;\r\n\r\n if (data.directDebit) content.direct_debit = data.directDebit;\r\n\r\n if (data.ecommerce) content.ecommerce = data.ecommerce;\r\n\r\n if (data.items) content.items = data.items;\r\n\r\n if (data.currency) content.currency = data.currency;\r\n\r\n if (data.transaction_id) content.transaction_id = data.transaction_id;\r\n\r\n if (data.qty_1st_data_plan != null) content.qty_1st_data_plan = data.qty_1st_data_plan;\r\n\r\n if (data.qty_2nd_data_plan != null) content.qty_2nd_data_plan = data.qty_2nd_data_plan;\r\n\r\n if (data.qty_3rd_data_plan != null) content.qty_3rd_data_plan = data.qty_3rd_data_plan;\r\n\r\n if (data.qty_4th_data_plan != null) content.qty_4th_data_plan = data.qty_4th_data_plan;\r\n\r\n if (data.userData) content.user_data = data.userData;\r\n\r\n track(content);\r\n },\r\n $gm_tracker_trackAction(name, label, origin) {\r\n const path = origin ? resolvePath(this.$route, origin) : window.location.pathname;\r\n\r\n const content = {\r\n event: 'simulador-action',\r\n event_category: path,\r\n event_action: name,\r\n event_label: label\r\n };\r\n\r\n track(content);\r\n },\r\n $gm_tracker_trackPageView(pathSuffix) {\r\n const routes = ['/simulador'];\r\n\r\n if (this.$route.params.package) {\r\n routes.push(`/${this.$route.params.package}`);\r\n }\r\n\r\n if (this.$route.params.coverage) {\r\n routes.push(`/${this.$route.params.coverage}`);\r\n }\r\n\r\n const path = routes.join('') + pathSuffix;\r\n const content = {\r\n event: 'simulador-pageview',\r\n event_path: path\r\n };\r\n\r\n track(content);\r\n },\r\n $gm_tracker_trackPageviewSite({ name = '', title } = { name: '', title: '' }) {\r\n const pathNamespace = this.globalConfig && this.globalConfig.analyticsNamespace ? `/${this.globalConfig.analyticsNamespace}` : '';\r\n const basePath = this.$route.params.package ? this.$route.params.package : '';\r\n let titleNamespace = '';\r\n\r\n switch (this.simulationTrackingPackage) {\r\n case 'casa':\r\n case 'casa-movel':\r\n titleNamespace = 'Simulador';\r\n break;\r\n case 'movel':\r\n case 'movel/pre':\r\n case 'movel/pos':\r\n titleNamespace = 'Telemóvel - Simulador';\r\n break;\r\n case 'singular':\r\n case 'colectiva':\r\n titleNamespace = 'Empresas - Simulador';\r\n break;\r\n default:\r\n titleNamespace = 'Simulador';\r\n break;\r\n }\r\n\r\n const content = {\r\n event: 'trackPageviewSite',\r\n page_name: `${pathNamespace}/${basePath ? `${basePath}/` : ''}${name ? `${name}/` : ''}`,\r\n page_title: `${title ? `${title} - ` : ''}${titleNamespace} - ${document.title}`\r\n };\r\n\r\n track(content, 'trackPageviewSite');\r\n },\r\n $gm_tracker_trackFormSubmission(name) {\r\n const content = {\r\n event: 'sendForm',\r\n formname: name\r\n };\r\n\r\n track(content, 'trackFormSubmission');\r\n },\r\n $gm_tracker_trackSummary() {\r\n const content = {\r\n event: 'simulador-summary',\r\n event_category: 'Simulador',\r\n event_action: this.$gm_tracker_getContext,\r\n event_label: this.cartStringifiedContent,\r\n event_value: this.$gm_tracker_getPrice\r\n };\r\n\r\n track(content, 'trackSummary');\r\n },\r\n $gm_tracker_getContext() {\r\n let context;\r\n\r\n switch (this.simulationPackage) {\r\n case 'casa':\r\n context = 'Para Casa/ Casa e Telemóvel';\r\n break;\r\n case 'movel':\r\n case 'movel.carregamentos':\r\n case 'movel.pospago':\r\n context = 'Para o Telemóvel';\r\n break;\r\n case 'singular':\r\n context = 'Pessoa Singular';\r\n break;\r\n case 'colectiva':\r\n context = 'Pessoa Colectiva';\r\n break;\r\n default:\r\n context = 'NOT_SELECTED';\r\n }\r\n\r\n return context;\r\n },\r\n $gm_tracker_getPrice() {\r\n let total = 0;\r\n\r\n const filteredItems = this.cart.filter(item => item.quantity && item.config.isListable);\r\n\r\n filteredItems.map((item) => {\r\n if (this.isPathAnOffer(item.path)) {\r\n return false;\r\n }\r\n\r\n const activePrice = this.determineActivePrice(item.price);\r\n\r\n const basePrice = activePrice.absolute ? 0 : item.config.basePrice;\r\n const value = item.quantity * (activePrice.value + basePrice);\r\n\r\n total += value;\r\n\r\n return true;\r\n });\r\n\r\n return Math.round(total - this.validDiscountLoudOffersValue);\r\n },\r\n $fb_tracker_trackSubscribe(price) {\r\n window.fbq('track', 'Subscribe', { value: price, currency: 'EUR', predicted_ltv: '0.00' });\r\n }\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/global/tracker.js","import Vue from 'vue';\r\nimport errorMixin from './error';\r\nimport routerMixin from './router';\r\nimport trackerMixin from './tracker';\r\n\r\nVue.mixin(errorMixin);\r\nVue.mixin(routerMixin);\r\nVue.mixin(trackerMixin);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/global/_register.js","export default {\r\n computed: {\r\n $m_ie_isLegacy() {\r\n return !!document.documentMode;\r\n }\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/ie.js","\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.$m_ie_isLegacy)?_c('l-legacy'):(_vm.mode === 'kiosk')?_c('l-kiosk',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1):(_vm.mode && (_vm.$mq === 'md' || _vm.$mq === 'lg'))?_c('l-default',{attrs:{\"device\":_vm.$mq,\"ie\":_vm.$m_ie_isLegacy}},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1):(_vm.mode)?_c('l-mobile',{attrs:{\"device\":_vm.$mq,\"ie\":_vm.$m_ie_isLegacy}},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1):_vm._e()}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1a06f1c7\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a06f1c7\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","/* ============\r\n * Main File\r\n * ============\r\n *\r\n * Will initialize the application.\r\n */\r\n\r\nimport Vue from 'vue';\r\n\r\n/* ============\r\n * Shims\r\n * ============\r\n *\r\n * Long live Internet explorer\r\n */\r\n// import './shims/arrayFind';\r\n\r\n/* ============\r\n * Plugins\r\n * ============\r\n *\r\n * Import and bootstrap the plugins.\r\n */\r\n\r\nimport './plugins/vuex';\r\nimport './plugins/axios';\r\nimport './plugins/idle-vue';\r\nimport { router } from './plugins/vue-router';\r\nimport './plugins/vuex-router-sync';\r\nimport './plugins/vue-mq';\r\nimport './plugins/vue-body-class';\r\nimport { i18n } from './plugins/vue-i18n';\r\nimport './plugins/vue-select';\r\nimport './plugins/vue-tippy';\r\nimport './plugins/vuelidate';\r\nimport './plugins/vue-print-nb';\r\n\r\n/* ============\r\n * Styling\r\n * ============\r\n */\r\n\r\nimport './assets/sass/main.scss';\r\n\r\n/* ============\r\n * Global registrations\r\n * ============\r\n *\r\n * Register modules globally\r\n */\r\nimport './app/components/_register';\r\nimport './app/layouts/_register';\r\nimport './app/mixins/global/_register';\r\n\r\n/* ============\r\n * Main App\r\n * ============\r\n */\r\n\r\nimport App from './App';\r\nimport store from './store';\r\n\r\nVue.config.productionTip = false;\r\n\r\n/* eslint-disable no-new */\r\nnew Vue({\r\n /**\r\n * Bind the Vue instance to the HTML.\r\n */\r\n el: '#app',\r\n\r\n /**\r\n * The localization plugin.\r\n */\r\n i18n,\r\n\r\n /**\r\n * The router.\r\n */\r\n router,\r\n\r\n /**\r\n * The Vuex store.\r\n */\r\n store,\r\n\r\n /**\r\n * Will render the application.\r\n */\r\n components: { App },\r\n template: ''\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","import { mapGetters } from 'vuex';\r\n\r\nexport default {\r\n computed: {\r\n ...mapGetters({\r\n determineActivePrice: 'cart/determineActivePrice'\r\n })\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/determineActivePrice.js","module.exports = {\"card\":\"Cartão\",\"newNumber\":\"Número NOWO\",\"chooseYourNumber\":\"Escolha o seu número NOWO\",\"portabilityRequest\":\"Pedido de portabilidade\",\"portabilityLabel\":\"Quero manter o meu número atual\",\"insertTheNumberToKeep\":\"Insira o número a manter\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/modules/number.json\n// module id = QV+e\n// module chunks = 64","module.exports = {\"welcome\":\"BEM-VINDO ao simulador NOWO\",\"sellingPoint\":\"QUER CONHECER
    A NOSSA OFERTA PARA:\",\"beforeYouStart\":\"Antes de começar, escolha o serviço que pretende\",\"validUntil\":\"Condições válidas até\",\"start\":\"COMEÇAR\",\"taxIncluded\":\"Os valores apresentados incluem IVA à taxa legal em vigor.\",\"taxNotIncluded\":\"Aos valores apresentados acresce IVA à taxa legal em vigor.\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/lobby.json\n// module id = XYHz\n// module chunks = 64","module.exports = {\"noIbanAdded\":\"Não concluiu o preenchimento do campo de IBAN.
    O mesmo é facultativo, no entanto para usufruir dos descontos incluídos na campanha e evitar efetuar o pedido de ativação por outra via, recomendamos que preencha a informação em falta.
    \",\"noPortabilityAdded\":\"Não concluiu o preenchimento do(s) campo(s) de Portabilidade.
    O mesmo é facultativo, no entanto se não preencher a informação necessária não será dado seguimento ao pedido de portabilidade. Para evitar efetuar o pedido por outra via, recomendamos que preencha a informação em falta.
    \",\"noIbanNorPortabilityAdded\":\"Não concluiu o preenchimento do(s) campo(s) de Portabilidade e de IBAN.
    O mesmo é facultativo, no entanto se não preencher a informação necessária não será dado seguimento ao pedido de portabilidade e ativação de IBAN.
    Para evitar efetuar os pedidos por outra via, recomendamos que preencha a informação em falta.
    \"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/endings/subscribe.json\n// module id = aIOg\n// module chunks = 64","module.exports = {\"continue\":\"Continuar\",\"previous\":\"Anterior\",\"next\":\"Seguinte\",\"returnToSummary\":\"Voltar ao Resumo\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/commons.json\n// module id = c1DK\n// module chunks = 64","module.exports = {}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/summary.json\n// module id = elUY\n// module chunks = 64","module.exports = {\"checkCoverage\":\"Verificar cobertura\",\"title\":\"Confirme se a NOWO já está na sua zona.\",\"subTitle\":\"Indique a sua morada e verifique se tem cobertura.\",\"placeholder\":\"Morada ou Código Postal\",\"cantFindAddress\":\"Não encontra a sua morada?\",\"returnToSimulator\":\"Voltar ao simulador\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/coverage.json\n// module id = itZL\n// module chunks = 64","module.exports = {\"c2c\":{\"title\":\"Podemos ajudar?\",\"shortTitle\":\"Ajuda\",\"tagLine\":\"Ligamos grátis\"},\"fis\":\"Resumo Contratual\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/header.json\n// module id = kSQE\n// module chunks = 64","import { mapGetters } from 'vuex';\r\n\r\nexport default {\r\n computed: {\r\n ...mapGetters({\r\n offers: 'offers/getContent',\r\n isPathActive: 'cart/isPathActive',\r\n isPathBeginningWithActive: 'cart/isPathBeginningWithActive',\r\n isOfferValid: 'offers/isOfferValid',\r\n isOfferVoid: 'offers/isOfferVoid',\r\n validDiscountOffers: 'offers/getValidDiscountOffers',\r\n validDiscountLoudOffers: 'offers/getValidDiscountLoudOffers',\r\n validDiscountLoudOffersValue: 'offers/getValidDiscountLoudOffersValue',\r\n validDiscountSilentOffers: 'offers/getValidDiscountSilentOffers',\r\n validDiscountSilentOffersValue: 'offers/getValidDiscountSilentOffersValue',\r\n validExternalOffers: 'offers/getValidExternalOffers',\r\n validInternalOffers: 'offers/getValidInternalOffers',\r\n validPercentageOffers: 'offers/getValidPercentageOffers',\r\n validPercentageOffersValue: 'offers/getValidPercentageOffersValue',\r\n validDiscountOffersValue: 'offers/getValidDiscountOffersValue',\r\n totalMobileBaseServicesPrice: 'fis/getTotalMobileBaseServicesPrice',\r\n totalNonFidelizedMobilBaseServicesPrice: 'fis/getTotalNonFidelizedMobilBaseServicesPrice',\r\n totalHiddenAdditionalServicesPrice: 'fis/getTotalHiddenAdditionalServicesPrice',\r\n activeItems: 'cart/getActiveItems',\r\n movelAdicionaisServicesPrice: 'cart/getMovelAdicionaisServicesPrice',\r\n simulationPackage: 'simulation/getPackage',\r\n activePackageConfig: 'packages/getActivePackageConfig'\r\n }),\r\n isOffer() {\r\n const offers = this.offers.filter(offer => offer.subject.target === this.path && this.isOfferValid(offer));\r\n return !!offers.length;\r\n },\r\n hasEligibleOffers() {\r\n const associatedOffers = this.offers.filter(offer => this.isPathRequiredInOffer(offer, this.path));\r\n const eligibleOffers = associatedOffers.filter(offer => this.isOfferEligible(offer, this.path));\r\n\r\n return eligibleOffers.length ? eligibleOffers.map(offer => offer.description) : false;\r\n },\r\n validOffers() {\r\n const offers = [];\r\n\r\n offers.push(...this.validInternalOffers);\r\n offers.push(...this.validPercentageOffers);\r\n\r\n // const discounts = this.validDiscountOffers.filter(i => !i.description.includes('15GB') && !i.description.includes('1GB'));\r\n // const discountsValue = this.validDiscountOffers.length ? discounts.map(i => i.subject.value).reduce((sum, x) => sum + x) : 0;\r\n\r\n const acumulatedOfferValue = this.totalNonFidelizedMobilBaseServicesPrice - this.totalMobileBaseServicesPrice - 2;\r\n\r\n if ((this.simulationPackage === 'movel.pospago' || this.simulationPackage === 'movel') && (acumulatedOfferValue > 0)) {\r\n offers.push({\r\n description: `Desconto de ${acumulatedOfferValue}€ durante período de fidelização`,\r\n subject: {\r\n category: 'mensality',\r\n type: 'discount'\r\n }\r\n });\r\n }\r\n\r\n if (offers.length) {\r\n offers.unshift(offers.splice(offers.findIndex(offer => offer.subject.category === 'galp'), 1)[0]);\r\n }\r\n\r\n /* external offers is here to the 15gb campaign appear on top of the list of offers */\r\n offers.unshift(...this.validDiscountOffers.filter(offer => !offer.subject.silentOnCart));\r\n offers.unshift(...this.validExternalOffers);\r\n\r\n return offers;\r\n },\r\n hasPeriodicOffer() {\r\n return !!this.validOffers.filter(offer => offer.subject.isPeriodic).length;\r\n }\r\n },\r\n methods: {\r\n isPathRequiredInOffer(_offer, _path) {\r\n const requiredItemsQuantity = _offer.relationships && _offer.relationships.required ? _offer.relationships.required.length : 0;\r\n\r\n if (requiredItemsQuantity) {\r\n return _offer.relationships.required.some((path) => {\r\n if (Array.isArray(path)) {\r\n return path.includes(_path);\r\n }\r\n\r\n return path === _path;\r\n });\r\n }\r\n\r\n return false;\r\n },\r\n isPathAnOffer(_path) {\r\n const offers = this.offers.filter(offer => offer.subject.target === _path && this.isOfferValid(offer));\r\n\r\n return !!offers.length;\r\n },\r\n isOfferVoidable(_offer, _path) {\r\n // If any void path is active, the offer resolves to void.\r\n const voidItemsQuantity = _offer.relationships && _offer.relationships.void ? _offer.relationships.void.length : 0;\r\n\r\n if (voidItemsQuantity) {\r\n return _offer.relationships.void.some((path) => {\r\n // In a void relationship, an array means that all paths within the array are required to be active in order to void the offer\r\n if (Array.isArray(path)) {\r\n return path.every((itemPath) => {\r\n // If an element of an array is itself an array, at least one of the paths must be active in order to resolve that element to true\r\n if (Array.isArray(itemPath)) {\r\n return path.some(subItemPath => this.isPathActive(subItemPath) || subItemPath === _path);\r\n }\r\n\r\n return this.isPathActive(itemPath) || itemPath === _path;\r\n });\r\n }\r\n\r\n return this.isPathActive(path) || path === _path;\r\n });\r\n }\r\n\r\n // If there are no defined relationships, the offer is not void.\r\n return false;\r\n },\r\n isOfferEligible(_offer, _path) {\r\n // Bail if offer is void.\r\n if (this.isOfferVoid(_offer) || this.isOfferVoidable(_offer, _path)) {\r\n return false;\r\n }\r\n\r\n // If offer is valid it's also considered eligible.\r\n if (this.isOfferValid(_offer)) {\r\n return true;\r\n }\r\n\r\n const requiredItemsQuantity = _offer.relationships && _offer.relationships.required ? _offer.relationships.required.length : 0;\r\n const missingRequiredItems = [];\r\n\r\n if (requiredItemsQuantity) {\r\n _offer.relationships.required.forEach((path) => {\r\n if (Array.isArray(path)) {\r\n if (!path.some(itemPath => this.isPathActive(itemPath))) {\r\n const missingPaths = path.filter(itemPath => !this.isPathActive(itemPath));\r\n\r\n if (missingPaths.length) {\r\n missingRequiredItems.push(missingPaths);\r\n }\r\n }\r\n } else if (!this.isPathActive(path)) {\r\n missingRequiredItems.push(path);\r\n }\r\n });\r\n }\r\n\r\n if (missingRequiredItems.length === 1) {\r\n const [missingRequiredItem] = missingRequiredItems;\r\n\r\n if (Array.isArray(missingRequiredItem)) {\r\n return missingRequiredItem.includes(_path);\r\n }\r\n\r\n return missingRequiredItem === _path;\r\n }\r\n\r\n return false;\r\n },\r\n getEligibleOffers(_path) {\r\n const associatedOffers = this.offers.filter(offer => this.isPathRequiredInOffer(offer, _path));\r\n const eligibleOffers = associatedOffers.filter(offer => this.isOfferEligible(offer, _path) && !offer.subject.silentOnChoice);\r\n\r\n const activeOffers = [];\r\n\r\n const displayOffers = eligibleOffers.filter((offer) => {\r\n if (offer.subject.family) {\r\n if (activeOffers.includes(offer.subject.family)) {\r\n return false;\r\n }\r\n\r\n activeOffers.push(offer.subject.family);\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return displayOffers;\r\n }\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/mixins/offers.js","module.exports = {\"invalid\":\"Inválido\",\"invalidEmail\":\"Email inválido\",\"invalidNumber\":\"Número inválido\",\"shouldChooseDifferentEmail\":\"Por favor coloque um email diferente dos emails inseridos acima\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/locale/pt/errors.json\n// module id = zzbc\n// module chunks = 64"],"sourceRoot":""}