${itemList}\n
${this.$t('orders.new.products-unavailable.message') as string}
\n
`;\n this.$buefy.dialog.alert({\n title,\n message,\n confirmText: this.$t('orders.new.products-unavailable.button') as string,\n onConfirm: () => {\n // Remove unavailable items from cart\n this.$store.commit('order/removeCartItems', items);\n },\n });\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectProducts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectProducts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SelectProducts.vue?vue&type=template&id=766ae483&scoped=true&\"\nimport script from \"./SelectProducts.vue?vue&type=script&lang=ts&\"\nexport * from \"./SelectProducts.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SelectProducts.vue?vue&type=style&index=0&id=766ae483&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"766ae483\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"step2\"},[_c('OrderReferenceField'),_c('div',{staticClass:\"shipping layout__content layout__content--large\"},[_c('header',{staticClass:\"layout__header layout__header--title-only\"},[_c('div',{staticClass:\"shipping__title\"},[_c('h1',{staticClass:\"title title--direct\"},[_vm._v(_vm._s(_vm.$t('orders.shipping.title')))])])]),_c('div',{staticClass:\"shipping__content\"},[_c('ShipToField'),_c('DeliveryDateField')],1),_c('NewOrderFooter',{attrs:{\"is-invalid\":_vm.isInvalid,\"step\":\"order-reference-and-shipping\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"order-reference\"},[_c('ValidationProvider',{attrs:{\"rules\":\"noSpecialCharacters\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('header',{staticClass:\"layout__content layout__content--large\"},[_c('div',{staticClass:\"order-reference__title\"},[_c('h1',{staticClass:\"title title--direct\"},[_vm._v(\" \"+_vm._s(_vm.$t('orders.reference.title'))+\" \")]),_c('p',{staticClass:\"layout__intro-text--orders\"},[_vm._v(\" \"+_vm._s(_vm.$t('orders.reference.intro'))+\" \")])]),_c('BField',{staticClass:\"order-reference__number\",attrs:{\"type\":errors.length ? 'is-danger' : '',\"message\":errors.length ? errors[0] : ''},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('orders.reference.number.title'))+\" \"),_c('span',{staticClass:\"order-reference__label\"},[_vm._v(\" \"+_vm._s(_vm.$t('orders.reference.number.max-characters'))+\" \")])]},proxy:true}],null,true)},[_c('BInput',{staticClass:\"input--order-reference\",attrs:{\"value\":_vm.orderReference,\"placeholder\":_vm.$t('orders.reference.number.placeholder'),\"maxlength\":\"20\"},on:{\"input\":function($event){return _vm.setOrderReference($event)}}}),_c('div',{staticClass:\"order-reference__validation-icon\",class:{\n 'order-reference__validation-icon--active': _vm.active,\n 'order-reference__validation-icon--danger': errors.length,\n }},[(!errors.length)?_c('BIcon',{attrs:{\"icon\":\"check\"}}):_c('BIcon',{attrs:{\"icon\":\"close\",\"variant\":\"danger\"}})],1)],1)],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from 'vue-property-decorator';\nimport { ValidationProvider, extend } from 'vee-validate';\nimport i18n from '@/i18n';\n\nextend('noSpecialCharacters', {\n validate: (value) => {\n const forbiddenChars = ['#', '\"', \"'\", '*', ','];\n return !forbiddenChars.some((char) => value.includes(char));\n },\n message: i18n.t('orders.reference.validation-error') as string,\n});\n\n@Component({\n components: { ValidationProvider },\n})\nexport default class OrderReferenceField extends Vue {\n get orderReference(): string {\n return this.$store.state.order.cart.PurchOrder;\n }\n\n setOrderReference(reference: string) {\n this.$store.commit('order/setOrderReference', reference);\n }\n\n get active(): boolean {\n return !!this.orderReference;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderReferenceField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderReferenceField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrderReferenceField.vue?vue&type=template&id=60c40ffd&scoped=true&\"\nimport script from \"./OrderReferenceField.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrderReferenceField.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OrderReferenceField.vue?vue&type=style&index=0&id=60c40ffd&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60c40ffd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ship-to\"},[_c('div',{staticClass:\"ship-to__title\"},[_vm._v(_vm._s(_vm.$t('orders.shipping.ship-to.title')))]),_c('div',{staticClass:\"ship-to__content\"},[_vm._l((_vm.partners),function(partner){return _c('BRadio',{key:partner.Id,staticClass:\"radio--partner\",attrs:{\"value\":_vm.shipToParty,\"native-value\":partner.CustomerNr,\"required\":\"\"},on:{\"input\":function($event){return _vm.setShipToParty($event)}}},[_c('ShipToAddress',{attrs:{\"ship-to\":partner}})],1)}),(_vm.loadingShipToPartners)?_c('label',{staticClass:\"partner--skeleton\"},[_c('div',{staticClass:\"check\"},[_c('BSkeleton',{attrs:{\"circle\":\"\",\"width\":\"16\",\"height\":\"16\"}})],1),_c('div',{staticClass:\"ship-to__address\"},_vm._l(([0, 1, 2]),function(index){return _c('BSkeleton',{key:index,staticClass:\"ship-to__value\"})}),1)]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ship-to__address\"},[_c('div',{staticClass:\"ship-to__value ship-to__value--name\"},[_vm._v(\" \"+_vm._s(_vm.address[0])+\" \"),(_vm.shipTo.IncoTerms1)?_c('div',{staticClass:\"ship-to__incoterm\"},[_vm._v(\" \"+_vm._s(_vm.shipTo.IncoTerms1)+\" \")]):_vm._e()]),_c('div',{staticClass:\"ship-to__value ship-to__value--address1\"},[_vm._v(\" \"+_vm._s(_vm.address[1])+\" \")]),_c('div',{staticClass:\"ship-to__value ship-to__value--city-postalcode\"},[_vm._v(\" \"+_vm._s(_vm.address[2])+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from 'vue-property-decorator';\nimport PostalAddress from 'i18n-postal-address';\nimport { SapCustomerPartner } from '@/api/model/sap-customer-partner';\n\n@Component\nexport default class ShipToAddress extends Vue {\n @Prop(Object)\n shipTo!: SapCustomerPartner;\n\n get address() {\n const address = new PostalAddress();\n address\n .setCompanyName(this.shipTo.PartnerName)\n .setAddress1(this.shipTo.StreetAndNumber)\n .setCity(this.shipTo.City)\n .setCountry(this.shipTo.CountryKey)\n .setPostalCode(this.shipTo.PostalCode);\n return address.output().map((line: string[]) => line.join(' '));\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShipToAddress.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShipToAddress.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShipToAddress.vue?vue&type=template&id=10ae57fd&\"\nimport script from \"./ShipToAddress.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShipToAddress.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from 'vue-property-decorator';\nimport { mapState } from 'vuex';\nimport ShipToAddress from '@/components/orders/new-order/ShipToAddress.vue';\nimport { SapCustomerPartner } from '@/api/model/sap-customer-partner';\nimport { SalesOrderAll as SalesOrder } from '@/logic/orders/SalesOrderAll';\n\n@Component({\n components: { ShipToAddress },\n computed: {\n ...mapState('order', ['cart', 'shipToPartners', 'loadingShipToPartners']),\n },\n})\nexport default class ShipToField extends Vue {\n cart!: SalesOrder;\n\n shipToPartners!: SapCustomerPartner[];\n\n loadingShipToPartners!: boolean;\n\n get shipToParty(): string | null | undefined {\n return this.cart.ShipToParty;\n }\n\n get partners(): SapCustomerPartner[] {\n const partners = this.shipToPartners;\n if (\n !this.cart.ShipToParty &&\n partners.length === 1 &&\n partners[0].CustomerNr\n ) {\n this.setShipToParty(partners[0].CustomerNr);\n }\n return partners;\n }\n\n mounted() {\n this.$store.dispatch('order/fetchShipToPartners');\n }\n\n setShipToParty(customerNr: string) {\n this.$store.commit('order/setCartShipToParty', {\n CustomerNr: customerNr,\n });\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShipToField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShipToField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShipToField.vue?vue&type=template&id=55bcdce0&scoped=true&\"\nimport script from \"./ShipToField.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShipToField.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ShipToField.vue?vue&type=style&index=0&id=55bcdce0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55bcdce0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('BField',{staticClass:\"ship-delivery-date\",scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"ship-delivery-date__title\"},[_vm._v(\" \"+_vm._s(_vm.$t('orders.shipping.delivery-date.title'))+\" \"),_c('span',{staticClass:\"ship-delivery-date__label\"},[_vm._v(\" \"+_vm._s(_vm.$t('orders.shipping.delivery-date.label'))+\" \")])])]},proxy:true}])},[_c('div',{staticClass:\"ship-delivery-date__content\"},[(_vm.shipToParty())?_c('BDatepicker',{staticClass:\"datepicker--shipping\",attrs:{\"inline\":\"\",\"value\":_vm.orderDeliveryDate,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"unselectable-days-of-week\":[0, 6],\"locale\":_vm.$i18n.locale,\"icon-next\":\"chevron_right\",\"icon-prev\":\"chevron_left\",\"first-day-of-week\":1,\"required\":\"\"},on:{\"input\":function($event){return _vm.setDeliveryDate($event)}}}):_c('BDatepicker',{staticClass:\"datepicker--shipping datepicker--disabled\",attrs:{\"inline\":\"\",\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"unselectable-days-of-week\":[0, 6],\"locale\":_vm.$i18n.locale,\"icon-next\":\"chevron_right\",\"icon-prev\":\"chevron_left\",\"first-day-of-week\":1}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Get the rules for the expected delivery date per country\n\nimport { addDays, isSaturday, isSunday } from 'date-fns';\n\n// Number of business days\ninterface DaysRange {\n [hour: number]: number;\n}\n\ninterface CountrySetting {\n min: DaysRange;\n max?: number;\n}\n\ninterface CountrySettings {\n [country: string]: CountrySetting;\n}\n\nexport default class DeliveryDates {\n static countrySettings: CountrySettings = {\n NL: {\n min: { 0: 1, 10: 2 },\n },\n BE: {\n min: { 0: 1, 10: 2 },\n },\n GB: {\n min: { 0: 2, 14: 3 },\n },\n IE: {\n min: { 0: 4, 12: 4 },\n },\n DE: {\n min: { 0: 2, 12: 3 },\n },\n AT: {\n min: { 0: 3, 12: 4 },\n },\n FI: {\n min: { 0: 4, 12: 5 },\n },\n NO: {\n min: { 0: 4, 12: 5 },\n },\n SE: {\n min: { 0: 4, 12: 5 },\n },\n ES: {\n min: { 0: 4, 12: 5 },\n },\n PT: {\n min: { 0: 4, 12: 5 },\n },\n FR: {\n min: { 0: 2, 12: 3 },\n },\n IT: {\n min: { 0: 4, 12: 5 },\n },\n GR: {\n min: { 0: 5, 12: 6 },\n },\n PL: {\n min: { 0: 5, 12: 6 },\n },\n CZ: {\n min: { 0: 5, 12: 6 },\n },\n };\n\n static getMin(country?: string): Date {\n let delta = 1;\n const settings = country\n ? DeliveryDates.countrySettings[country]\n : undefined;\n if (settings && settings.min) {\n const range = Object.keys(settings.min).reverse();\n range.some((hour) => {\n const hourNumber = parseInt(hour, 10);\n if (this.getNow().getHours() >= hourNumber) {\n delta = settings.min[hourNumber];\n return true;\n }\n return false;\n });\n }\n const today = DeliveryDates.getNow();\n const target = DeliveryDates.addDays(today, delta);\n // If target falls in weekend, select next Monday\n if (isSaturday(target)) {\n return DeliveryDates.addDays(target, 2);\n }\n if (isSunday(target)) {\n return DeliveryDates.addDays(target, 1);\n }\n return target;\n }\n\n static getMax(country?: string): Date | undefined {\n let delta;\n const range = country ? DeliveryDates.countrySettings[country] : undefined;\n if (range && range.max !== undefined) {\n delta = range.max;\n }\n if (!delta) {\n return undefined;\n }\n const today = DeliveryDates.getNow();\n return DeliveryDates.addDays(today, delta);\n }\n\n static addDays(date: Date, delta: number) {\n return addDays(date, delta);\n }\n\n static getNow(): Date {\n return new Date(Date.now());\n }\n}\n","\nimport { Component, Vue } from 'vue-property-decorator';\nimport { parse, format, isBefore, isSaturday, isSunday } from 'date-fns';\nimport { SapCustomerPartner } from '@/api/model';\nimport { SalesOrderAll } from '@/logic/orders/SalesOrderAll';\nimport DeliveryDates from '@/logic/orders/DeliveryDates';\n\nconst datePart = (date: Date): Date =>\n new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\n@Component\nexport default class DeliveryDateField extends Vue {\n get cart(): SalesOrderAll {\n return this.$store.state.order.cart;\n }\n\n get minDate(): Date {\n const country = this.getCountry();\n return datePart(DeliveryDates.getMin(country));\n }\n\n get maxDate(): Date | undefined {\n const country = this.getCountry();\n const max = DeliveryDates.getMax(country);\n if (max === undefined) {\n return max;\n }\n return datePart(max);\n }\n\n get orderDeliveryDate(): Date | undefined {\n const dateString = this.$store.state.order.cart.ReqDlvDate;\n if (!dateString) {\n this.setDeliveryDate(this.minDate);\n return this.minDate;\n }\n let date = parse(`${dateString}12+0000`, 'yyyyMMddHHXX', this.minDate);\n if (date instanceof Date && !Number.isNaN(date.getDate())) {\n if (isBefore(date, this.minDate)) {\n date = this.minDate;\n }\n\n // Weekend check\n if (isSaturday(date)) {\n date = DeliveryDates.addDays(date, 2);\n } else if (isSunday(date)) {\n date = DeliveryDates.addDays(date, 1);\n }\n\n this.setDeliveryDate(date);\n return date;\n }\n this.setDeliveryDate(this.minDate);\n return this.minDate;\n }\n\n setDeliveryDate(date: Date) {\n const formatted = format(date, 'yyyyMMdd');\n this.$store.commit('order/setRequestedDeliveryDate', formatted);\n }\n\n shipToParty(): boolean {\n return !!this.$store.state.order.cart.ShipToParty;\n }\n\n getCountry(): string | undefined {\n if (!this.cart.ShipToParty) {\n return undefined;\n }\n const shipTo = this.$store.state.order.shipToPartners.find(\n (p: SapCustomerPartner) => p.CustomerNr === this.cart.ShipToParty,\n );\n\n if (!shipTo.CountryKey) {\n return undefined;\n }\n return shipTo.CountryKey;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeliveryDateField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeliveryDateField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeliveryDateField.vue?vue&type=template&id=28ca3b9c&\"\nimport script from \"./DeliveryDateField.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeliveryDateField.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Prop } from 'vue-property-decorator';\nimport OrderReferenceField from '@/components/orders/new-order/OrderReferenceField.vue';\nimport ShipToField from '@/components/orders/new-order/ShipToField.vue';\nimport DeliveryDateField from '@/components/orders/new-order/DeliveryDateField.vue';\nimport NewOrderFooter from '@/components/orders/new-order/NewOrderFooter.vue';\n\n@Component({\n components: {\n DeliveryDateField,\n OrderReferenceField,\n ShipToField,\n NewOrderFooter,\n },\n})\nexport default class OrderReferenceAndShipping extends Vue {\n @Prop(Boolean)\n isInvalid!: boolean;\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderReferenceAndShipping.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderReferenceAndShipping.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrderReferenceAndShipping.vue?vue&type=template&id=4a426bfc&\"\nimport script from \"./OrderReferenceAndShipping.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrderReferenceAndShipping.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"summary layout__content layout__content--large\"},[_c('header',{staticClass:\"layout__header layout__header--title-only\"},[_c('div',{staticClass:\"summary__title\"},[_c('h1',{staticClass:\"title title--direct\"},[_vm._v(_vm._s(_vm.$t('orders.summary.title')))])])]),_c('OrderCard',{attrs:{\"order\":_vm.cart}}),_c('div',{staticClass:\"shipping__content\"},[_c('BField',{staticClass:\"ship-delivery-date ship-delivery-date--summary\",scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"ship-delivery-date__title\"},[_vm._v(\" \"+_vm._s(_vm.$t('orders.summary.delivery-date'))+\" \")])]},proxy:true}])},[_c('div',{staticClass:\"ship-delivery-date__content\"},[_c('ShipToAddress',{staticClass:\"ship-to__address--summary\",attrs:{\"ship-to\":_vm.shipTo}}),(_vm.deliveryDate)?_c('div',{staticClass:\"ship-delivery-date__date\"},[_vm._v(\" \"+_vm._s(_vm.deliveryDate)+\" \")]):_vm._e()],1)])],1),_c('NewOrderFooter',{attrs:{\"step\":\"order-summary-and-confirmation\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from 'vue-property-decorator';\nimport { format } from 'date-fns';\nimport { SalesOrder } from '@/api/model';\nimport { SapCustomerPartner } from '@/api/model/sap-customer-partner';\nimport OrderCard from '@/components/orders/OrderCard.vue';\nimport ShipToAddress from '@/components/orders/new-order/ShipToAddress.vue';\nimport Helpers from '@/logic/orders/helpers';\nimport NewOrderFooter from '@/components/orders/new-order/NewOrderFooter.vue';\nimport { DateFnsLocales } from '@/DateFnsLocales';\n\n@Component({\n components: { ShipToAddress, OrderCard, NewOrderFooter },\n})\nexport default class OrderSummaryAndConfirmation extends Vue {\n get cart(): SalesOrder {\n return this.$store.state.order.cart;\n }\n\n get shipTo(): SapCustomerPartner {\n return this.$store.state.order.shipToPartners.find(\n (p: SapCustomerPartner) => p.CustomerNr === this.cart.ShipToParty,\n );\n }\n\n get deliveryDate(): string | null {\n if (this.cart.ReqDlvDate === undefined || this.cart.ReqDlvDate === null) {\n return null;\n }\n const date = Helpers.getDateFromSapDate(this.cart.ReqDlvDate);\n if (date instanceof Date && !Number.isNaN(date.getDate())) {\n return format(date, 'PPP', { locale: DateFnsLocales[this.$i18n.locale] });\n }\n return null;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderSummaryAndConfirmation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderSummaryAndConfirmation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrderSummaryAndConfirmation.vue?vue&type=template&id=7a445b58&scoped=true&\"\nimport script from \"./OrderSummaryAndConfirmation.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrderSummaryAndConfirmation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OrderSummaryAndConfirmation.vue?vue&type=style&index=0&id=7a445b58&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a445b58\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"steps-bar\"},[_c('ul',{staticClass:\"steps-bar__steps\"},_vm._l((_vm.steps),function(step,index){return _c('li',{key:index,staticClass:\"steps-bar__step\",class:{ 'steps-bar__step--active': _vm.active(step) }},[_c('span',{staticClass:\"steps-bar__step__index\"},[_vm._v(_vm._s(index + 1)+\":\")]),_c('span',{staticClass:\"steps-bar__step__label\"},[_vm._v(_vm._s(_vm.$t(`${_vm.labelPrefix}.new.steps.${step}`)))])])}),0),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.active(_vm.firstStep()))?_c('router-link',{staticClass:\"steps-bar__overview-button\",attrs:{\"to\":_vm.overviewLink}},[_c('span',{staticClass:\"is-hidden-mobile\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(`${_vm.labelPrefix}.new.repeat-button.large1`))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(`${_vm.labelPrefix}.new.repeat-button.large2`))+\" \")])]),_c('span',{staticClass:\"is-hidden-tablet\"},[_vm._v(_vm._s(_vm.$t(`${_vm.labelPrefix}.new.repeat-button.small`)))]),_c('BIcon',{attrs:{\"icon\":\"arrow_back\"}})],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from 'vue-property-decorator';\nimport { Route } from 'vue-router';\n\n@Component\nexport default class StepsBar extends Vue {\n @Prop(String)\n labelPrefix!: string;\n\n @Prop(Array)\n steps!: string[];\n\n @Prop(Object)\n overviewLink!: Route;\n\n @Prop(String)\n activeStep!: string;\n\n firstStep(): string {\n return this.steps && this.steps.length > 0 ? this.steps[0] : '';\n }\n\n active(step: string): boolean {\n return this.activeStep === step;\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StepsBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StepsBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StepsBar.vue?vue&type=template&id=285ac828&\"\nimport script from \"./StepsBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./StepsBar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Watch } from 'vue-property-decorator';\nimport LayoutDefault from '@/layouts/LayoutDefault.vue';\nimport SelectProducts from '@/components/orders/new-order/SelectProducts.vue';\nimport OrderReferenceAndShipping from '@/components/orders/new-order/OrderReferenceAndShipping.vue';\nimport OrderSummaryAndConfirmation from '@/components/orders/new-order/OrderSummaryAndConfirmation.vue';\nimport StepsBar from '@/components/StepsBar.vue';\nimport { ValidationObserver } from 'vee-validate';\n\n@Component({\n components: {\n LayoutDefault,\n SelectProducts,\n OrderReferenceAndShipping,\n OrderSummaryAndConfirmation,\n StepsBar,\n ValidationObserver,\n },\n})\nexport default class NewOrder extends Vue {\n prefetched = false;\n\n steps: string[] = [\n 'select-products',\n 'order-reference-and-shipping',\n 'order-summary-and-confirmation',\n ];\n\n get step(): string {\n return this.$store.state.order.orderStep;\n }\n\n @Watch('$route', { immediate: true })\n onUrlChange() {\n const { step } = this.$route.params;\n this.$store.commit('order/setOrderStep', step);\n }\n\n beforeCreate() {\n // In Vue this function is called twice in the same\n // lifecycle, so check if the fetches are dispatched\n // already\n if (this.prefetched) {\n return;\n }\n this.prefetched = true;\n\n // Prefetch data needed by the order steps\n this.$store.dispatch('order/fetchProducts');\n this.$store.dispatch('order/fetchOrders');\n this.$store.dispatch('order/fetchShipToPartners');\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewOrder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewOrder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewOrder.vue?vue&type=template&id=1d7d6cd6&\"\nimport script from \"./NewOrder.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewOrder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('LayoutDefault',[_c('div',{staticClass:\"new-claim\"},[_c('StepsBar',{attrs:{\"labelPrefix\":\"claims\",\"steps\":_vm.steps,\"overview-link\":{ name: 'claims' },\"active-step\":_vm.step}}),_c('ValidationObserver',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function({ invalid }){return [(_vm.step === 'claim-details' && _vm.agreement)?_c('div',{staticClass:\"new-claim__claim-details\"},[_c('NewClaimDetailForm'),(_vm.agreement)?_c('NewClaimProductSelect',{staticClass:\"new-claim__product-select\",attrs:{\"agreement\":_vm.agreement}}):_vm._e(),_c('NewClaimProofUpload')],1):_vm._e(),(_vm.step === 'claim-summary')?_c('div',{staticClass:\"new-claim__claim-summary\"},[_c('NewClaimOverview')],1):_vm._e(),(_vm.agreement)?_c('NewClaimFooter',{attrs:{\"step\":_vm.step,\"next-active\":!invalid,\"agreement\":_vm.agreement}}):_vm._e()]}}])})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"claim-details-form\"},[_c('BaseHeader',{attrs:{\"check-mfa\":true},scopedSlots:_vm._u([{key:\"intro\",fn:function(){return [_vm._v(_vm._s(_vm.$t('claims.new.steps.details-form.intro')))]},proxy:true}])},[_vm._v(\" 1.1 \"+_vm._s(_vm.$t('claims.new.steps.details-form.header'))+\" \")]),_c('div',{staticClass:\"claim-details-form__grid layout__content layout__content--large\"},[_c('BaseFieldText',{staticClass:\"claim-details-form__field claim-details-form__field--wholesale-party\",attrs:{\"name\":\"wholesaleParty\",\"value\":_vm.$store.state.claim.claimData.wholesaleParty,\"label\":_vm.$t('claims.new.steps.details-form.wholesale-party.label'),\"placeholder\":_vm.$t('claims.new.steps.details-form.wholesale-party.placeholder'),\"rules\":\"required\"},on:{\"input\":function($event){return _vm.$store.commit('claim/setNewClaimWholesaleParty', $event)}}}),(_vm.showMonthSelector)?_c('BaseFieldDateRange',{staticClass:\"claim-details-form__field claim-details-form__field--period\",attrs:{\"name\":\"claimPeriod\",\"value\":_vm.$store.state.claim.claimData.period,\"label\":_vm.$t('claims.new.steps.details-form.period.label'),\"placeholder\":_vm.$t('claims.new.steps.details-form.period.placeholder'),\"rules\":_vm.dateRangeFormRules,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"data-test\":\"claim-period\",\"disabled\":_vm.isAnnual},on:{\"input\":function($event){return _vm.$store.commit('claim/setNewClaimPeriod', $event)}}}):_c('NewClaimYearSelector',{staticClass:\"claim-details-form__field claim-details-form__field--period\",attrs:{\"name\":\"claimPeriod\",\"begin-date\":_vm.minDate,\"end-date\":_vm.maxDate,\"label\":_vm.$t('claims.new.steps.details-form.period.label'),\"placeholder\":_vm.$t('claims.new.steps.details-form.period.placeholder'),\"data-test\":\"claim-period\",\"rules\":\"required\",\"value\":_vm.$store.state.claim.claimData.period},on:{\"input\":function($event){return _vm.$store.commit('claim/setNewClaimPeriod', $event)}}}),_c('BaseFieldText',{staticClass:\"claim-details-form__field claim-details-form__field--credit-reference\",attrs:{\"name\":\"creditReference\",\"value\":_vm.$store.state.claim.claimData.creditReference,\"label\":_vm.$t('claims.new.steps.details-form.credit-reference.label'),\"placeholder\":_vm.$t('claims.new.steps.details-form.credit-reference.placeholder')},on:{\"input\":function($event){return _vm.$store.commit('claim/setNewClaimCreditReference', $event)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ValidationProvider',{attrs:{\"name\":_vm.$attrs.name,\"vid\":_vm.$attrs.name,\"rules\":_vm.$attrs.rules,\"slim\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('BField',{staticClass:\"date-range\",class:_vm.classNames(errors),attrs:{\"label\":_vm.$attrs.label,\"message\":errors.length ? errors[0] : '',\"type\":errors.length ? 'is-danger' : '',\"horizontal\":_vm.$attrs.horizontal}},[_c('BDatepicker',_vm._g({attrs:{\"value\":_vm.value,\"placeholder\":_vm.$attrs.placeholder,\"disabled\":_vm.$attrs.disabled,\"expanded\":\"\",\"icon\":\"calendar\",\"icon-prev\":\"chevron_left\",\"icon-next\":\"chevron_right\",\"type\":\"month\",\"trap-focus\":\"\",\"range\":\"\",\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"focused-date\":_vm.minDate,\"close-on-click\":true,\"date-formatter\":_vm.dateFormatter},on:{\"input\":_vm.onInput}},_vm.listeners),[_c('a',{staticClass:\"date-range__clear\",attrs:{\"role\":\"button\",\"label\":_vm.$t('claims.new.steps.details-form.period.clear')},on:{\"click\":_vm.clear}},[_vm._v(\" \"+_vm._s(_vm.$t('claims.new.steps.details-form.period.clear'))+\" \")])]),(!_vm.$attrs.disabled)?_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.value.length)?_c('BIcon',{staticClass:\"date-range__clear-icon\",attrs:{\"icon\":\"close_circle\",\"role\":\"button\"},nativeOn:{\"click\":function($event){return _vm.clear.apply(null, arguments)}}}):_vm._e()],1):_vm._e()],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { ValidationProvider } from 'vee-validate';\nimport { Component, Prop, Vue } from 'vue-property-decorator';\nimport { addMonths, subDays } from 'date-fns';\nimport Helpers from '@/logic/orders/helpers';\n\n@Component({\n components: { ValidationProvider },\n})\nexport default class BaseFieldDateRange extends Vue {\n @Prop({ type: Array, default: [] })\n value!: Date[];\n\n @Prop({ type: Boolean, default: false })\n nullable!: boolean;\n\n @Prop({ type: Date, default: () => {} })\n minDate!: Date;\n\n @Prop({ type: Date, default: () => {} })\n maxDate!: Date;\n\n get rules(): any {\n return this.$attrs.rules;\n }\n\n get listeners() {\n // Only take blur and focus from parent, not input\n delete this.$listeners.input;\n return this.$listeners;\n }\n\n dateFormatter(dates: Date[]): string {\n return dates\n .map((d, i) => {\n // Add a month and subtract a day for end date\n const date = i === 0 ? d : subDays(addMonths(d, 1), 1);\n return Helpers.formatDate(date);\n })\n .join(' - ');\n }\n\n classNames(errors: any[]): any {\n return {\n 'field--has-error': errors.length,\n 'field--required': this.hasRule('required'),\n };\n }\n\n onInput(value: Date[]) {\n const emit = this.nullable && !value ? null : value;\n this.$emit('input', emit);\n }\n\n clear() {\n this.onInput([]);\n }\n\n hasRule(rule: string): boolean {\n return this.rules && this.rules.includes(rule);\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseFieldDateRange.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseFieldDateRange.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseFieldDateRange.vue?vue&type=template&id=226770f2&scoped=true&\"\nimport script from \"./BaseFieldDateRange.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseFieldDateRange.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseFieldDateRange.vue?vue&type=style&index=0&id=226770f2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"226770f2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ValidationProvider',{attrs:{\"name\":_vm.$attrs.name,\"vid\":_vm.$attrs.name,\"rules\":_vm.$attrs.rules,\"slim\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('BField',{class:_vm.classNames(errors),attrs:{\"label\":_vm.$attrs.label,\"message\":errors.length ? errors[0] : '',\"type\":errors.length ? 'is-danger' : '',\"horizontal\":_vm.$attrs.horizontal}},[_c('BInput',_vm._g({style:(_vm.unit ? { '--unit': `'${_vm.unit}'` } : undefined),attrs:{\"value\":_vm.value,\"type\":_vm.inputType,\"placeholder\":_vm.$attrs.placeholder,\"disabled\":_vm.$attrs.disabled,\"step\":\"1\",\"min\":_vm.min,\"expanded\":\"\",\"password-reveal\":_vm.$attrs.passwordReveal,\"icon-pack\":_vm.$attrs.iconPack,\"icon-right\":_vm.unit !== '' ? 'unit' : undefined},on:{\"input\":_vm.onInput}},_vm.listeners))],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { ValidationProvider } from 'vee-validate';\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\n@Component({\n components: { ValidationProvider },\n})\nexport default class BaseFieldText extends Vue {\n @Prop({ type: [String, Number], default: '' })\n value!: string | number;\n\n @Prop({ type: String, default: '' })\n unit!: string;\n\n @Prop({ type: Boolean, default: false })\n nullable!: boolean;\n\n get rules(): any {\n return this.$attrs.rules;\n }\n\n get inputType(): string {\n if (this.hasRule('quantity')) {\n return 'number';\n }\n const validTypes = ['text', 'email', 'password'];\n if (this.$attrs.rules) {\n const type = validTypes.find((rule) => this.hasRule(rule));\n if (type) {\n return type;\n }\n }\n return 'text';\n }\n\n get min(): number | undefined {\n return this.hasRule('quantity') ? 0 : parseInt(this.$attrs.min, 10);\n }\n\n get listeners() {\n // Only take blur and focus from parent, not input\n delete this.$listeners.input;\n return this.$listeners;\n }\n\n classNames(errors: any[]): any {\n return {\n 'field--has-error': errors.length,\n 'field--required': this.hasRule('required'),\n 'field--has-unit': !!this.unit,\n };\n }\n\n onInput(value: string | number) {\n const emit = this.nullable && !value ? null : value;\n this.$emit('input', emit);\n }\n\n hasRule(rule: string): boolean {\n return this.rules && this.rules.includes(rule);\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseFieldText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseFieldText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseFieldText.vue?vue&type=template&id=7ac2294a&\"\nimport script from \"./BaseFieldText.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseFieldText.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ValidationProvider',{attrs:{\"name\":_vm.$attrs.name,\"vid\":_vm.$attrs.name,\"rules\":_vm.$attrs.rules,\"slim\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('div',{staticClass:\"field-body\"},[_c('div',{staticClass:\"field\"},[_c('BField',{staticClass:\"date-range\",class:_vm.classNames(errors),attrs:{\"label\":_vm.$attrs.label,\"message\":errors.length ? errors[0] : '',\"type\":errors.length ? 'is-danger' : ''}},[_c('BSelect',{attrs:{\"placeholder\":_vm.$attrs.placeholder,\"value\":_vm.getValue},on:{\"input\":_vm.onInput}},_vm._l((_vm.yearArray),function(option){return _c('option',{key:option.id,domProps:{\"value\":option.id}},[_vm._v(\" \"+_vm._s(option.value)+\" \")])}),0)],1)],1)])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from 'vue-property-decorator';\nimport { ValidationProvider } from 'vee-validate';\nimport { format } from 'date-fns';\n\n@Component({\n components: { ValidationProvider },\n})\nexport default class NewClaimYearSelector extends Vue {\n @Prop({ type: Array, default: [] })\n value!: Date[];\n\n @Prop({ type: Date, required: true })\n beginDate!: Date;\n\n @Prop({ type: Date, required: true })\n endDate!: Date;\n\n get getValue() {\n if (this.value && this.value.length) {\n return this.yearArray.find((year) => year.value[0] === this.value[0]).id;\n }\n return undefined;\n }\n\n get rules(): any {\n return this.$attrs.rules;\n }\n\n get yearArray(): any[] {\n const today = new Date(Date.now());\n\n // if the agreement is active, the end date is set as today so you can't claim in the future.\n // when the registration period is annual this means you cannot register for this year.\n const activeAgreement =\n format(new Date(this.endDate), 'yyyy-MM-dd') ===\n format(today, 'yyyy-MM-dd');\n\n const beginYear = new Date(this.beginDate).getFullYear();\n const endYear = new Date(this.endDate).getFullYear();\n\n const years = Array.from(\n { length: endYear - (activeAgreement ? 1 : 0) - beginYear + 1 },\n (_, index) => index + beginYear,\n );\n\n return years.map((year, index) => {\n const startDate =\n year === beginYear\n ? format(this.beginDate, 'yyyy-MM-dd')\n : `${year}-01-01`;\n const endDate =\n year === endYear ? format(this.endDate, 'yyyy-MM-dd') : `${year}-12-31`;\n\n return {\n id: index + 1,\n value: year,\n dates: [new Date(startDate), new Date(endDate)],\n };\n });\n }\n\n onInput(value: number) {\n const dates = this.yearArray.find((year) => year.id === value)?.dates;\n this.$emit('input', dates);\n }\n\n classNames(errors: any[]): any {\n return {\n 'field--has-error': errors.length,\n 'field--required': this.hasRule('required'),\n };\n }\n\n hasRule(rule: string): boolean {\n return this.rules && this.rules.includes(rule);\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimYearSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimYearSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimYearSelector.vue?vue&type=template&id=36dbb4ad&scoped=true&\"\nimport script from \"./NewClaimYearSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimYearSelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimYearSelector.vue?vue&type=style&index=0&id=36dbb4ad&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36dbb4ad\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from 'vue-property-decorator';\nimport BaseHeader from '@/components/BaseHeader.vue';\nimport { ValidationObserver } from 'vee-validate';\nimport BaseFieldDateRange from '@/components/form/BaseFieldDateRange.vue';\nimport BaseFieldText from '@/components/form/BaseFieldText.vue';\nimport NewClaimYearSelector from '@/components/claims/new-claim/NewClaimYearSelector.vue';\nimport parse from 'date-fns/parse';\nimport { differenceInYears } from 'date-fns';\n\n@Component({\n components: {\n NewClaimYearSelector,\n BaseHeader,\n ValidationObserver,\n BaseFieldDateRange,\n BaseFieldText,\n },\n})\nexport default class NewClaimDetailForm extends Vue {\n get minDate() {\n const dateString =\n this.$store.getters['claim/agreement'].date_time_valid_from;\n const from = dateString\n ? parse(dateString, 'yyyy-MM-dd', new Date(Date.now()))\n : null;\n return from;\n }\n\n get maxDate() {\n const today = new Date(Date.now());\n const dateString =\n this.$store.getters['claim/agreement'].date_time_valid_to;\n const to = parse(dateString, 'yyyy-MM-dd', today);\n\n // if the agreement period is quarterly the max date should be the last day of the last quarter.\n const maxDate = this.isQuarterly\n ? new Date(today.getFullYear(), Math.floor(today.getMonth() / 3) * 3, -1)\n : today;\n\n return maxDate < to ? maxDate : to;\n }\n\n get isAnnual(): boolean {\n const { claimPeriod } = this.getAgreementDuration();\n return claimPeriod === 'ANNUAL';\n }\n\n get isQuarterly(): boolean {\n const { claimPeriod } = this.getAgreementDuration();\n return claimPeriod === 'QUARTERLY';\n }\n\n get isMonthly(): boolean {\n const { claimPeriod } = this.getAgreementDuration();\n return claimPeriod === 'MONTHLY' || claimPeriod === null;\n }\n\n get isAgreementShorterOrEqualToOneYear(): boolean {\n const { dateTimeValidFrom, dateTimeValidTo } = this.getAgreementDuration();\n const from = parse(dateTimeValidFrom, 'yyyy-MM-dd', new Date(Date.now()));\n const to = parse(dateTimeValidTo, 'yyyy-MM-dd', new Date(Date.now()));\n return differenceInYears(to, from) <= 1;\n }\n\n get showMonthSelector(): boolean {\n return (\n this.isMonthly ||\n this.isQuarterly ||\n (this.isAnnual && this.isAgreementShorterOrEqualToOneYear)\n );\n }\n\n getAgreementDuration() {\n const {\n date_time_valid_from: dateTimeValidFrom,\n date_time_valid_to: dateTimeValidTo,\n claim_period: claimPeriod,\n } = this.$store.getters['claim/agreement'];\n\n return { dateTimeValidFrom, dateTimeValidTo, claimPeriod };\n }\n\n get dateRangeFormRules() {\n if (!this.isQuarterly) {\n return 'required';\n }\n\n const { dateTimeValidFrom, dateTimeValidTo } = this.getAgreementDuration();\n\n return `required|quarterly:${dateTimeValidFrom},${dateTimeValidTo}`;\n }\n\n mounted() {\n if (this.showMonthSelector && this.isAnnual) {\n const { dateTimeValidFrom, dateTimeValidTo } =\n this.getAgreementDuration();\n\n const from = parse(dateTimeValidFrom, 'yyyy-MM-dd', new Date(Date.now()));\n const to = parse(dateTimeValidTo, 'yyyy-MM-dd', new Date(Date.now()));\n\n const firstOfToMonth =\n to.getDate() !== 1 ? new Date(to.getFullYear(), to.getMonth(), 1) : to;\n\n this.$store.commit('claim/setNewClaimPeriod', [from, firstOfToMonth]);\n }\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimDetailForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimDetailForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimDetailForm.vue?vue&type=template&id=3fab153c&scoped=true&\"\nimport script from \"./NewClaimDetailForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimDetailForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimDetailForm.vue?vue&type=style&index=0&id=3fab153c&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3fab153c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('BaseHeader',{attrs:{\"check-mfa\":false}},[_vm._v(\" 1.2 \"+_vm._s(_vm.$t('claims.new.steps.proof.header'))+\" \")]),_c('div',{staticClass:\"layout__content layout__content--large\"},[_c('BaseFieldUpload',{attrs:{\"name\":\"attachments\",\"label\":_vm.$t('claims.new.steps.proof.attachment.label'),\"placeholder\":_vm.$t('claims.new.steps.proof.attachment.placeholder'),\"horizontal\":\"\",\"value\":_vm.$store.state.claim.claimData.uploadedProof,\"rules\":_vm.uploadRules},on:{\"input\":function($event){return _vm.$store.commit('claim/setNewClaimUploadedProof', $event)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ValidationProvider',{attrs:{\"name\":_vm.$attrs.name,\"rules\":_vm.$attrs.rules,\"slim\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors, validate }){return [_c('BField',{staticClass:\"field-upload\",class:_vm.classNames(errors),attrs:{\"label\":_vm.$attrs.label,\"message\":errors.length ? errors[0] : '',\"type\":errors.length ? 'is-danger' : '',\"horizontal\":_vm.$attrs.horizontal}},[_c('BUpload',{attrs:{\"value\":_vm.value,\"disabled\":_vm.$attrs.disabled,\"expanded\":\"\",\"icon-pack\":_vm.$attrs.iconPack,\"multiple\":\"\",\"drag-drop\":\"\"},on:{\"input\":_vm.onInput}},[_c('div',{staticClass:\"content has-text-centered\"},[_c('p',{staticClass:\"field-upload__placeholder\"},[_vm._v(_vm._s(_vm.$attrs.placeholder))])])])],1),(_vm.value.length)?_c('div',{staticClass:\"field-upload__files-list\",attrs:{\"horizontal\":_vm.$attrs.horizontal}},_vm._l((_vm.value),function(file,index){return _c('div',{key:index,staticClass:\"field-upload__file\",on:{\"close\":function($event){return _vm.deleteFile(index, validate)}}},[_c('BIcon',{staticClass:\"field-upload__icon\",attrs:{\"icon\":\"attachment\"}}),_c('span',{staticClass:\"field-upload__file-name\"},[_vm._v(_vm._s(file.name))]),_c('button',{staticClass:\"field-upload__remove-button\",on:{\"click\":function($event){return _vm.deleteFile(index, validate)}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.interface.remove'))+\" \")])],1)}),0):_vm._e()]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { ValidationProvider } from 'vee-validate';\n\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\n@Component({\n components: { ValidationProvider },\n})\nexport default class BaseFieldUpload extends Vue {\n @Prop({ type: Array, default: () => [] })\n value!: any[];\n\n get rules(): any {\n return this.$attrs.rules;\n }\n\n classNames(errors: any[]): any {\n return {\n 'field--has-error': errors.length,\n 'field--required': this.$attrs.rules && this.hasRule('required'),\n };\n }\n\n onInput(value: string | number) {\n this.$emit('input', value);\n }\n\n hasRule(rule: string): boolean {\n if (!this.rules) {\n return false;\n }\n if (typeof this.rules === 'object') {\n return !!this.rules[rule];\n }\n return this.rules.includes(rule);\n }\n\n deleteFile(index: number, validate: () => any) {\n this.value.splice(index, 1);\n validate();\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseFieldUpload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseFieldUpload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseFieldUpload.vue?vue&type=template&id=40896301&scoped=true&\"\nimport script from \"./BaseFieldUpload.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseFieldUpload.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseFieldUpload.vue?vue&type=style&index=0&id=40896301&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40896301\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from 'vue-property-decorator';\nimport BaseHeader from '@/components/BaseHeader.vue';\nimport { ValidationObserver } from 'vee-validate';\nimport BaseFieldUpload from '@/components/form/BaseFieldUpload.vue';\n\n@Component({\n components: {\n BaseHeader,\n ValidationObserver,\n BaseFieldUpload,\n },\n})\nexport default class NewClaimProofUpload extends Vue {\n isLoading = false;\n\n get uploadRules(): any {\n return {\n required: true,\n ext: ['pdf', 'jpg', 'jpeg', 'png', 'msg', 'docx', 'xlsx'],\n totalSize: 25, // Upload limit of 25Mb\n };\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimProofUpload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimProofUpload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimProofUpload.vue?vue&type=template&id=7db5b84a&\"\nimport script from \"./NewClaimProofUpload.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimProofUpload.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"product-select\"},[_c('ProductSearchBar',{staticClass:\"select-products__search\",attrs:{\"type\":\"claim\"}}),_c('div',{staticClass:\"layout__content layout__content--large\"},[_c('BTable',{staticClass:\"product-item-list product-item-list--no-body\",attrs:{\"data\":[]}},[_c('BTableColumn',{attrs:{\"label\":_vm.$t('orders.order-item-list.header.product')}}),_c('BTableColumn',{attrs:{\"label\":_vm.$t('orders.order-item-list.header.code'),\"width\":110}}),_c('BTableColumn',{attrs:{\"label\":_vm.$t('claims.new.items.bags'),\"width\":90}}),_c('BTableColumn',{attrs:{\"label\":_vm.$t('claims.new.items.boxes'),\"width\":90}}),_c('BTableColumn',{attrs:{\"label\":_vm.$t('claims.new.items.volume'),\"width\":90}}),_c('BTableColumn',{attrs:{\"label\":_vm.$t('claims.new.items.billback-rate'),\"width\":120}}),_c('BTableColumn',{attrs:{\"label\":_vm.$t('claims.new.items.billback-amount'),\"width\":155}})],1)],1),_vm._l((_vm.groupLabels),function(groupLabel){return _c('SelectProductGroup',{key:groupLabel,attrs:{\"group-label\":groupLabel,\"products\":_vm.groups[groupLabel],\"agreement\":_vm.agreement,\"type\":\"claim\",\"cart-type\":\"claim\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from 'vue-property-decorator';\nimport { SalesQuote, SapProduct } from '@/api';\nimport SelectProductGroup from '@/components/orders/SelectProductGroup.vue';\nimport { ProductGroup } from '@/store/OrderStore';\nimport ProductSearchBar from '@/components/orders/ProductSearchBar.vue';\n\n@Component({\n components: { ProductSearchBar, SelectProductGroup },\n})\nexport default class NewClaimProductSelect extends Vue {\n get agreement(): SalesQuote {\n return this.$store.getters['claim/agreement'];\n }\n\n get products(): SapProduct[] {\n return this.$store.getters['claim/productSearchResult'];\n }\n\n get groups(): ProductGroup[] {\n return this.$store.getters['claim/agreementProductGroups'](true);\n }\n\n get groupLabels(): string[] {\n const all = Object.keys(this.groups);\n const filter = this.$store.state.claim.products.filterGroups;\n if (filter.size === 0) {\n return all;\n }\n return all.filter((group) => filter.has(group));\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimProductSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimProductSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimProductSelect.vue?vue&type=template&id=8b52b93a&\"\nimport script from \"./NewClaimProductSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimProductSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('section',{staticClass:\"claim-overview__products\"},[_c('BaseHeader',{attrs:{\"check-mfa\":true}},[_vm._v(\" 2.1 \"+_vm._s(_vm.$t('claims.new.steps.summary.header'))+\" \")]),_c('NewClaimOverviewProducts')],1),_c('NewClaimOverviewDetails')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"claim-details\"},[_c('BaseHeader',{attrs:{\"check-mfa\":true}},[_vm._v(\" 2.2 \"+_vm._s(_vm.$t('claims.new.steps.details.header'))+\" \")]),_c('div',{staticClass:\"layout__content layout__content--large\"},[_c('ClaimDetailsCard',{staticClass:\"claim-details__card\",attrs:{\"claim\":{ wholesale_party: _vm.claim.wholesaleParty },\"agreement\":_vm.agreement}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from 'vue-property-decorator';\nimport BaseHeader from '@/components/BaseHeader.vue';\nimport Helpers from '@/logic/orders/helpers';\nimport { SalesQuote } from '@/api';\nimport ClaimDetailsCard from '@/components/claims/ClaimDetailsCard.vue';\n\n@Component({\n components: {\n BaseHeader,\n ClaimDetailsCard,\n },\n})\nexport default class NewClaimOverviewDetails extends Vue {\n get agreement(): SalesQuote | undefined {\n return this.$store.getters['claim/agreement'];\n }\n\n Helpers = Helpers;\n\n get claim(): any {\n return this.$store.state.claim.claimData;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimOverviewDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimOverviewDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimOverviewDetails.vue?vue&type=template&id=879607e0&scoped=true&\"\nimport script from \"./NewClaimOverviewDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimOverviewDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimOverviewDetails.vue?vue&type=style&index=0&id=879607e0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"879607e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"layout__content layout__content--large\"},[_c('div',{staticClass:\"claim-products\"},[_c('div',{staticClass:\"claim-products__header\"},[_vm._v(\" \"+_vm._s(_vm.$t('claims.new.steps.summary.your-billback-claim'))+\" \")]),_c('OrderItemList',{attrs:{\"items\":_vm.$store.state.claim.claimData.items,\"sort-by-cart\":\"\",\"type\":\"claim\",\"agreement\":_vm.agreement}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"totals\"},[_c('div',{staticClass:\"totals__values\"},[_c('span',{staticClass:\"totals__item\"},[_c('span',{staticClass:\"totals__label\"},[_vm._v(\" \"+_vm._s(_vm.$t('claims.new.footer.total-volume'))+\" \")]),_c('span',{staticClass:\"totals__value\"},[_vm._v(\" \"+_vm._s(_vm.totals.volume)+\" \"+_vm._s(_vm.$t('claims.kg'))+\" \")])]),_c('span',{staticClass:\"totals__item\"},[_c('span',{staticClass:\"totals__label\"},[_vm._v(\" \"+_vm._s(_vm.$t('claims.new.footer.total-claim-amount'))+\" \")]),_c('span',{staticClass:\"totals__value\"},[_c('BaseCurrencyAmount',{attrs:{\"currency\":_vm.agreement.currency,\"amount\":_vm.totals.billbackAmount}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from 'vue-property-decorator';\nimport BaseCurrencyAmount from '@/components/BaseCurrencyAmount.vue';\nimport { SalesQuote } from '@/api';\n\ninterface Totals {\n [key: string]: number;\n}\n\n@Component({\n components: { BaseCurrencyAmount },\n})\nexport default class NewClaimFooterTotals extends Vue {\n get agreement(): SalesQuote | undefined {\n return this.$store.getters['claim/agreement'];\n }\n\n get totals(): Totals {\n return this.$store.getters['claim/calculateClaimTotals'];\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimFooterTotals.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimFooterTotals.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimFooterTotals.vue?vue&type=template&id=3cfa4648&scoped=true&\"\nimport script from \"./NewClaimFooterTotals.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimFooterTotals.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimFooterTotals.vue?vue&type=style&index=0&id=3cfa4648&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cfa4648\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from 'vue-property-decorator';\nimport BaseHeader from '@/components/BaseHeader.vue';\nimport { SalesQuote } from '@/api';\nimport OrderItemList from '@/components/orders/OrderItemList.vue';\nimport NewClaimFooterTotals from '@/components/claims/new-claim/NewClaimFooterTotals.vue';\n\n@Component({\n components: {\n NewClaimFooterTotals,\n OrderItemList,\n BaseHeader,\n },\n})\nexport default class NewClaimOverviewProducts extends Vue {\n get agreement(): SalesQuote | undefined {\n return this.$store.getters['claim/agreement'];\n }\n\n get claim(): any {\n return this.$store.state.claim.claimData;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimOverviewProducts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimOverviewProducts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimOverviewProducts.vue?vue&type=template&id=1a3ef5f9&scoped=true&\"\nimport script from \"./NewClaimOverviewProducts.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimOverviewProducts.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimOverviewProducts.vue?vue&type=style&index=0&id=1a3ef5f9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a3ef5f9\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from 'vue-property-decorator';\nimport BaseHeader from '@/components/BaseHeader.vue';\nimport { SalesQuote } from '@/api';\nimport NewClaimOverviewDetails from '@/components/claims/new-claim/NewClaimOverviewDetails.vue';\nimport NewClaimOverviewProducts from '@/components/claims/new-claim/NewClaimOverviewProducts.vue';\n\n@Component({\n components: {\n BaseHeader,\n NewClaimOverviewDetails,\n NewClaimOverviewProducts,\n },\n})\nexport default class NewClaimOverview extends Vue {\n get agreement(): SalesQuote | undefined {\n return this.$store.getters['claim/agreement'];\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimOverview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimOverview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimOverview.vue?vue&type=template&id=116fae08&scoped=true&\"\nimport script from \"./NewClaimOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimOverview.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimOverview.vue?vue&type=style&index=0&id=116fae08&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"116fae08\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('footer',{staticClass:\"new-claim-footer new-claim-footer--sticky\"},[_c('div',{staticClass:\"new-claim-footer__content\"},[_c('div',{staticClass:\"new-order-footer__totals\"},[(_vm.showTotals && _vm.agreement)?_c('NewClaimFooterTotals'):_vm._e()],1),_c('nav',{staticClass:\"new-claim-footer__nav\"},[_c('BButton',{attrs:{\"type\":\"is-primary large new-claim-footer__button\",\"rounded\":\"\",\"outlined\":\"\",\"data-test\":\"previous-step\"},nativeOn:{\"click\":function($event){return _vm.goPrevious()}}},[_vm._v(\" \"+_vm._s(_vm.$t('claims.new.footer.back'))+\" \")]),_c('BButton',{attrs:{\"type\":\"is-primary large new-claim-footer__button\",\"rounded\":\"\",\"data-test\":\"next-step\",\"disabled\":!_vm.canGoNext},nativeOn:{\"click\":function($event){return _vm.goNext()}}},[_vm._v(\" \"+_vm._s(_vm.$t(`claims.new.footer.${_vm.nextLabel}`))+\" \")])],1)]),_c('BLoading',{attrs:{\"is-full-page\":true},model:{value:(_vm.loading),callback:function ($$v) {_vm.loading=$$v},expression:\"loading\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\nimport MessageToastMixin from '@/mixins/MessageToastMixin';\nimport NewClaimFooterTotals from '@/components/claims/new-claim/NewClaimFooterTotals.vue';\nimport { SalesQuote } from '@/api';\n\n@Component({\n components: { NewClaimFooterTotals },\n})\nexport default class NewClaimFooter extends Mixins(MessageToastMixin) {\n @Prop(String)\n step!: string;\n\n @Prop(Boolean)\n nextActive!: boolean;\n\n loading = false;\n\n get agreement(): SalesQuote | undefined {\n return this.$store.getters['claim/agreement'];\n }\n\n get showTotals(): boolean {\n return this.step === 'claim-details';\n }\n\n get canGoNext(): boolean {\n return this.nextActive;\n }\n\n get nextLabel(): string {\n if (this.step === 'claim-summary') {\n return 'submit';\n }\n return 'next';\n }\n\n goNext() {\n if (!this.canGoNext) {\n return;\n }\n switch (this.step) {\n case 'claim-details':\n this.$router.push({\n name: 'new-claims-steps',\n params: { step: 'claim-summary' },\n });\n break;\n case 'claim-summary':\n this.submitClaim();\n break;\n default:\n break;\n }\n }\n\n goPrevious() {\n switch (this.step) {\n case 'claim-details':\n this.$router.push({ name: 'agreements' });\n break;\n case 'claim-summary':\n this.$router.push({\n name: 'new-claims-steps',\n params: { step: 'claim-details' },\n });\n break;\n default:\n break;\n }\n }\n\n async submitClaim() {\n try {\n this.loading = true;\n await this.$store.dispatch('claim/postClaim');\n this.$router.push({ name: 'agreements' });\n this.$buefy.dialog.alert({\n title: this.$t('claims.new.confirm-dialog.title') as string,\n message: this.$t('claims.new.confirm-dialog.message') as string,\n confirmText: this.$t('claims.new.confirm-dialog.button') as string,\n });\n } catch (e) {\n this.showError(this.$t('general.messages.error'));\n } finally {\n this.loading = false;\n }\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaimFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaimFooter.vue?vue&type=template&id=7b26774c&scoped=true&\"\nimport script from \"./NewClaimFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaimFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaimFooter.vue?vue&type=style&index=0&id=7b26774c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b26774c\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Watch } from 'vue-property-decorator';\nimport LayoutDefault from '@/layouts/LayoutDefault.vue';\nimport StepsBar from '@/components/StepsBar.vue';\nimport { ValidationObserver } from 'vee-validate';\nimport NewClaimDetailForm from '@/components/claims/new-claim/NewClaimDetailForm.vue';\nimport NewClaimProofUpload from '@/components/claims/new-claim/NewClaimProofUpload.vue';\nimport NewClaimProductSelect from '@/components/claims/new-claim/NewClaimProductSelect.vue';\nimport NewClaimOverview from '@/components/claims/new-claim/NewClaimOverview.vue';\nimport NewClaimFooter from '@/components/claims/new-claim/NewClaimFooter.vue';\nimport { SalesQuote } from '@/api';\n\n@Component({\n components: {\n StepsBar,\n LayoutDefault,\n ValidationObserver,\n NewClaimDetailForm,\n NewClaimProofUpload,\n NewClaimProductSelect,\n NewClaimOverview,\n NewClaimFooter,\n },\n})\nexport default class NewClaim extends Vue {\n step = 'claim-details';\n\n steps: string[] = ['claim-details', 'claim-summary'];\n\n get agreement(): SalesQuote | undefined {\n return this.$store.getters['claim/agreement'];\n }\n\n async beforeCreate() {\n this.$store.commit('claim/resetCart');\n await this.$store.dispatch('agreement/fetchAgreements');\n }\n\n @Watch('$route.params', { immediate: true })\n onUrlChange() {\n const { step, agreementId } = this.$route.params;\n this.step = step;\n this.$store.commit('claim/setAgreementId', agreementId);\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaim.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewClaim.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewClaim.vue?vue&type=template&id=30985e64&scoped=true&\"\nimport script from \"./NewClaim.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewClaim.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewClaim.vue?vue&type=style&index=0&id=30985e64&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30985e64\",\n null\n \n)\n\nexport default component.exports","import getConfiguration from '@/store/getConfiguration';\nimport { AgreementsApi, SalesQuote } from '@/api';\n\nasync function getApi() {\n const configuration = await getConfiguration();\n return new AgreementsApi(configuration, '');\n}\n\nconst initialState = () => ({\n agreements: [] as SalesQuote[],\n isLoading: false,\n detailActive: new Set(),\n});\nexport type AgreementState = ReturnType